From 792080e56f85484d796f674b51dc8c64ec705f53 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 14:14:26 +0200 Subject: [PATCH 01/83] Moved compilation of CUDA to seperate cuda target --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 143 ++++++++++-------- 1 file changed, 79 insertions(+), 64 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 43cee0977e..ba45b3f32d 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -389,11 +389,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -467,17 +475,6 @@ $(BUILDDIR)/.build.$(TAG): @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi @touch $(BUILDDIR)/.build.$(TAG) -# Generic target and build rules: objects from CUDA compilation -ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ - -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ -endif - # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) $(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) @@ -495,22 +492,10 @@ endif # Apply special build flags only to check_sa.o and gcheck_sa.o (NVTX in timermap.h, #679) $(BUILDDIR)/check_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) -$(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) # Apply special build flags only to check_sa and CurandRandomNumberKernel (curand headers, #679) $(BUILDDIR)/check_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) -$(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CXXFLAGSCURAND) -ifeq ($(RNDGEN),hasCurand) -$(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) -endif - -# Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) -ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) -ifneq ($(NVCC),) -CUFLAGS += -Xcompiler -Wno-deprecated-builtins -endif -endif # Avoid clang warning "overriding '-ffp-contract=fast' option with '-ffp-contract=on'" (#516) # This patch does remove the warning, but I prefer to keep it disabled for the moment... @@ -544,25 +529,12 @@ MG5AMC_CXXLIB = mg5amc_$(processid_short)_cpp cxx_objects_lib=$(BUILDDIR)/CPPProcess.o $(BUILDDIR)/MatrixElementKernels.o $(BUILDDIR)/BridgeKernels.o $(BUILDDIR)/CrossSectionKernels.o cxx_objects_exe=$(BUILDDIR)/CommonRandomNumberKernel.o $(BUILDDIR)/RamboSamplingKernels.o -ifneq ($(NVCC),) -MG5AMC_CULIB = mg5amc_$(processid_short)_cuda -cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o -cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o -endif - # Target (and build rules): C++ and CUDA shared libraries $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: $(BUILDDIR)/fbridge.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: cxx_objects_lib += $(BUILDDIR)/fbridge.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cxx_objects_lib) $(CXX) -shared -o $@ $(cxx_objects_lib) $(CXXLIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) -ifneq ($(NVCC),) -$(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o -$(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o -$(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) - $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) -endif - #------------------------------------------------------------------------------- # Target (and build rules): Fortran include files @@ -577,18 +549,6 @@ $(cxx_main): LIBFLAGS += $(CXXLIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PAT $(cxx_main): $(BUILDDIR)/check_sa.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(cxx_objects_exe) $(BUILDDIR)/CurandRandomNumberKernel.o $(CXX) -o $@ $(BUILDDIR)/check_sa.o $(OMPFLAGS) -ldl -pthread $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe) $(BUILDDIR)/CurandRandomNumberKernel.o $(CURANDLIBFLAGS) -ifneq ($(NVCC),) -ifneq ($(shell $(CXX) --version | grep ^Intel),) -$(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') -$(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 -$(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc -endif -$(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH -$(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o - $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) -endif - #------------------------------------------------------------------------------- # Generic target and build rules: objects from Fortran compilation @@ -612,19 +572,6 @@ $(fcxx_main): LIBFLAGS += $(CXXLIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PA $(fcxx_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(cxx_objects_exe) $(CXX) -o $@ $(BUILDDIR)/fcheck_sa.o $(OMPFLAGS) $(BUILDDIR)/fsampler.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe) -ifneq ($(NVCC),) -ifneq ($(shell $(CXX) --version | grep ^Intel),) -$(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') -$(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') -endif -ifeq ($(UNAME_S),Darwin) -$(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 -endif -$(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH -$(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) -endif - #------------------------------------------------------------------------------- # Target (and build rules): test objects and test executable @@ -744,6 +691,74 @@ endif #------------------------------------------------------------------------------- +# CUDA Target + +cuda: + + # Generic target and build rules: objects from CUDA compilation + ifneq ($(NVCC),) + $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + + $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + endif + + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) + ifeq ($(RNDGEN),hasCurand) + $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) + endif + + # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) + ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) + ifneq ($(NVCC),) + CUFLAGS += -Xcompiler -Wno-deprecated-builtins + endif + endif + + ifneq ($(NVCC),) + MG5AMC_CULIB = mg5amc_$(processid_short)_cuda + cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o + cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o + endif + + ifneq ($(NVCC),) + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) + $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) + endif + + ifneq ($(NVCC),) + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc + endif + $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o + $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) + endif + + ifneq ($(NVCC),) + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + endif + ifeq ($(UNAME_S),Darwin) + $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 + endif + $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) + endif + +#------------------------------------------------------------------------------- + # Target: clean the builds .PHONY: clean @@ -863,4 +878,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file From c945deb624ac13fc93d09a546029325e4f3429dd Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 14:58:47 +0200 Subject: [PATCH 02/83] Fixed indentation in the makefile --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index ba45b3f32d..d7cdbe259d 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -697,13 +697,13 @@ cuda: # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) - $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ - $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) From 36a5fa70216b13235e0fc5cea56b692a14de2186 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:08:59 +0200 Subject: [PATCH 03/83] Removed all unneccessary NVCC ifneq and redid indentation --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 87 ++++++++----------- 1 file changed, 36 insertions(+), 51 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index d7cdbe259d..087161f84e 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -445,14 +445,6 @@ override RUNTIME = cxx_main=$(BUILDDIR)/check.exe fcxx_main=$(BUILDDIR)/fcheck.exe -ifneq ($(NVCC),) -cu_main=$(BUILDDIR)/gcheck.exe -fcu_main=$(BUILDDIR)/fgcheck.exe -else -cu_main= -fcu_main= -endif - testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) @@ -485,9 +477,6 @@ $(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) ifeq ($(shell $(CXX) --version | grep ^nvc++),) $(BUILDDIR)/CrossSectionKernels.o: CXXFLAGS := $(filter-out -ffast-math,$(CXXFLAGS)) $(BUILDDIR)/CrossSectionKernels.o: CXXFLAGS += -fno-fast-math -ifneq ($(NVCC),) -$(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math -endif endif # Apply special build flags only to check_sa.o and gcheck_sa.o (NVTX in timermap.h, #679) @@ -695,17 +684,21 @@ endif cuda: - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) - $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + + cu_main=$(BUILDDIR)/gcheck.exe + fcu_main=$(BUILDDIR)/fgcheck.exe - $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ - endif + # Generic target and build rules: objects from CUDA compilation + $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + + $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) ifeq ($(RNDGEN),hasCurand) @@ -714,48 +707,40 @@ cuda: # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) - ifneq ($(NVCC),) - CUFLAGS += -Xcompiler -Wno-deprecated-builtins - endif + CUFLAGS += -Xcompiler -Wno-deprecated-builtins endif - ifneq ($(NVCC),) - MG5AMC_CULIB = mg5amc_$(processid_short)_cuda - cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o - cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o - endif - - ifneq ($(NVCC),) - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) - $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) - endif + MG5AMC_CULIB = mg5amc_$(processid_short)_cuda + cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o + cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o + + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) + $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) + + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc + endif + $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o + $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) - ifneq ($(NVCC),) - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc - endif - $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o - $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) - endif - - ifneq ($(NVCC),) ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') endif ifeq ($(UNAME_S),Darwin) - $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 + $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 endif $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) - endif + + endif # ifneq ($(NVCC),) #------------------------------------------------------------------------------- From 0b95fb785a488184395854fb2514fba849abbcc8 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:34:30 +0200 Subject: [PATCH 04/83] Convert all spaces to tabs in cudacpp.mk file --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 356 +++++++++--------- 1 file changed, 178 insertions(+), 178 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 087161f84e..6c8711041a 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -108,53 +108,53 @@ endif # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled endif # If CUDA_HOME is not set, try to set it from the location of nvcc ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") endif # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= endif export NVCC export CUFLAGS @@ -174,15 +174,15 @@ endif # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) - override CXX:=ccache $(CXX) + override CXX:=ccache $(CXX) endif #ifeq ($(USECCACHE)$(shell echo $(AR) | grep ccache),1) # override AR:=ccache $(AR) #endif ifneq ($(NVCC),) - ifeq ($(USECCACHE)$(shell echo $(NVCC) | grep ccache),1) - override NVCC:=ccache $(NVCC) - endif + ifeq ($(USECCACHE)$(shell echo $(NVCC) | grep ccache),1) + override NVCC:=ccache $(NVCC) + endif endif #------------------------------------------------------------------------------- @@ -191,21 +191,21 @@ endif # PowerPC-specific CXX compiler flags (being reviewed) ifeq ($(UNAME_P),ppc64le) - CXXFLAGS+= -mcpu=power9 -mtune=power9 # gains ~2-3% both for none and sse4 - # Throughput references without the extra flags below: none=1.41-1.42E6, sse4=2.15-2.19E6 - ###CXXFLAGS+= -DNO_WARN_X86_INTRINSICS # no change - ###CXXFLAGS+= -fpeel-loops # no change - ###CXXFLAGS+= -funroll-loops # gains ~1% for none, loses ~1% for sse4 - ###CXXFLAGS+= -ftree-vectorize # no change - ###CXXFLAGS+= -flto # would increase to none=4.08-4.12E6, sse4=4.99-5.03E6! + CXXFLAGS+= -mcpu=power9 -mtune=power9 # gains ~2-3% both for none and sse4 + # Throughput references without the extra flags below: none=1.41-1.42E6, sse4=2.15-2.19E6 + ###CXXFLAGS+= -DNO_WARN_X86_INTRINSICS # no change + ###CXXFLAGS+= -fpeel-loops # no change + ###CXXFLAGS+= -funroll-loops # gains ~1% for none, loses ~1% for sse4 + ###CXXFLAGS+= -ftree-vectorize # no change + ###CXXFLAGS+= -flto # would increase to none=4.08-4.12E6, sse4=4.99-5.03E6! else - ###CXXFLAGS+= -flto # also on Intel this would increase throughputs by a factor 2 to 4... - ######CXXFLAGS+= -fno-semantic-interposition # no benefit (neither alone, nor combined with -flto) + ###CXXFLAGS+= -flto # also on Intel this would increase throughputs by a factor 2 to 4... + ######CXXFLAGS+= -fno-semantic-interposition # no benefit (neither alone, nor combined with -flto) endif # PowerPC-specific CUDA compiler flags (to be reviewed!) ifeq ($(UNAME_P),ppc64le) - CUFLAGS+= -Xcompiler -mno-float128 + CUFLAGS+= -Xcompiler -mno-float128 endif #------------------------------------------------------------------------------- @@ -228,52 +228,52 @@ endif # Set the default AVX (vectorization) choice ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif + ifeq ($(UNAME_P),ppc64le) + ###override AVX = none + override AVX = sse4 + else ifeq ($(UNAME_P),arm) + ###override AVX = none + override AVX = sse4 + else ifeq ($(wildcard /proc/cpuinfo),) + override AVX = none + $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) + else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) + override AVX = 512y + ###$(info Using AVX='$(AVX)' as no user input exists) + else + override AVX = avx2 + ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) + $(warning Using AVX='$(AVX)' because host does not support avx512vl) + else + $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) + endif + endif else - ###$(info Using AVX='$(AVX)' according to user input) + ###$(info Using AVX='$(AVX)' according to user input) endif # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) - override FPTYPE = d + override FPTYPE = d endif # Set the default HELINL (inline helicities?) choice ifeq ($(HELINL),) - override HELINL = 0 + override HELINL = 0 endif # Set the default HRDCOD (hardcode cIPD physics parameters?) choice ifeq ($(HRDCOD),) - override HRDCOD = 0 + override HRDCOD = 0 endif # Set the default RNDGEN (random number generator) choice ifeq ($(RNDGEN),) - ifeq ($(NVCC),) - override RNDGEN = hasNoCurand - else ifeq ($(RNDGEN),) - override RNDGEN = hasCurand - endif + ifeq ($(NVCC),) + override RNDGEN = hasNoCurand + else ifeq ($(RNDGEN),) + override RNDGEN = hasCurand + endif endif # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too @@ -297,45 +297,45 @@ CXXFLAGS += $(OMPFLAGS) # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] $(info AVX=$(AVX)) ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? CXXFLAGS+= $(AVXFLAGS) @@ -343,44 +343,44 @@ CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) ifeq ($(FPTYPE),d) - CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE - CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE + CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE + CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE else ifeq ($(FPTYPE),f) - CXXFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT - CUFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT + CXXFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT + CUFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT else ifeq ($(FPTYPE),m) - CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT - CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT + CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT + CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT else - $(error Unknown FPTYPE='$(FPTYPE)': only 'd', 'f' and 'm' are supported) + $(error Unknown FPTYPE='$(FPTYPE)': only 'd', 'f' and 'm' are supported) endif # Set the build flags appropriate to each HELINL choice (example: "make HELINL=1") $(info HELINL=$(HELINL)) ifeq ($(HELINL),1) - CXXFLAGS += -DMGONGPU_INLINE_HELAMPS - CUFLAGS += -DMGONGPU_INLINE_HELAMPS + CXXFLAGS += -DMGONGPU_INLINE_HELAMPS + CUFLAGS += -DMGONGPU_INLINE_HELAMPS else ifneq ($(HELINL),0) - $(error Unknown HELINL='$(HELINL)': only '0' and '1' are supported) + $(error Unknown HELINL='$(HELINL)': only '0' and '1' are supported) endif # Set the build flags appropriate to each HRDCOD choice (example: "make HRDCOD=1") $(info HRDCOD=$(HRDCOD)) ifeq ($(HRDCOD),1) - CXXFLAGS += -DMGONGPU_HARDCODE_PARAM - CUFLAGS += -DMGONGPU_HARDCODE_PARAM + CXXFLAGS += -DMGONGPU_HARDCODE_PARAM + CUFLAGS += -DMGONGPU_HARDCODE_PARAM else ifneq ($(HRDCOD),0) - $(error Unknown HRDCOD='$(HRDCOD)': only '0' and '1' are supported) + $(error Unknown HRDCOD='$(HRDCOD)': only '0' and '1' are supported) endif # Set the build flags appropriate to each RNDGEN choice (example: "make RNDGEN=hasNoCurand") $(info RNDGEN=$(RNDGEN)) ifeq ($(RNDGEN),hasNoCurand) - override CXXFLAGSCURAND = -DMGONGPU_HAS_NO_CURAND + override CXXFLAGSCURAND = -DMGONGPU_HAS_NO_CURAND else ifeq ($(RNDGEN),hasCurand) - override CXXFLAGSCURAND = + override CXXFLAGSCURAND = else - $(error Unknown RNDGEN='$(RNDGEN)': only 'hasCurand' and 'hasNoCurand' are supported) + $(error Unknown RNDGEN='$(RNDGEN)': only 'hasCurand' and 'hasNoCurand' are supported) endif #------------------------------------------------------------------------------- @@ -390,30 +390,30 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) ifneq ($(NVCC),) - override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) else - override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) ifneq ($(NVCC),) - override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) else - override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) - override BUILDDIR = build.$(DIRTAG) - override LIBDIR = ../../lib/$(BUILDDIR) - override LIBDIRRPATH = '$$ORIGIN/../$(LIBDIR)' - $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is set = 1)) + override BUILDDIR = build.$(DIRTAG) + override LIBDIR = ../../lib/$(BUILDDIR) + override LIBDIRRPATH = '$$ORIGIN/../$(LIBDIR)' + $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is set = 1)) else - override BUILDDIR = . - override LIBDIR = ../../lib - override LIBDIRRPATH = '$$ORIGIN/$(LIBDIR)' - $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is not set)) + override BUILDDIR = . + override LIBDIR = ../../lib + override LIBDIRRPATH = '$$ORIGIN/$(LIBDIR)' + $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is not set)) endif ###override INCDIR = ../../include ###$(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG)) @@ -422,17 +422,17 @@ endif # Use relative paths with respect to the executables or shared libraries ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary ifeq ($(UNAME_S),Darwin) - override CXXLIBFLAGSRPATH = - override CULIBFLAGSRPATH = - override CXXLIBFLAGSRPATH2 = - override CULIBFLAGSRPATH2 = + override CXXLIBFLAGSRPATH = + override CULIBFLAGSRPATH = + override CXXLIBFLAGSRPATH2 = + override CULIBFLAGSRPATH2 = else - # RPATH to cuda/cpp libs when linking executables - override CXXLIBFLAGSRPATH = -Wl,-rpath,$(LIBDIRRPATH) - override CULIBFLAGSRPATH = -Xlinker -rpath,$(LIBDIRRPATH) - # RPATH to common lib when linking cuda/cpp libs - override CXXLIBFLAGSRPATH2 = -Wl,-rpath,'$$ORIGIN' - override CULIBFLAGSRPATH2 = -Xlinker -rpath,'$$ORIGIN' + # RPATH to cuda/cpp libs when linking executables + override CXXLIBFLAGSRPATH = -Wl,-rpath,$(LIBDIRRPATH) + override CULIBFLAGSRPATH = -Xlinker -rpath,$(LIBDIRRPATH) + # RPATH to common lib when linking cuda/cpp libs + override CXXLIBFLAGSRPATH2 = -Wl,-rpath,'$$ORIGIN' + override CULIBFLAGSRPATH2 = -Xlinker -rpath,'$$ORIGIN' endif # Setting LD_LIBRARY_PATH or DYLD_LIBRARY_PATH in the RUNTIME is no longer necessary (neither on Linux nor on Mac) @@ -684,12 +684,12 @@ endif cuda: - ifneq ($(NVCC),) - - cu_main=$(BUILDDIR)/gcheck.exe - fcu_main=$(BUILDDIR)/fgcheck.exe + ifneq ($(NVCC),) - # Generic target and build rules: objects from CUDA compilation + cu_main=$(BUILDDIR)/gcheck.exe + fcu_main=$(BUILDDIR)/fgcheck.exe + + # Generic target and build rules: objects from CUDA compilation $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ @@ -698,17 +698,17 @@ cuda: @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ - $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) - ifeq ($(RNDGEN),hasCurand) - $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) - endif + $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) + ifeq ($(RNDGEN),hasCurand) + $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) + endif - # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) - ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) + # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) + ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) CUFLAGS += -Xcompiler -Wno-deprecated-builtins - endif + endif MG5AMC_CULIB = mg5amc_$(processid_short)_cuda cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o @@ -729,16 +729,16 @@ cuda: $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - endif - ifeq ($(UNAME_S),Darwin) - $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 - endif - $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + endif + ifeq ($(UNAME_S),Darwin) + $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 + endif + $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) endif # ifneq ($(NVCC),) From 360d9088ce81c4e169766c75930779aacce85590 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:35:54 +0200 Subject: [PATCH 05/83] Revert "Convert all spaces to tabs in cudacpp.mk file" This reverts commit e38570f68045c88fd11858702e9e55e0e6fbfb1f. --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 356 +++++++++--------- 1 file changed, 178 insertions(+), 178 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 6c8711041a..087161f84e 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -108,53 +108,53 @@ endif # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled endif # If CUDA_HOME is not set, try to set it from the location of nvcc ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") endif # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= endif export NVCC export CUFLAGS @@ -174,15 +174,15 @@ endif # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) - override CXX:=ccache $(CXX) + override CXX:=ccache $(CXX) endif #ifeq ($(USECCACHE)$(shell echo $(AR) | grep ccache),1) # override AR:=ccache $(AR) #endif ifneq ($(NVCC),) - ifeq ($(USECCACHE)$(shell echo $(NVCC) | grep ccache),1) - override NVCC:=ccache $(NVCC) - endif + ifeq ($(USECCACHE)$(shell echo $(NVCC) | grep ccache),1) + override NVCC:=ccache $(NVCC) + endif endif #------------------------------------------------------------------------------- @@ -191,21 +191,21 @@ endif # PowerPC-specific CXX compiler flags (being reviewed) ifeq ($(UNAME_P),ppc64le) - CXXFLAGS+= -mcpu=power9 -mtune=power9 # gains ~2-3% both for none and sse4 - # Throughput references without the extra flags below: none=1.41-1.42E6, sse4=2.15-2.19E6 - ###CXXFLAGS+= -DNO_WARN_X86_INTRINSICS # no change - ###CXXFLAGS+= -fpeel-loops # no change - ###CXXFLAGS+= -funroll-loops # gains ~1% for none, loses ~1% for sse4 - ###CXXFLAGS+= -ftree-vectorize # no change - ###CXXFLAGS+= -flto # would increase to none=4.08-4.12E6, sse4=4.99-5.03E6! + CXXFLAGS+= -mcpu=power9 -mtune=power9 # gains ~2-3% both for none and sse4 + # Throughput references without the extra flags below: none=1.41-1.42E6, sse4=2.15-2.19E6 + ###CXXFLAGS+= -DNO_WARN_X86_INTRINSICS # no change + ###CXXFLAGS+= -fpeel-loops # no change + ###CXXFLAGS+= -funroll-loops # gains ~1% for none, loses ~1% for sse4 + ###CXXFLAGS+= -ftree-vectorize # no change + ###CXXFLAGS+= -flto # would increase to none=4.08-4.12E6, sse4=4.99-5.03E6! else - ###CXXFLAGS+= -flto # also on Intel this would increase throughputs by a factor 2 to 4... - ######CXXFLAGS+= -fno-semantic-interposition # no benefit (neither alone, nor combined with -flto) + ###CXXFLAGS+= -flto # also on Intel this would increase throughputs by a factor 2 to 4... + ######CXXFLAGS+= -fno-semantic-interposition # no benefit (neither alone, nor combined with -flto) endif # PowerPC-specific CUDA compiler flags (to be reviewed!) ifeq ($(UNAME_P),ppc64le) - CUFLAGS+= -Xcompiler -mno-float128 + CUFLAGS+= -Xcompiler -mno-float128 endif #------------------------------------------------------------------------------- @@ -228,52 +228,52 @@ endif # Set the default AVX (vectorization) choice ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif + ifeq ($(UNAME_P),ppc64le) + ###override AVX = none + override AVX = sse4 + else ifeq ($(UNAME_P),arm) + ###override AVX = none + override AVX = sse4 + else ifeq ($(wildcard /proc/cpuinfo),) + override AVX = none + $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) + else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) + override AVX = 512y + ###$(info Using AVX='$(AVX)' as no user input exists) + else + override AVX = avx2 + ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) + $(warning Using AVX='$(AVX)' because host does not support avx512vl) + else + $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) + endif + endif else - ###$(info Using AVX='$(AVX)' according to user input) + ###$(info Using AVX='$(AVX)' according to user input) endif # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) - override FPTYPE = d + override FPTYPE = d endif # Set the default HELINL (inline helicities?) choice ifeq ($(HELINL),) - override HELINL = 0 + override HELINL = 0 endif # Set the default HRDCOD (hardcode cIPD physics parameters?) choice ifeq ($(HRDCOD),) - override HRDCOD = 0 + override HRDCOD = 0 endif # Set the default RNDGEN (random number generator) choice ifeq ($(RNDGEN),) - ifeq ($(NVCC),) - override RNDGEN = hasNoCurand - else ifeq ($(RNDGEN),) - override RNDGEN = hasCurand - endif + ifeq ($(NVCC),) + override RNDGEN = hasNoCurand + else ifeq ($(RNDGEN),) + override RNDGEN = hasCurand + endif endif # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too @@ -297,45 +297,45 @@ CXXFLAGS += $(OMPFLAGS) # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] $(info AVX=$(AVX)) ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? CXXFLAGS+= $(AVXFLAGS) @@ -343,44 +343,44 @@ CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) ifeq ($(FPTYPE),d) - CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE - CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE + CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE + CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE else ifeq ($(FPTYPE),f) - CXXFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT - CUFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT + CXXFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT + CUFLAGS += -DMGONGPU_FPTYPE_FLOAT -DMGONGPU_FPTYPE2_FLOAT else ifeq ($(FPTYPE),m) - CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT - CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT + CXXFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT + CUFLAGS += -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_FLOAT else - $(error Unknown FPTYPE='$(FPTYPE)': only 'd', 'f' and 'm' are supported) + $(error Unknown FPTYPE='$(FPTYPE)': only 'd', 'f' and 'm' are supported) endif # Set the build flags appropriate to each HELINL choice (example: "make HELINL=1") $(info HELINL=$(HELINL)) ifeq ($(HELINL),1) - CXXFLAGS += -DMGONGPU_INLINE_HELAMPS - CUFLAGS += -DMGONGPU_INLINE_HELAMPS + CXXFLAGS += -DMGONGPU_INLINE_HELAMPS + CUFLAGS += -DMGONGPU_INLINE_HELAMPS else ifneq ($(HELINL),0) - $(error Unknown HELINL='$(HELINL)': only '0' and '1' are supported) + $(error Unknown HELINL='$(HELINL)': only '0' and '1' are supported) endif # Set the build flags appropriate to each HRDCOD choice (example: "make HRDCOD=1") $(info HRDCOD=$(HRDCOD)) ifeq ($(HRDCOD),1) - CXXFLAGS += -DMGONGPU_HARDCODE_PARAM - CUFLAGS += -DMGONGPU_HARDCODE_PARAM + CXXFLAGS += -DMGONGPU_HARDCODE_PARAM + CUFLAGS += -DMGONGPU_HARDCODE_PARAM else ifneq ($(HRDCOD),0) - $(error Unknown HRDCOD='$(HRDCOD)': only '0' and '1' are supported) + $(error Unknown HRDCOD='$(HRDCOD)': only '0' and '1' are supported) endif # Set the build flags appropriate to each RNDGEN choice (example: "make RNDGEN=hasNoCurand") $(info RNDGEN=$(RNDGEN)) ifeq ($(RNDGEN),hasNoCurand) - override CXXFLAGSCURAND = -DMGONGPU_HAS_NO_CURAND + override CXXFLAGSCURAND = -DMGONGPU_HAS_NO_CURAND else ifeq ($(RNDGEN),hasCurand) - override CXXFLAGSCURAND = + override CXXFLAGSCURAND = else - $(error Unknown RNDGEN='$(RNDGEN)': only 'hasCurand' and 'hasNoCurand' are supported) + $(error Unknown RNDGEN='$(RNDGEN)': only 'hasCurand' and 'hasNoCurand' are supported) endif #------------------------------------------------------------------------------- @@ -390,30 +390,30 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) ifneq ($(NVCC),) - override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) else - override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) ifneq ($(NVCC),) - override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) else - override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) - override BUILDDIR = build.$(DIRTAG) - override LIBDIR = ../../lib/$(BUILDDIR) - override LIBDIRRPATH = '$$ORIGIN/../$(LIBDIR)' - $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is set = 1)) + override BUILDDIR = build.$(DIRTAG) + override LIBDIR = ../../lib/$(BUILDDIR) + override LIBDIRRPATH = '$$ORIGIN/../$(LIBDIR)' + $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is set = 1)) else - override BUILDDIR = . - override LIBDIR = ../../lib - override LIBDIRRPATH = '$$ORIGIN/$(LIBDIR)' - $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is not set)) + override BUILDDIR = . + override LIBDIR = ../../lib + override LIBDIRRPATH = '$$ORIGIN/$(LIBDIR)' + $(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG) (USEBUILDDIR is not set)) endif ###override INCDIR = ../../include ###$(info Building in BUILDDIR=$(BUILDDIR) for tag=$(TAG)) @@ -422,17 +422,17 @@ endif # Use relative paths with respect to the executables or shared libraries ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary ifeq ($(UNAME_S),Darwin) - override CXXLIBFLAGSRPATH = - override CULIBFLAGSRPATH = - override CXXLIBFLAGSRPATH2 = - override CULIBFLAGSRPATH2 = + override CXXLIBFLAGSRPATH = + override CULIBFLAGSRPATH = + override CXXLIBFLAGSRPATH2 = + override CULIBFLAGSRPATH2 = else - # RPATH to cuda/cpp libs when linking executables - override CXXLIBFLAGSRPATH = -Wl,-rpath,$(LIBDIRRPATH) - override CULIBFLAGSRPATH = -Xlinker -rpath,$(LIBDIRRPATH) - # RPATH to common lib when linking cuda/cpp libs - override CXXLIBFLAGSRPATH2 = -Wl,-rpath,'$$ORIGIN' - override CULIBFLAGSRPATH2 = -Xlinker -rpath,'$$ORIGIN' + # RPATH to cuda/cpp libs when linking executables + override CXXLIBFLAGSRPATH = -Wl,-rpath,$(LIBDIRRPATH) + override CULIBFLAGSRPATH = -Xlinker -rpath,$(LIBDIRRPATH) + # RPATH to common lib when linking cuda/cpp libs + override CXXLIBFLAGSRPATH2 = -Wl,-rpath,'$$ORIGIN' + override CULIBFLAGSRPATH2 = -Xlinker -rpath,'$$ORIGIN' endif # Setting LD_LIBRARY_PATH or DYLD_LIBRARY_PATH in the RUNTIME is no longer necessary (neither on Linux nor on Mac) @@ -684,12 +684,12 @@ endif cuda: - ifneq ($(NVCC),) + ifneq ($(NVCC),) + + cu_main=$(BUILDDIR)/gcheck.exe + fcu_main=$(BUILDDIR)/fgcheck.exe - cu_main=$(BUILDDIR)/gcheck.exe - fcu_main=$(BUILDDIR)/fgcheck.exe - - # Generic target and build rules: objects from CUDA compilation + # Generic target and build rules: objects from CUDA compilation $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ @@ -698,17 +698,17 @@ cuda: @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ - $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) - ifeq ($(RNDGEN),hasCurand) - $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) - endif + $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) + ifeq ($(RNDGEN),hasCurand) + $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) + endif - # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) - ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) + # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) + ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) CUFLAGS += -Xcompiler -Wno-deprecated-builtins - endif + endif MG5AMC_CULIB = mg5amc_$(processid_short)_cuda cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o @@ -729,16 +729,16 @@ cuda: $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - endif - ifeq ($(UNAME_S),Darwin) - $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 - endif - $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + endif + ifeq ($(UNAME_S),Darwin) + $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 + endif + $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) endif # ifneq ($(NVCC),) From 575840c4088b750913ebbdc8cdcfdaef2a44bf56 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:37:07 +0200 Subject: [PATCH 06/83] Changed line to be interpreted in bash into spaces --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 087161f84e..23e8c86b38 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -691,11 +691,11 @@ cuda: # Generic target and build rules: objects from CUDA compilation $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math From 19911fbff4197272e406bd9b3fe9f089aea2783a Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:40:17 +0200 Subject: [PATCH 07/83] Changed indentation again --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 23e8c86b38..a2347bb537 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -690,13 +690,13 @@ cuda: fcu_main=$(BUILDDIR)/fgcheck.exe # Generic target and build rules: objects from CUDA compilation - $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ - $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) From f4366a982f5e57295e16736c6237cd6b109188d7 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:42:16 +0200 Subject: [PATCH 08/83] Fixed indentation in start of CUDA compilation --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index a2347bb537..2e6e43c157 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -691,12 +691,12 @@ cuda: # Generic target and build rules: objects from CUDA compilation $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) @@ -714,9 +714,9 @@ cuda: cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) ifneq ($(shell $(CXX) --version | grep ^Intel),) From b8194983e808c0fdb642d15e257471519bacc9f3 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:43:25 +0200 Subject: [PATCH 09/83] Fixed indentation in fcheck compilation --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 2e6e43c157..9aba68f94d 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -738,7 +738,7 @@ cuda: endif $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) endif # ifneq ($(NVCC),) From 9082da04a1b332f50374876a98f276b25da53903 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:53:55 +0200 Subject: [PATCH 10/83] Changed indentation of ifndef in CUDA compilation --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 102 +++++++++--------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 9aba68f94d..802cbacc17 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -686,59 +686,59 @@ cuda: ifneq ($(NVCC),) - cu_main=$(BUILDDIR)/gcheck.exe - fcu_main=$(BUILDDIR)/fgcheck.exe - - # Generic target and build rules: objects from CUDA compilation - $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ - - $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ - - $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) - ifeq ($(RNDGEN),hasCurand) - $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) - endif + cu_main=$(BUILDDIR)/gcheck.exe + fcu_main=$(BUILDDIR)/fgcheck.exe + + # Generic target and build rules: objects from CUDA compilation + $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + + $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + + $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) + ifeq ($(RNDGEN),hasCurand) + $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) + endif - # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) - ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) - CUFLAGS += -Xcompiler -Wno-deprecated-builtins - endif + # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) + ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) + CUFLAGS += -Xcompiler -Wno-deprecated-builtins + endif - MG5AMC_CULIB = mg5amc_$(processid_short)_cuda - cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o - cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o - - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) - $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) - - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc - endif - $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o - $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) - - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - endif - ifeq ($(UNAME_S),Darwin) - $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 - endif - $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) + MG5AMC_CULIB = mg5amc_$(processid_short)_cuda + cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o + cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o + + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) + $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) + + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc + endif + $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o + $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) + + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + endif + ifeq ($(UNAME_S),Darwin) + $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 + endif + $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) endif # ifneq ($(NVCC),) From bfd4301c7230bc421db849da11a3e4fbb7a2dd2f Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 15:55:19 +0200 Subject: [PATCH 11/83] Changed indentation back to tabs again for some lines --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 802cbacc17..f42081ff4b 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -691,12 +691,12 @@ cuda: # Generic target and build rules: objects from CUDA compilation $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) @@ -717,7 +717,7 @@ cuda: $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) - $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) + $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) ifneq ($(shell $(CXX) --version | grep ^Intel),) $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') @@ -727,7 +727,7 @@ cuda: endif $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o - $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) + $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) ifneq ($(shell $(CXX) --version | grep ^Intel),) $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') @@ -738,7 +738,7 @@ cuda: endif $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) endif # ifneq ($(NVCC),) From 529318c44251d0c675b85330ab09971cc4c8edba Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 16:14:51 +0200 Subject: [PATCH 12/83] Changed indentation again to fix endif error --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 101 +++++++++--------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index f42081ff4b..0212c2d28d 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -683,64 +683,59 @@ endif # CUDA Target cuda: + cu_main=$(BUILDDIR)/gcheck.exe + fcu_main=$(BUILDDIR)/fgcheck.exe + + # Generic target and build rules: objects from CUDA compilation + $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + + $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ + + $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) + $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) + ifeq ($(RNDGEN),hasCurand) + $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) + endif - ifneq ($(NVCC),) - - cu_main=$(BUILDDIR)/gcheck.exe - fcu_main=$(BUILDDIR)/fgcheck.exe - - # Generic target and build rules: objects from CUDA compilation - $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ - - $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ - - $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) - ifeq ($(RNDGEN),hasCurand) - $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) - endif - - # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) - ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) - CUFLAGS += -Xcompiler -Wno-deprecated-builtins - endif - - MG5AMC_CULIB = mg5amc_$(processid_short)_cuda - cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o - cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o + # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) + ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) + CUFLAGS += -Xcompiler -Wno-deprecated-builtins + endif - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) - $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) + MG5AMC_CULIB = mg5amc_$(processid_short)_cuda + cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o + cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc - endif - $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o - $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o + $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) + $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - endif - ifeq ($(UNAME_S),Darwin) - $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 - endif - $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc + endif + $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o + $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) - endif # ifneq ($(NVCC),) + ifneq ($(shell $(CXX) --version | grep ^Intel),) + $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') + $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') + endif + ifeq ($(UNAME_S),Darwin) + $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 + endif + $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH + $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) #------------------------------------------------------------------------------- From fc549cadf698e110060fadaf2fbdb5aceb458cda Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 16:54:02 +0200 Subject: [PATCH 13/83] Revert back cudacpp.mk to original state --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 131 ++++++++++-------- 1 file changed, 72 insertions(+), 59 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 0212c2d28d..84aa07679d 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -445,6 +445,14 @@ override RUNTIME = cxx_main=$(BUILDDIR)/check.exe fcxx_main=$(BUILDDIR)/fcheck.exe +ifneq ($(NVCC),) +cu_main=$(BUILDDIR)/gcheck.exe +fcu_main=$(BUILDDIR)/fgcheck.exe +else +cu_main= +fcu_main= +endif + testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) @@ -467,6 +475,17 @@ $(BUILDDIR)/.build.$(TAG): @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi @touch $(BUILDDIR)/.build.$(TAG) +# Generic target and build rules: objects from CUDA compilation +ifneq ($(NVCC),) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ + +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) + @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi + $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ +endif + # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) $(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) @@ -477,14 +496,29 @@ $(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) ifeq ($(shell $(CXX) --version | grep ^nvc++),) $(BUILDDIR)/CrossSectionKernels.o: CXXFLAGS := $(filter-out -ffast-math,$(CXXFLAGS)) $(BUILDDIR)/CrossSectionKernels.o: CXXFLAGS += -fno-fast-math +ifneq ($(NVCC),) +$(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math +endif endif # Apply special build flags only to check_sa.o and gcheck_sa.o (NVTX in timermap.h, #679) $(BUILDDIR)/check_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) +$(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) # Apply special build flags only to check_sa and CurandRandomNumberKernel (curand headers, #679) $(BUILDDIR)/check_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) +$(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CXXFLAGSCURAND) +ifeq ($(RNDGEN),hasCurand) +$(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) +endif + +# Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) +ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) +ifneq ($(NVCC),) +CUFLAGS += -Xcompiler -Wno-deprecated-builtins +endif +endif # Avoid clang warning "overriding '-ffp-contract=fast' option with '-ffp-contract=on'" (#516) # This patch does remove the warning, but I prefer to keep it disabled for the moment... @@ -518,12 +552,25 @@ MG5AMC_CXXLIB = mg5amc_$(processid_short)_cpp cxx_objects_lib=$(BUILDDIR)/CPPProcess.o $(BUILDDIR)/MatrixElementKernels.o $(BUILDDIR)/BridgeKernels.o $(BUILDDIR)/CrossSectionKernels.o cxx_objects_exe=$(BUILDDIR)/CommonRandomNumberKernel.o $(BUILDDIR)/RamboSamplingKernels.o +ifneq ($(NVCC),) +MG5AMC_CULIB = mg5amc_$(processid_short)_cuda +cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o +cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o +endif + # Target (and build rules): C++ and CUDA shared libraries $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: $(BUILDDIR)/fbridge.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: cxx_objects_lib += $(BUILDDIR)/fbridge.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cxx_objects_lib) $(CXX) -shared -o $@ $(cxx_objects_lib) $(CXXLIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) +ifneq ($(NVCC),) +$(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o +$(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o +$(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) + $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) +endif + #------------------------------------------------------------------------------- # Target (and build rules): Fortran include files @@ -538,6 +585,18 @@ $(cxx_main): LIBFLAGS += $(CXXLIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PAT $(cxx_main): $(BUILDDIR)/check_sa.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(cxx_objects_exe) $(BUILDDIR)/CurandRandomNumberKernel.o $(CXX) -o $@ $(BUILDDIR)/check_sa.o $(OMPFLAGS) -ldl -pthread $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe) $(BUILDDIR)/CurandRandomNumberKernel.o $(CURANDLIBFLAGS) +ifneq ($(NVCC),) +ifneq ($(shell $(CXX) --version | grep ^Intel),) +$(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') +$(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') +else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 +$(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc +endif +$(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH +$(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o + $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) +endif + #------------------------------------------------------------------------------- # Generic target and build rules: objects from Fortran compilation @@ -561,6 +620,19 @@ $(fcxx_main): LIBFLAGS += $(CXXLIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PA $(fcxx_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(cxx_objects_exe) $(CXX) -o $@ $(BUILDDIR)/fcheck_sa.o $(OMPFLAGS) $(BUILDDIR)/fsampler.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CXXLIB) $(cxx_objects_exe) +ifneq ($(NVCC),) +ifneq ($(shell $(CXX) --version | grep ^Intel),) +$(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') +$(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') +endif +ifeq ($(UNAME_S),Darwin) +$(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 +endif +$(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH +$(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) + $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) +endif + #------------------------------------------------------------------------------- # Target (and build rules): test objects and test executable @@ -680,65 +752,6 @@ endif #------------------------------------------------------------------------------- -# CUDA Target - -cuda: - cu_main=$(BUILDDIR)/gcheck.exe - fcu_main=$(BUILDDIR)/fgcheck.exe - - # Generic target and build rules: objects from CUDA compilation - $(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ - - $(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ - - $(BUILDDIR)/gCrossSectionKernels.o: CUFLAGS += -Xcompiler -fno-fast-math - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(USE_NVTX) $(CUINC) - $(BUILDDIR)/gcheck_sa.o: CXXFLAGS += $(CXXFLAGSCURAND) - ifeq ($(RNDGEN),hasCurand) - $(BUILDDIR)/CurandRandomNumberKernel.o: CXXFLAGS += $(CUINC) - endif - - # Avoid "warning: builtin __has_trivial_... is deprecated; use __is_trivially_... instead" in nvcc with icx2023 (#592) - ifneq ($(shell $(CXX) --version | egrep '^(Intel)'),) - CUFLAGS += -Xcompiler -Wno-deprecated-builtins - endif - - MG5AMC_CULIB = mg5amc_$(processid_short)_cuda - cu_objects_lib=$(BUILDDIR)/gCPPProcess.o $(BUILDDIR)/gMatrixElementKernels.o $(BUILDDIR)/gBridgeKernels.o $(BUILDDIR)/gCrossSectionKernels.o - cu_objects_exe=$(BUILDDIR)/gCommonRandomNumberKernel.o $(BUILDDIR)/gRamboSamplingKernels.o - - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: cu_objects_lib += $(BUILDDIR)/fbridge_cu.o - $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_objects_lib) - $(NVCC) --shared -o $@ $(cu_objects_lib) $(CULIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) - - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(cu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(cu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - $(cu_main): LIBFLAGS += -L$(patsubst %bin/nvc++,%lib,$(subst ccache ,,$(CXX))) -lnvhpcatm -lnvcpumath -lnvc - endif - $(cu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(cu_main): $(BUILDDIR)/gcheck_sa.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o - $(NVCC) -o $@ $(BUILDDIR)/gcheck_sa.o $(CUARCHFLAGS) $(LIBFLAGS) -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) $(BUILDDIR)/gCurandRandomNumberKernel.o $(CURANDLIBFLAGS) - - ifneq ($(shell $(CXX) --version | grep ^Intel),) - $(fcu_main): LIBFLAGS += -lintlc # compile with icpx and link with nvcc (undefined reference to `_intel_fast_memcpy') - $(fcu_main): LIBFLAGS += -lsvml # compile with icpx and link with nvcc (undefined reference to `__svml_cos4_l9') - endif - ifeq ($(UNAME_S),Darwin) - $(fcu_main): LIBFLAGS += -L$(shell dirname $(shell $(FC) --print-file-name libgfortran.dylib)) # add path to libgfortran on Mac #375 - endif - $(fcu_main): LIBFLAGS += $(CULIBFLAGSRPATH) # avoid the need for LD_LIBRARY_PATH - $(fcu_main): $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBDIR)/lib$(MG5AMC_CULIB).so $(cu_objects_exe) - $(NVCC) -o $@ $(BUILDDIR)/fcheck_sa.o $(BUILDDIR)/fsampler_cu.o $(LIBFLAGS) -lgfortran -L$(LIBDIR) -l$(MG5AMC_CULIB) $(cu_objects_exe) - -#------------------------------------------------------------------------------- - # Target: clean the builds .PHONY: clean From bd0df5424d300172d5cc5e6622779e8e0ef86d89 Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 17:06:03 +0200 Subject: [PATCH 14/83] Added cuda target --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 84aa07679d..bba2257773 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -750,6 +750,12 @@ else avxall: avxnone avxsse4 avxavx2 avx512y avx512z endif +# +# CUDA Target +# + +cuda: $(cu_main) + #------------------------------------------------------------------------------- # Target: clean the builds From df98ffae8bbd8e5c23acc201f9ac002c529d513d Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 17:12:25 +0200 Subject: [PATCH 15/83] Added usage target if user doesent speficy target when invoking makefile and added cpp targets --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index bba2257773..0cc2c9c206 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -86,6 +86,12 @@ endif #------------------------------------------------------------------------------- +# Target if user does not specify target +usage: + $(error You must specify a target! 'cuda', 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' are the targets currently supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -719,35 +725,35 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: +cppnone: @echo $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) -avxsse4: +cppsse4: @echo $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) -avxavx2: +cppavx2: @echo $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) -avx512y: +cpp512y: @echo $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) -avx512z: +cpp512z: @echo $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif # From f822e93b257cf1e5966b31e94ae50ca4cb430ffb Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 17:14:30 +0200 Subject: [PATCH 16/83] Added .DEFAULT_GOAL so usage target will be run correctly --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 0cc2c9c206..f95d85abdb 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -86,6 +86,8 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + # Target if user does not specify target usage: $(error You must specify a target! 'cuda', 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' are the targets currently supported!) From 63bb3b57ee6f3a2ffa94d445648c072d8f29221d Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 17:20:04 +0200 Subject: [PATCH 17/83] Added targets to cpp build --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index f95d85abdb..46e954b4f3 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -729,23 +729,23 @@ endif # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) cppnone: @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) + $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) $(cxx_main) cppsse4: @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) + $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) $(cxx_main) cppavx2: @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) + $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) $(cxx_main) cpp512y: @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) + $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) $(cxx_main) cpp512z: @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) + $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) $(cxx_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 From b5758b03ebd0827b1601f2861e151bfa1624b0bf Mon Sep 17 00:00:00 2001 From: Jorgen Date: Mon, 21 Aug 2023 17:45:22 +0200 Subject: [PATCH 18/83] Added correct cpp targets --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 46e954b4f3..35be28bd11 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -728,24 +728,24 @@ endif # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) cppnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) $(cxx_main) + CXXFLAGS += -march=x86-64 + $(cxx_main) cppsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) $(cxx_main) + CXXFLAGS += -march=nehalem + $(cxx_main) cppavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) $(cxx_main) + CXXFLAGS += -march=haswell + $(cxx_main) cpp512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) $(cxx_main) + CXXFLAGS += -march=skylake-avx512 -mprefer-vector-width=256 + $(cxx_main) cpp512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) $(cxx_main) + CXXFLAGS += -march=skylake-avx512 -DMGONGPU_PVW512 + $(cxx_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 From eb3a7065692fb47ae96112258de075bda22783df Mon Sep 17 00:00:00 2001 From: Jorgen Date: Tue, 22 Aug 2023 10:49:05 +0200 Subject: [PATCH 19/83] Added $(MAKECMDGOALS) ifeq to CUDA compiler configuration --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 152 +++++++++--------- 1 file changed, 75 insertions(+), 77 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 35be28bd11..181078ffc2 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -111,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target + +ifeq ($(MAKECMDGOALS),cuda) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -727,25 +730,20 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -cppnone: - CXXFLAGS += -march=x86-64 - $(cxx_main) +cppnone: CXXFLAGS += -march=x86-64 +cppnone: $(cxx_main) -cppsse4: - CXXFLAGS += -march=nehalem - $(cxx_main) +cppsse4: CXXFLAGS += -march=nehalem +cppsse4: $(cxx_main) -cppavx2: - CXXFLAGS += -march=haswell - $(cxx_main) +cppavx2: CXXFLAGS += -march=haswell +cppavx2: $(cxx_main) -cpp512y: - CXXFLAGS += -march=skylake-avx512 -mprefer-vector-width=256 - $(cxx_main) +cpp512y: CXXFLAGS += -march=skylake-avx512 -mprefer-vector-width=256 +cpp512y: $(cxx_main) -cpp512z: - CXXFLAGS += -march=skylake-avx512 -DMGONGPU_PVW512 - $(cxx_main) +cpp512z: CXXFLAGS += -march=skylake-avx512 -DMGONGPU_PVW512 +cpp512z: $(cxx_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 From b23ada071e81d435dda66af46c288d01ba73c92e Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 25 Aug 2023 10:36:14 +0200 Subject: [PATCH 20/83] Removed automatic configuration of AVX level --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 181078ffc2..daf1dd6fe8 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -237,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d From 683e641c7c17b66f262d1bc847b38b1c96c22b39 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 25 Aug 2023 11:04:33 +0200 Subject: [PATCH 21/83] Fixed correct AVX level depending on C++ compiler --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index daf1dd6fe8..39db3080d0 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -90,7 +90,7 @@ endif # Target if user does not specify target usage: - $(error You must specify a target! 'cuda', 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' are the targets currently supported!) + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) #------------------------------------------------------------------------------- @@ -282,44 +282,42 @@ CXXFLAGS += $(OMPFLAGS) # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] $(info AVX=$(AVX)) ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) + ifeq ($(MAKECMDGOALS),cppsse4) override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) + else ifneq ($(MAKECMDGOALS),cppnone) $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) endif else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) + ifeq ($(MAKECMDGOALS),cppsse4) override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) + else ifneq ($(MAKECMDGOALS),cppnone) $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) endif else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) + ifeq ($(MAKECMDGOALS),cppnone) override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) + else ifeq ($(MAKECMDGOALS),cppsse4) override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) + else ifeq ($(MAKECMDGOALS),cppavx2) override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) + else ifeq ($(MAKECMDGOALS),cpp512y) override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) + else ifeq ($(MAKECMDGOALS),cpp512z) override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) else $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) endif else - ifeq ($(AVX),none) + ifeq ($(MAKECMDGOALS),cppnone) override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) + else ifeq ($(MAKECMDGOALS),cppsse4) override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) + else ifeq ($(MAKECMDGOALS),cppavx2) override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) + else ifeq ($(MAKECMDGOALS),cpp512y) override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) + else ifeq ($(MAKECMDGOALS),cpp512z) override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) endif endif # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? @@ -704,19 +702,14 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -cppnone: CXXFLAGS += -march=x86-64 cppnone: $(cxx_main) -cppsse4: CXXFLAGS += -march=nehalem cppsse4: $(cxx_main) -cppavx2: CXXFLAGS += -march=haswell cppavx2: $(cxx_main) -cpp512y: CXXFLAGS += -march=skylake-avx512 -mprefer-vector-width=256 cpp512y: $(cxx_main) -cpp512z: CXXFLAGS += -march=skylake-avx512 -DMGONGPU_PVW512 cpp512z: $(cxx_main) ifeq ($(UNAME_P),ppc64le) From fca0b73acb826a4eff05316fd3637b8a026b6293 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 25 Aug 2023 15:24:00 +0200 Subject: [PATCH 22/83] Reworked configuration of setting AVX level --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 39db3080d0..a8c5d57288 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -261,6 +261,20 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) + override AVX = none # no SIMD +else ifeq ($(MAKECMDGOALS),cppsse4) + override AVX = sse4 # SSE4.2 with 128 width (xmm registers) +else ifeq ($(MAKECMDGOALS),cppavx2) + override AVX = avx2 # AVX2 with 256 width (ymm registers) [DEFAULT for clang] +else ifeq ($(MAKECMDGOALS),cpp512y) + override AVX = 512y # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] +else ifeq ($(MAKECMDGOALS),cpp512z) + override AVX = 512z # AVX512 with 512 width (zmm registers) +else ifeq ($(MAKECMDGOALS),cuda) + override AVX = none # no SIMD + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -282,42 +296,44 @@ CXXFLAGS += $(OMPFLAGS) # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] $(info AVX=$(AVX)) ifeq ($(UNAME_P),ppc64le) - ifeq ($(MAKECMDGOALS),cppsse4) + ifeq ($(AVX),sse4) override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(MAKECMDGOALS),cppnone) + else ifneq ($(AVX),none) $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) endif else ifeq ($(UNAME_P),arm) - ifeq ($(MAKECMDGOALS),cppsse4) + ifeq ($(AVX),sse4) override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(MAKECMDGOALS),cppnone) + else ifneq ($(AVX),none) $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) endif else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(MAKECMDGOALS),cppnone) + ifeq ($(AVX),none) override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(MAKECMDGOALS),cppsse4) + else ifeq ($(AVX),sse4) override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(MAKECMDGOALS),cppavx2) + else ifeq ($(AVX),avx2) override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(MAKECMDGOALS),cpp512y) + else ifeq ($(AVX),512y) override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(MAKECMDGOALS),cpp512z) + else ifeq ($(AVX),512z) override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) else $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) endif else - ifeq ($(MAKECMDGOALS),cppnone) + ifeq ($(AVX),none) override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(MAKECMDGOALS),cppsse4) + else ifeq ($(AVX),sse4) override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(MAKECMDGOALS),cppavx2) + else ifeq ($(AVX),avx2) override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(MAKECMDGOALS),cpp512y) + else ifeq ($(AVX),512y) override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(MAKECMDGOALS),cpp512z) + else ifeq ($(AVX),512z) override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) endif endif # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? From 489c453390a1b6cdbac39504da50c9decdba363e Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 25 Aug 2023 15:28:56 +0200 Subject: [PATCH 23/83] Fixed missing endif and removed AVX configuration in cuda compilation --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 87 ++++++++++--------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index a8c5d57288..4a89c51b4a 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -272,8 +272,7 @@ else ifeq ($(MAKECMDGOALS),cpp512y) override AVX = 512y # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] else ifeq ($(MAKECMDGOALS),cpp512z) override AVX = 512z # AVX512 with 512 width (zmm registers) -else ifeq ($(MAKECMDGOALS),cuda) - override AVX = none # no SIMD +endif # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX @@ -294,50 +293,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(filter cppnone cppsse4 cppavx2 cpp512y cpp512z,$(MAKECMDGOALS)),$(MAKECMDGOALS)) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) From 01b7da398cd61cb089c016858a4045a08c99e3ab Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 25 Aug 2023 15:33:32 +0200 Subject: [PATCH 24/83] Fixed AVX not being properly set --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 4a89c51b4a..babb4ec552 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -293,7 +293,7 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -ifeq ($(filter cppnone cppsse4 cppavx2 cpp512y cpp512z,$(MAKECMDGOALS)),$(MAKECMDGOALS)) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) $(info AVX=$(AVX)) ifeq ($(UNAME_P),ppc64le) ifeq ($(AVX),sse4) From e734f49519585fe7f04be2f376c950d6af708b81 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 25 Aug 2023 15:44:49 +0200 Subject: [PATCH 25/83] Fixed cuda compilation in cudacpp_src.mk and fixed trailing whitespace in AVX assignment --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 20 ++--- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 84 ++++++++++--------- 2 files changed, 53 insertions(+), 51 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index babb4ec552..5cc00243bc 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -262,16 +262,16 @@ ifeq ($(RNDGEN),) endif # set the correct AVX based on avxcpp target -ifeq ($(MAKECMDGOALS),cppnone) - override AVX = none # no SIMD -else ifeq ($(MAKECMDGOALS),cppsse4) - override AVX = sse4 # SSE4.2 with 128 width (xmm registers) -else ifeq ($(MAKECMDGOALS),cppavx2) - override AVX = avx2 # AVX2 with 256 width (ymm registers) [DEFAULT for clang] -else ifeq ($(MAKECMDGOALS),cpp512y) - override AVX = 512y # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] -else ifeq ($(MAKECMDGOALS),cpp512z) - override AVX = 512z # AVX512 with 512 width (zmm registers) +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z endif # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 554d7a704c..63bc407811 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) From 35d6aee82a2d35c5b291122a8fe1284065cece3b Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 28 Aug 2023 11:56:42 +0200 Subject: [PATCH 26/83] Added else case in AVX configuration --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 5cc00243bc..5d39b675c9 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -272,6 +272,8 @@ else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEF override AVX = 512y else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) override AVX = 512z +else + override AVX = none endif # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too From b611e9e683243303cba72ccd699e478bd49c96f0 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 28 Aug 2023 13:31:27 +0200 Subject: [PATCH 27/83] Port changes to BUILDDIRTAG to cudacpp_src.mk --- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 63bc407811..9726fbd0e8 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -177,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) From fbdb45af91ed5c3ee44920dc2e1e63c05ac09ab6 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 28 Aug 2023 15:30:03 +0200 Subject: [PATCH 28/83] Added build specific clean targets in cudacpp.mk and cudacpp_src.mk --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 27 ++++++++++++++++- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 30 +++++++++++++++++-- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 5d39b675c9..5bf52c3c5f 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -755,7 +755,11 @@ cuda: $(cu_main) clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) + ifeq ($(shell test $$(words $$(wildcard build.*)) -gt 1; echo $$?), 0) + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) + else + rm -rf build.* + endif else rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @@ -777,6 +781,27 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 9726fbd0e8..fd9560c469 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -283,8 +283,12 @@ endif clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) + ifeq ($(shell test $$(words $$(wildcard build.*)) -gt 1; echo $$?), 0) + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) + else + rm -rf $(LIBDIR)/build.* + rm -rf build.* + endif else rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @@ -297,4 +301,26 @@ cleanall: rm -rf $(LIBDIR)/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf $(LIBDIR)/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf $(LIBDIR)/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf $(LIBDIR)/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf $(LIBDIR)/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf $(LIBDIR)/build.512z_* + rm -rf build.512z_* + #------------------------------------------------------------------------------- From b86bf3cfd9d4f65193fc243745a2ea38f7492b53 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 28 Aug 2023 17:08:07 +0200 Subject: [PATCH 29/83] Fixed cleanall with new clean targets --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 5 +++-- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 5bf52c3c5f..6b5a2ecde8 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -769,9 +769,10 @@ endif cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index fd9560c469..5ff82b3ae8 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -296,7 +296,8 @@ endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo rm -rf $(LIBDIR)/build.* rm -rf build.* From 8b22e9a83f9e50df3c861e37ee27daf72bd0097e Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 29 Aug 2023 09:27:51 +0200 Subject: [PATCH 30/83] Fixed indentations in the recipie of the targets --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 6b5a2ecde8..8332f35718 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -90,7 +90,7 @@ endif # Target if user does not specify target usage: - $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) #------------------------------------------------------------------------------- @@ -755,11 +755,11 @@ cuda: $(cu_main) clean: ifeq ($(USEBUILDDIR),1) - ifeq ($(shell test $$(words $$(wildcard build.*)) -gt 1; echo $$?), 0) - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) - else - rm -rf build.* - endif + ifeq ($(shell test $$(words $$(wildcard build.*)) -gt 1; echo $$?), 0) + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) + else + rm -rf build.* + endif else rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @@ -784,24 +784,24 @@ endif # Target: clean different builds cleannone: - rm -rf build.none_* - $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.none_* + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) cleansse4: - rm -rf build.sse4_* - $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.sse4_* + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) cleanavx2: - rm -rf build.avx2_* - $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.avx2_* + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) clean512y: - rm -rf build.512y_* - $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.512y_* + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) clean512z: - rm -rf build.512z_* - $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.512z_* + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- From f81f91fd2fea2ec3297eb61834962c27735572f3 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 29 Aug 2023 09:36:40 +0200 Subject: [PATCH 31/83] Redid the detection of multiple BUILDDIRS when user runs clean --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 10 +++++++--- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 14 +++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 8332f35718..380c442388 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -755,10 +755,14 @@ cuda: $(cu_main) clean: ifeq ($(USEBUILDDIR),1) - ifeq ($(shell test $$(words $$(wildcard build.*)) -gt 1; echo $$?), 0) - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) - else + BUILD_DIRS := $(wildcard build.*) + NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + + ifeq ($(NUM_BUILD_DIRS),1) + $(info Only one build directory found.) rm -rf build.* + else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 5ff82b3ae8..cf84a55d9c 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -283,12 +283,16 @@ endif clean: ifeq ($(USEBUILDDIR),1) - ifeq ($(shell test $$(words $$(wildcard build.*)) -gt 1; echo $$?), 0) - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) - else - rm -rf $(LIBDIR)/build.* + BUILD_DIRS := $(wildcard build.*) + NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + + ifeq ($(NUM_BUILD_DIRS),1) + $(info Only one build directory found.) + rm -rf $(LIBDIR)/build.* rm -rf build.* - endif + else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) + endif else rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe From ea4c807060df033a132f37e36c1ae4de13931c10 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 29 Aug 2023 09:37:35 +0200 Subject: [PATCH 32/83] Fixed indentation mistake --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 +- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 380c442388..fb89bb874a 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -762,7 +762,7 @@ ifeq ($(USEBUILDDIR),1) $(info Only one build directory found.) rm -rf build.* else - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index cf84a55d9c..55aee9d3c3 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -291,7 +291,7 @@ ifeq ($(USEBUILDDIR),1) rm -rf $(LIBDIR)/build.* rm -rf build.* else - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so From b39d75b7f2fde2fc5c65abf89582fa9f895e073b Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 29 Aug 2023 15:20:05 +0200 Subject: [PATCH 33/83] Fixed intendation again in cudacpp_src.mk cleanall --- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 55aee9d3c3..b048a48f6a 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -283,7 +283,7 @@ endif clean: ifeq ($(USEBUILDDIR),1) - BUILD_DIRS := $(wildcard build.*) + BUILD_DIRS := $(wildcard build.*) NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) ifeq ($(NUM_BUILD_DIRS),1) From 578e5b487d6e7b104692ec9204a81931b754b209 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 4 Sep 2023 16:28:09 +0200 Subject: [PATCH 34/83] First iteration of changes to makefile.mk --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 74db44d848..51b0236d70 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -9,6 +9,14 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra +# Default goal + +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -48,10 +56,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(MAKECMDGOALS) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -115,8 +123,8 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.cudacpplibs: - $(MAKE) -f $(CUDACPP_MAKEFILE) +$(CUDACPP_BUILDDIR)/.$(MAKECMDGOALS)libs: + $(MAKE) -f $(CUDACPP_MAKEFILE) $(MAKECMDGOALS) touch $@ # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH @@ -147,9 +155,9 @@ madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) $(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -215,32 +223,37 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif -avxnone: $(PROG)_fortran $(DSIG_cudacpp) +ALL: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda + +cppnone: $(PROG)_fortran $(DSIG_cudacpp) @echo - $(MAKE) USEBUILDDIR=1 AVX=none + $(MAKE) USEBUILDDIR=1 cppnone -avxsse4: $(PROG)_fortran $(DSIG_cudacpp) +cppsse4: $(PROG)_fortran $(DSIG_cudacpp) @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 + $(MAKE) USEBUILDDIR=1 cppsse4 -avxavx2: $(PROG)_fortran $(DSIG_cudacpp) +cppavx2: $(PROG)_fortran $(DSIG_cudacpp) @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 + $(MAKE) USEBUILDDIR=1 cppavx2 -avx512y: $(PROG)_fortran $(DSIG_cudacpp) +cpp512y: $(PROG)_fortran $(DSIG_cudacpp) @echo - $(MAKE) USEBUILDDIR=1 AVX=512y + $(MAKE) USEBUILDDIR=1 cpp512y -avx512z: $(PROG)_fortran $(DSIG_cudacpp) +cpp512z: $(PROG)_fortran $(DSIG_cudacpp) @echo - $(MAKE) USEBUILDDIR=1 AVX=512z + $(MAKE) USEBUILDDIR=1 cpp512z + +cuda: + $(CUDACPP_BUILDDIR)/$(PROG)_cuda ###endif @@ -249,7 +262,10 @@ avx512z: $(PROG)_fortran $(DSIG_cudacpp) clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda -cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src +clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda + +cleancpp: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs rm -f .libs From f755f8a6c0e1c953327cc203902c18c0296fc016 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 4 Sep 2023 16:45:05 +0200 Subject: [PATCH 35/83] Added more clean targets --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 51b0236d70..e9887a9dce 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -259,21 +259,33 @@ cuda: # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +clean: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + +cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + +clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + +clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + +cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda cleancpp: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs - rm -f .libs + $(RM) $(CUDACPP_BUILDDIR)/.cudacpplibs + $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall rm -rf $(LIBDIR)libbias.$(libext) - rm -f ../../Source/*.mod ../../Source/*/*.mod + $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation $(MAKE) -f $(CUDACPP_MAKEFILE) distclean From 38beccc10045b113db9cdd49bbb074db476b5d0d Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 5 Sep 2023 11:44:47 +0200 Subject: [PATCH 36/83] Removed warning using MAKECMDGOAL --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index e9887a9dce..09dc711dac 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -13,9 +13,15 @@ CXXFLAGS = -O3 -Wall -Wshadow -Wextra .DEFAULT_GOAL := usage +ifndef $(MAKECMDGOAL) + TARGET := undefined +else + TARGET := $(MAKECMDGOAL) +endif + # Target if user does not specify target usage: - $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) @@ -59,7 +65,7 @@ CUDACPP_MAKEFILE=cudacpp.mk CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(MAKECMDGOALS) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -123,8 +129,8 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.$(MAKECMDGOALS)libs: - $(MAKE) -f $(CUDACPP_MAKEFILE) $(MAKECMDGOALS) +$(CUDACPP_BUILDDIR)/.$(TARGET)libs: + $(MAKE) -f $(CUDACPP_MAKEFILE) $(TARGET) touch $@ # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH @@ -284,7 +290,7 @@ cleancpp: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall - rm -rf $(LIBDIR)libbias.$(libext) + $(RM) -r $(LIBDIR)libbias.$(libext) $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation From e7e85e9f8ec0c69957924e02d9397d0ba2b954c9 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 5 Sep 2023 16:16:51 +0200 Subject: [PATCH 37/83] Removed recursiveness in target --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 09dc711dac..cc9076cc43 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -239,27 +239,16 @@ endif ALL: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda cppnone: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 cppnone cppsse4: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 cppsse4 cppavx2: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 cppavx2 cpp512y: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 cpp512y cpp512z: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 cpp512z -cuda: - $(CUDACPP_BUILDDIR)/$(PROG)_cuda +cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cuda ###endif From 97c38e2372b73f81c611e86e4aafa44f407789ac Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 5 Sep 2023 16:22:29 +0200 Subject: [PATCH 38/83] Fixed cleanall bug --- epochX/cudacpp/gg_tt.mad/Source/makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/Source/makefile b/epochX/cudacpp/gg_tt.mad/Source/makefile index dbe08b846e..dfa319975c 100644 --- a/epochX/cudacpp/gg_tt.mad/Source/makefile +++ b/epochX/cudacpp/gg_tt.mad/Source/makefile @@ -137,4 +137,4 @@ clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; cleanall: cleanSource - for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleancpp; cd -; done; From f2eb850ab7d2d38aad36d85c26a906016890ff93 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 6 Sep 2023 11:42:31 +0200 Subject: [PATCH 39/83] Fixed error with clean not detecting the build directories --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 10 +++++++--- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index fb89bb874a..a151cb761f 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -753,11 +753,11 @@ cuda: $(cu_main) # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - BUILD_DIRS := $(wildcard build.*) - NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) - ifeq ($(NUM_BUILD_DIRS),1) $(info Only one build directory found.) rm -rf build.* @@ -807,6 +807,10 @@ clean512z: rm -rf build.512z_* $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) +cleancuda: + rm -rf build.cuda_* + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index b048a48f6a..46329af540 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -281,11 +281,11 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - BUILD_DIRS := $(wildcard build.*) - NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) - ifeq ($(NUM_BUILD_DIRS),1) $(info Only one build directory found.) rm -rf $(LIBDIR)/build.* @@ -328,4 +328,8 @@ clean512z: rm -rf $(LIBDIR)/build.512z_* rm -rf build.512z_* +cleancuda: + rm -rf $(LIBDIR)/build.cuda_* + rm -rf build.cuda_* + #------------------------------------------------------------------------------- From b41069fe48b2396904f6e3783434e122e7ca80bd Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 6 Sep 2023 11:43:46 +0200 Subject: [PATCH 40/83] Fixed indentation in clean target --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 12 ++++++------ epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index a151cb761f..74ad72a262 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -758,12 +758,12 @@ NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: ifeq ($(USEBUILDDIR),1) - ifeq ($(NUM_BUILD_DIRS),1) - $(info Only one build directory found.) - rm -rf build.* - else - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) - endif +ifeq ($(NUM_BUILD_DIRS),1) + $(info Only one build directory found.) + rm -rf build.* +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif else rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 46329af540..9259216d01 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -286,13 +286,13 @@ NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: ifeq ($(USEBUILDDIR),1) - ifeq ($(NUM_BUILD_DIRS),1) - $(info Only one build directory found.) - rm -rf $(LIBDIR)/build.* - rm -rf build.* - else - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) - endif +ifeq ($(NUM_BUILD_DIRS),1) + $(info Only one build directory found.) + rm -rf $(LIBDIR)/build.* + rm -rf build.* +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif else rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe From f2c9c453713aa0bf67c0f1db0774cced9d45b761 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 6 Sep 2023 14:54:02 +0200 Subject: [PATCH 41/83] Fixed edgecase where target is madevent_* and the actual target variable does not get set correctly --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index cc9076cc43..5b8d13d5c7 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -16,7 +16,11 @@ CXXFLAGS = -O3 -Wall -Wshadow -Wextra ifndef $(MAKECMDGOAL) TARGET := undefined else - TARGET := $(MAKECMDGOAL) + ifneq (,$(findstring madevent_*,$(MAKECMDGOAL))) + TARGET := $(patsubst %_%,%,$(MAKECMDGOAL)) + else + TARGET := $(MAKECMDGOAL) + endif endif # Target if user does not specify target @@ -150,7 +154,23 @@ madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) -madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) @@ -159,10 +179,10 @@ madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.$(TARGET)libs $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.$(TARGET)libs $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h @@ -238,17 +258,17 @@ endif ALL: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda -cppnone: $(PROG)_fortran $(DSIG_cudacpp) +cppnone: $(CUDACPP_BUILDDIR)/.$(TARGET)libs -cppsse4: $(PROG)_fortran $(DSIG_cudacpp) +cppsse4: $(CUDACPP_BUILDDIR)/.$(TARGET)libs -cppavx2: $(PROG)_fortran $(DSIG_cudacpp) +cppavx2: $(CUDACPP_BUILDDIR)/.$(TARGET)libs -cpp512y: $(PROG)_fortran $(DSIG_cudacpp) +cpp512y: $(CUDACPP_BUILDDIR)/.$(TARGET)libs -cpp512z: $(PROG)_fortran $(DSIG_cudacpp) +cpp512z: $(CUDACPP_BUILDDIR)/.$(TARGET)libs -cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cuda +cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs ###endif From db55dccadd7057034d00f65840cdf712af383ece Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 6 Sep 2023 14:55:44 +0200 Subject: [PATCH 42/83] Fixed cudacpp_src.mk indentation in target --- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 9259216d01..5db19f3584 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -329,7 +329,7 @@ clean512z: rm -rf build.512z_* cleancuda: - rm -rf $(LIBDIR)/build.cuda_* + rm -rf $(LIBDIR)/build.cuda_* rm -rf build.cuda_* #------------------------------------------------------------------------------- From df702004efbee9dab8f1f9b374f3c0ff44138e1e Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 12 Sep 2023 09:32:12 +0200 Subject: [PATCH 43/83] Fixed typo in makefile --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 5b8d13d5c7..eec56bdfff 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -13,20 +13,22 @@ CXXFLAGS = -O3 -Wall -Wshadow -Wextra .DEFAULT_GOAL := usage -ifndef $(MAKECMDGOAL) +# Target if user does not specify target +usage: + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +# Sets correct target based on MAKECMDGOALS + +ifndef $(MAKECMDGOALS) TARGET := undefined else - ifneq (,$(findstring madevent_*,$(MAKECMDGOAL))) - TARGET := $(patsubst %_%,%,$(MAKECMDGOAL)) + ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) + TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) else - TARGET := $(MAKECMDGOAL) + TARGET := $(MAKECMDGOALS) endif endif -# Target if user does not specify target -usage: - $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) - # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -270,8 +272,6 @@ cpp512z: $(CUDACPP_BUILDDIR)/.$(TARGET)libs cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs -###endif - # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) clean: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn From c890fc0bb5cfdc6975bab723ec82984c472ed9ce Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 12 Sep 2023 18:31:57 +0200 Subject: [PATCH 44/83] make clean and make cleanavx/cuda now correctly cleans --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 8 +++-- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 29 +++++++++++++++++-- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 9 ++++-- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 74ad72a262..3eeee67a93 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -765,11 +765,10 @@ else $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo @@ -811,6 +810,11 @@ cleancuda: rm -rf build.cuda_* $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) +cleandir: + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index eec56bdfff..9440fe176e 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -19,7 +19,7 @@ usage: # Sets correct target based on MAKECMDGOALS -ifndef $(MAKECMDGOALS) +ifeq ($(MAKECMDGOALS),) TARGET := undefined else ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) @@ -274,23 +274,48 @@ cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn +BUILD_DIRS := $(wildcard build.*) +BUILD_TARGET := $(shell echo $(CUDACPP_BUILDDIR) | sed 's/.*\.\(.*\)-.*/\1/') +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + +clean: +ifeq ($(USEBUILDDIR),1) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1 only cleaning build dir.) + $(RM) -r $(BUILD_DIRS) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET) +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + $(info USEBUILDDIR=0 only cleaning build with no dir.) + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* + $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir +endif + +cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda + $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda cleancpp: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 5db19f3584..9e66e230d3 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -282,6 +282,7 @@ endif .PHONY: clean BUILD_DIRS := $(wildcard build.*) + NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: @@ -294,8 +295,8 @@ else $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @@ -332,4 +333,8 @@ cleancuda: rm -rf $(LIBDIR)/build.cuda_* rm -rf build.cuda_* +cleandir: + rm -f $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + #------------------------------------------------------------------------------- From dc77630d7b111264eeef411dc2b64927b7c7b159 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 13 Sep 2023 11:20:35 +0200 Subject: [PATCH 45/83] Fixed cleandir in cudacpp.mk calling cleannone in cudacpp_src.mk --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 +- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 3eeee67a93..d6a184150e 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -813,7 +813,7 @@ cleancuda: cleandir: rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so - $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 9e66e230d3..5f2307f4de 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -334,7 +334,7 @@ cleancuda: rm -rf build.cuda_* cleandir: - rm -f $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so + rm -f $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe #------------------------------------------------------------------------------- From b680caea5896a39b9e0b011b0936532d726cbb69 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 13 Sep 2023 18:07:11 +0200 Subject: [PATCH 46/83] Added removing the lockfile in make clean --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 9440fe176e..9a6f0ef470 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -291,6 +291,7 @@ else $(info USEBUILDDIR=0 only cleaning build with no dir.) $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir + $(RM) $(CUDACPP_BUILDDIR)/.*libs endif cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn @@ -319,7 +320,7 @@ cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn cleancpp: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - $(RM) $(CUDACPP_BUILDDIR)/.cudacpplibs + $(RM) $(CUDACPP_BUILDDIR)/.*libs $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src From 8583d62fd8c415d9a182396601108fd2953d6091 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 14 Sep 2023 14:34:01 +0200 Subject: [PATCH 47/83] Fixed syntax in make clean logic, now corectly cleans lockfile --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 9a6f0ef470..c5f18d9d7e 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -20,13 +20,13 @@ usage: # Sets correct target based on MAKECMDGOALS ifeq ($(MAKECMDGOALS),) - TARGET := undefined + TARGET := undefined else - ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) - TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) - else - TARGET := $(MAKECMDGOALS) - endif + ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) + TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) + else + TARGET := $(MAKECMDGOALS) + endif endif # Enable ccache if USECCACHE=1 @@ -275,7 +275,7 @@ cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) BUILD_DIRS := $(wildcard build.*) -BUILD_TARGET := $(shell echo $(CUDACPP_BUILDDIR) | sed 's/.*\.\(.*\)-.*/\1/') +BUILD_TARGET_DIR := $(shell echo $(CUDACPP_BUILDDIR) | sed 's/.*\.\(.*\)-.*/\1/') NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: @@ -283,7 +283,7 @@ ifeq ($(USEBUILDDIR),1) ifeq ($(NUM_BUILD_DIRS),1) $(info USEBUILDDIR=1 only cleaning build dir.) $(RM) -r $(BUILD_DIRS) - $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) else $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif From 3826d1628095555ea049cf95d1e3f33268aebb19 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 14 Sep 2023 15:11:28 +0200 Subject: [PATCH 48/83] Added ifeq if no directories are found in make clean --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index c5f18d9d7e..91c7ed0664 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -275,7 +275,7 @@ cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) BUILD_DIRS := $(wildcard build.*) -BUILD_TARGET_DIR := $(shell echo $(CUDACPP_BUILDDIR) | sed 's/.*\.\(.*\)-.*/\1/') +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | sed 's/.*\.\(.*\)-.*/\1/') NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: @@ -284,6 +284,8 @@ ifeq ($(NUM_BUILD_DIRS),1) $(info USEBUILDDIR=1 only cleaning build dir.) $(RM) -r $(BUILD_DIRS) $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif From ccc49ed366bc665472f5fc3331457b6928376f2f Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 14 Sep 2023 15:23:42 +0200 Subject: [PATCH 49/83] Fixed extraction of avx level in make clean --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 91c7ed0664..e4106b6625 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -275,7 +275,7 @@ cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) BUILD_DIRS := $(wildcard build.*) -BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | sed 's/.*\.\(.*\)-.*/\1/') +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}) NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: From c9af7a8501fd81a2d648cafb0a9a57a7edb593ab Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 14 Sep 2023 17:02:16 +0200 Subject: [PATCH 50/83] Fixed lib directory not getting properly cleaned --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 ++ epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 25 ++++++++++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index d6a184150e..e9e5661581 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -761,6 +761,8 @@ ifeq ($(USEBUILDDIR),1) ifeq ($(NUM_BUILD_DIRS),1) $(info Only one build directory found.) rm -rf build.* +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 5f2307f4de..95d897b145 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -282,59 +282,60 @@ endif .PHONY: clean BUILD_DIRS := $(wildcard build.*) - NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: ifeq ($(USEBUILDDIR),1) ifeq ($(NUM_BUILD_DIRS),1) $(info Only one build directory found.) - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else - rm -f $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so + rm -f ../lib/.build.* ../lib/lib$(MG5AMC_COMMONLIB).so rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* # Target: clean different builds cleannone: - rm -rf $(LIBDIR)/build.none_* + rm -rf ../lib/build.none_* rm -rf build.none_* cleansse4: - rm -rf $(LIBDIR)/build.sse4_* + rm -rf ../lib/build.sse4_* rm -rf build.sse4_* cleanavx2: - rm -rf $(LIBDIR)/build.avx2_* + rm -rf ../lib/build.avx2_* rm -rf build.avx2_* clean512y: - rm -rf $(LIBDIR)/build.512y_* + rm -rf ../lib/build.512y_* rm -rf build.512y_* clean512z: - rm -rf $(LIBDIR)/build.512z_* + rm -rf ../lib/build.512z_* rm -rf build.512z_* cleancuda: - rm -rf $(LIBDIR)/build.cuda_* + rm -rf ../lib/build.cuda_* rm -rf build.cuda_* cleandir: - rm -f $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe #------------------------------------------------------------------------------- From dbbb79598e34cc0c50b744d38105d104e73cffad Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 19 Sep 2023 16:54:55 +0200 Subject: [PATCH 51/83] Reworked targets to allow for compilation using ALL target --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index e4106b6625..b3db798f50 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -71,12 +71,6 @@ CUDACPP_MAKEFILE=cudacpp.mk CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -ifeq ($(CUDACPP_BUILDDIR),) -$(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) -else -$(info CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)') -endif CUDACPP_COMMONLIB=mg5amc_common CUDACPP_CXXLIB=mg5amc_$(processid_short)_cpp CUDACPP_CULIB=mg5amc_$(processid_short)_cuda @@ -156,26 +150,32 @@ madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +madevent_cppnone_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppsse4_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppavx2_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cpp512y_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cpp512z_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cuda_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cuda |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) @@ -258,18 +258,32 @@ else cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif +ALL: USEBUILDDIR=1 ALL: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda + +cppnone: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +cppnone: TARGET = cppnone cppnone: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppsse4: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +cppsse4: TARGET = cppsse4 cppsse4: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppavx2: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +cppavx2: TARGET = cppavx2 cppavx2: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cpp512y: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +cpp512y: TARGET = cpp512y cpp512y: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cpp512z: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +cpp512z: TARGET = cpp512z cpp512z: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cuda: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +cuda: TARGET = cuda cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) From bfc773935c97ea51e3293f2b9be7aa98ceee2369 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 21 Sep 2023 11:43:46 +0200 Subject: [PATCH 52/83] Absorbed the initial target calling cudacpp.mk into each seperate avx/cuda target --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index b3db798f50..976fcee57b 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -129,10 +129,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.$(TARGET)libs: - $(MAKE) -f $(CUDACPP_MAKEFILE) $(TARGET) - touch $@ - # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary @@ -258,33 +254,33 @@ else cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif -ALL: USEBUILDDIR=1 -ALL: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda +all: USEBUILDDIR=1 +all: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda cppnone: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cppnone: TARGET = cppnone -cppnone: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppnone: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone +cppnone: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs cppsse4: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cppsse4: TARGET = cppsse4 -cppsse4: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppsse4: $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 +cppsse4: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs cppavx2: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cppavx2: TARGET = cppavx2 -cppavx2: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppavx2: $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 +cppavx2: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs cpp512y: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cpp512y: TARGET = cpp512y -cpp512y: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cpp512y: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y +cpp512y: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs cpp512z: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cpp512z: TARGET = cpp512z -cpp512z: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cpp512z: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z +cpp512z: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs cuda: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cuda: TARGET = cuda -cuda: $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cuda: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone +cuda: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) From 4d4866b177b12f75b90eb4df40e62afb1896db3c Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 21 Sep 2023 13:49:18 +0200 Subject: [PATCH 53/83] Fixed madevent_avx/cuda_link targets --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 48 +++++++------------ 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 976fcee57b..fdb7798400 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -17,18 +17,6 @@ CXXFLAGS = -O3 -Wall -Wshadow -Wextra usage: $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) -# Sets correct target based on MAKECMDGOALS - -ifeq ($(MAKECMDGOALS),) - TARGET := undefined -else - ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) - TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) - else - TARGET := $(MAKECMDGOALS) - endif -endif - # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -140,47 +128,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) madevent_cppnone_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppnone rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) madevent_cppsse4_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppsse4 rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) madevent_cppavx2_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) madevent_cpp512y_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512y rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) madevent_cpp512z_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512z rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) madevent_cuda_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cuda |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda +madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.$(TARGET)libs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.$(TARGET)libs +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h @@ -254,38 +242,38 @@ else cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif -all: USEBUILDDIR=1 -all: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda +ALL: USEBUILDDIR=1 +ALL: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda cppnone: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) cppnone: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -cppnone: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppnone: touch $(CUDACPP_BUILDDIR)/.cppnonelibs cppsse4: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) cppsse4: $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -cppsse4: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppsse4: touch $(CUDACPP_BUILDDIR)/.cppsse4libs cppavx2: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) cppavx2: $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -cppavx2: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cppavx2: touch $(CUDACPP_BUILDDIR)/.cppavx2libs cpp512y: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) cpp512y: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -cpp512y: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cpp512y: touch $(CUDACPP_BUILDDIR)/.cpp512ylibs cpp512z: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) cpp512z: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z -cpp512z: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cpp512z: touch $(CUDACPP_BUILDDIR)/.cpp512zlibs cuda: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) cuda: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -cuda: touch $(CUDACPP_BUILDDIR)/.$(TARGET)libs +cuda: touch $(CUDACPP_BUILDDIR)/.cppnonelibs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) BUILD_DIRS := $(wildcard build.*) -BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}) +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: From 3fa5b76dccdea352baf854d5c423ce4271355ffc Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 21 Sep 2023 15:21:53 +0200 Subject: [PATCH 54/83] ALL target now calls the makefile itself for compiling avx/cuda targets --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index fdb7798400..5b85eda147 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -242,9 +242,13 @@ else cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif -ALL: USEBUILDDIR=1 -ALL: cppnone cppsse4 cppavx2 cpp512y cpp512z cuda - +ALL: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z + $(MAKE) USEBUILDDIR=1 cuda cppnone: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) cppnone: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone From 83bacca8cd101e00ebe8add92adfbee4cf0fde98 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 21 Sep 2023 17:27:42 +0200 Subject: [PATCH 55/83] Last revision of targets --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 5b85eda147..a0a2415ee8 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -250,29 +250,35 @@ ALL: $(MAKE) USEBUILDDIR=1 cpp512z $(MAKE) USEBUILDDIR=1 cuda -cppnone: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cppnone: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -cppnone: touch $(CUDACPP_BUILDDIR)/.cppnonelibs - -cppsse4: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cppsse4: $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -cppsse4: touch $(CUDACPP_BUILDDIR)/.cppsse4libs - -cppavx2: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cppavx2: $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -cppavx2: touch $(CUDACPP_BUILDDIR)/.cppavx2libs - -cpp512y: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cpp512y: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -cpp512y: touch $(CUDACPP_BUILDDIR)/.cpp512ylibs - -cpp512z: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cpp512z: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z -cpp512z: touch $(CUDACPP_BUILDDIR)/.cpp512zlibs - -cuda: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -cuda: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -cuda: touch $(CUDACPP_BUILDDIR)/.cppnonelibs +cppnone: + CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone + touch $(CUDACPP_BUILDDIR)/.cppnonelibs + +cppsse4: + CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) + $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 + touch $(CUDACPP_BUILDDIR)/.cppsse4libs + +cppavx2: + CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) + $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 + touch $(CUDACPP_BUILDDIR)/.cppavx2libs + +cpp512y: + CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y + touch $(CUDACPP_BUILDDIR)/.cpp512ylibs + +cpp512z: + CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z + touch $(CUDACPP_BUILDDIR)/.cpp512zlibs + +cuda: + CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone + touch $(CUDACPP_BUILDDIR)/.cppnonelibs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) From f1a270445ebb852fa32b698b15eadf35d238e874 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 22 Sep 2023 11:41:43 +0200 Subject: [PATCH 56/83] Did some refactoring of the makefile to remove recurring lines --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index a0a2415ee8..125d4b7159 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -9,8 +9,18 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra -# Default goal +# Sets correct target based on MAKECMDGOALS +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else + ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) + TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) + else + TARGET := $(MAKECMDGOALS) + endif +endif +# Default goal .DEFAULT_GOAL := usage # Target if user does not specify target @@ -59,6 +69,12 @@ CUDACPP_MAKEFILE=cudacpp.mk CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +ifeq ($(CUDACPP_BUILDDIR),) +$(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) +else +$(info CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)') +endif CUDACPP_COMMONLIB=mg5amc_common CUDACPP_CXXLIB=mg5amc_$(processid_short)_cpp CUDACPP_CULIB=mg5amc_$(processid_short)_cuda @@ -134,32 +150,26 @@ madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) -madevent_cppnone_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppnone rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cppsse4_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppsse4 rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cppavx2_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cpp512y_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512y rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cpp512z_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512z rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cuda_link: CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cuda |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) @@ -251,34 +261,28 @@ ALL: $(MAKE) USEBUILDDIR=1 cuda cppnone: - CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppnone |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone touch $(CUDACPP_BUILDDIR)/.cppnonelibs cppsse4: - CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppsse4 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 touch $(CUDACPP_BUILDDIR)/.cppsse4libs cppavx2: - CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cppavx2 |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 touch $(CUDACPP_BUILDDIR)/.cppavx2libs cpp512y: - CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512y |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y touch $(CUDACPP_BUILDDIR)/.cpp512ylibs cpp512z: - CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z touch $(CUDACPP_BUILDDIR)/.cpp512zlibs cuda: - CUDACPP_BUILDDIR = $(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn cpp512z |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) - $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone - touch $(CUDACPP_BUILDDIR)/.cppnonelibs + $(MAKE) -f $(CUDACPP_MAKEFILE) cuda + touch $(CUDACPP_BUILDDIR)/.cudalibs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) From 6cc72f79f6efc6aca02122503888bd0bccd46e51 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 22 Sep 2023 17:05:57 +0200 Subject: [PATCH 57/83] Code cleanup --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 4 ++-- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 17 +++++++++++++---- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 10 +++++----- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index e9e5661581..4ad0be2bac 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -759,8 +759,8 @@ NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: ifeq ($(USEBUILDDIR),1) ifeq ($(NUM_BUILD_DIRS),1) - $(info Only one build directory found.) - rm -rf build.* + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) else ifeq ($(NUM_BUILD_DIRS),0) $(error USEBUILDDIR=1, but no build directories are found.) else diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 125d4b7159..b74b11b6d4 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -245,11 +245,20 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -cppall: cppnone cppsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else ifeq ($(UNAME_P),arm) -cppall: cppnone cppsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else -cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z endif ALL: @@ -293,7 +302,7 @@ NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: ifeq ($(USEBUILDDIR),1) ifeq ($(NUM_BUILD_DIRS),1) - $(info USEBUILDDIR=1 only cleaning build dir.) + $(info USEBUILDDIR=1, only cleaning build dir.) $(RM) -r $(BUILD_DIRS) $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) else ifeq ($(NUM_BUILD_DIRS),0) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 95d897b145..37a3ee9e0a 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -287,13 +287,13 @@ NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) clean: ifeq ($(USEBUILDDIR),1) ifeq ($(NUM_BUILD_DIRS),1) - $(info Only one build directory found.) - rm -rf ../lib/build.* - rm -rf build.* + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) else ifeq ($(NUM_BUILD_DIRS),0) - $(error USEBUILDDIR=1, but no build directories are found.) + $(error USEBUILDDIR=1, but no src build directories are found.) else - $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else rm -f ../lib/lib$(MG5AMC_COMMONLIB).so From cd392613bf76a29bdab4fa5144439f2c8e3ce96f Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 25 Sep 2023 17:01:30 +0200 Subject: [PATCH 58/83] Reverted change to Source makefile, no patch needed now --- epochX/cudacpp/gg_tt.mad/Source/makefile | 2 +- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/Source/makefile b/epochX/cudacpp/gg_tt.mad/Source/makefile index dfa319975c..dbe08b846e 100644 --- a/epochX/cudacpp/gg_tt.mad/Source/makefile +++ b/epochX/cudacpp/gg_tt.mad/Source/makefile @@ -137,4 +137,4 @@ clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; cleanall: cleanSource - for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleancpp; cd -; done; + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index b74b11b6d4..44cf2d7b1b 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -341,7 +341,7 @@ cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda -cleancpp: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src +cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall $(RM) $(CUDACPP_BUILDDIR)/.*libs $(RM) .libs From 7d15b06b514af0e7bad2fc505c18f50fc84fbb8a Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 25 Sep 2023 17:04:16 +0200 Subject: [PATCH 59/83] Fixed lockfiles not getting cleaned properly --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 11 +++++++++-- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 8 +++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 4ad0be2bac..e11c8a465c 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -790,31 +790,38 @@ endif # Target: clean different builds cleannone: rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) cleansse4: rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) cleanavx2: rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) clean512y: rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) clean512z: rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) cleancuda: rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) cleandir: - rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe - rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + rm -f ./.build.* $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 37a3ee9e0a..056f850c3a 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -296,8 +296,8 @@ else $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else - rm -f ../lib/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f ../lib/.build.* ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @@ -335,7 +335,9 @@ cleancuda: rm -rf build.cuda_* cleandir: + rm -f ./*.o ./*.exe rm -f ../lib/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f ../lib/.build.* + rm -f ./.build.* #------------------------------------------------------------------------------- From 752d336090ae39c0fccba67ba9a4eecf3adb2e01 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 25 Sep 2023 17:16:36 +0200 Subject: [PATCH 60/83] Fixed indentation --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index e11c8a465c..f4279cb898 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -790,38 +790,38 @@ endif # Target: clean different builds cleannone: rm -rf build.none_* - rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) cleansse4: rm -rf build.sse4_* - rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) cleanavx2: rm -rf build.avx2_* - rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) clean512y: rm -rf build.512y_* - rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) clean512z: rm -rf build.512z_* - rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) cleancuda: rm -rf build.cuda_* - rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) cleandir: rm -f ./*.o ./*.exe rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so - rm -f ./.build.* + rm -f ./.build.* $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -872,11 +872,8 @@ endif # Target: check (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFcheck cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) From c121b0dda46a43fa85301f914704d8ba3671176a Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 25 Sep 2023 17:19:13 +0200 Subject: [PATCH 61/83] Fixed indentation in cudacpp_src.mk --- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 056f850c3a..9b9e62fb33 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -335,9 +335,9 @@ cleancuda: rm -rf build.cuda_* cleandir: - rm -f ./*.o ./*.exe + rm -f ./*.o ./*.exe rm -f ../lib/lib$(MG5AMC_COMMONLIB).so - rm -f ../lib/.build.* - rm -f ./.build.* + rm -f ../lib/.build.* + rm -f ./.build.* #------------------------------------------------------------------------------- From 7511431cee27b1a225163febf259e12ea64e7750 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Mon, 25 Sep 2023 17:30:28 +0200 Subject: [PATCH 62/83] gCheck and check are now to seperate targets for use in CI --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index f4279cb898..8865a3de99 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -731,6 +731,8 @@ cpp512y: $(cxx_main) cpp512z: $(cxx_main) +cuda: $(cu_main) + ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 cppall: cppnone cppsse4 @@ -742,12 +744,6 @@ else cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif -# -# CUDA Target -# - -cuda: $(cu_main) - #------------------------------------------------------------------------------- # Target: clean the builds @@ -870,10 +866,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] check: runTest cmpFcheck -gcheck: runTest cmpFcheck cmpFGcheck +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) From 328c921166e77eacc61954008d13ffc7e92e013c Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Tue, 26 Sep 2023 09:17:29 +0200 Subject: [PATCH 63/83] NVCC now gets properly configured when doing various tests --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index 8865a3de99..e599d65c76 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -113,7 +113,7 @@ endif #=== Configure the CUDA compiler for the CUDA target -ifeq ($(MAKECMDGOALS),cuda) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside From df045977ca0400a1e9f1938f6cdaac2b929a2f18 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 27 Sep 2023 15:10:39 +0200 Subject: [PATCH 64/83] Removed the creation of lockfiles --- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 23 +++++--------- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 6 ---- epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 30 +++++-------------- 3 files changed, 14 insertions(+), 45 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index e599d65c76..f500cd0032 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -458,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -470,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -542,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -770,11 +763,10 @@ endif cleanall: @echo - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) - rm -rf build.* # Target: clean the builds as well as the gtest installation(s) distclean: cleanall @@ -817,7 +809,6 @@ cleancuda: cleandir: rm -f ./*.o ./*.exe rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so - rm -f ./.build.* $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 44cf2d7b1b..d9f0f5d09c 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -271,27 +271,21 @@ ALL: cppnone: $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone - touch $(CUDACPP_BUILDDIR)/.cppnonelibs cppsse4: $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 - touch $(CUDACPP_BUILDDIR)/.cppsse4libs cppavx2: $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 - touch $(CUDACPP_BUILDDIR)/.cppavx2libs cpp512y: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y - touch $(CUDACPP_BUILDDIR)/.cpp512ylibs cpp512z: $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z - touch $(CUDACPP_BUILDDIR)/.cpp512zlibs cuda: $(MAKE) -f $(CUDACPP_MAKEFILE) cuda - touch $(CUDACPP_BUILDDIR)/.cudalibs # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 9b9e62fb33..42fa1b1fd7 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -226,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -296,14 +282,14 @@ else $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) endif else - rm -f ../lib/.build.* ../lib/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - rm -f ../lib/.build.* ../lib/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo rm -rf ../lib/build.* rm -rf build.* @@ -337,7 +323,5 @@ cleancuda: cleandir: rm -f ./*.o ./*.exe rm -f ../lib/lib$(MG5AMC_COMMONLIB).so - rm -f ../lib/.build.* - rm -f ./.build.* #------------------------------------------------------------------------------- From 51828efe25c0c62074e60f3c3c3d149783e3ce57 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 27 Sep 2023 17:13:57 +0200 Subject: [PATCH 65/83] Added cpp target for testing --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index d9f0f5d09c..36a1e90b59 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -144,12 +144,17 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +# Only used for testing, should be removed in the future +madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppnone rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) From aace762f542a3e03ee45a2360eb3dd1024fa594f Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Wed, 27 Sep 2023 17:38:46 +0200 Subject: [PATCH 66/83] [CODEGEN] Ported changes in gg_tt.mad to codegen --- .../iolibs/template_files/gpu/cudacpp.mk | 393 ++++++++++-------- .../iolibs/template_files/gpu/cudacpp_src.mk | 171 +++++--- 2 files changed, 319 insertions(+), 245 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk index 49a5856085..8b2f12aabc 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -27,7 +27,6 @@ UNAME_S := $(shell uname -s) UNAME_P := $(shell uname -p) ###$(info UNAME_P='$(UNAME_P)') -include ../../Source/make_opts #------------------------------------------------------------------------------- #=== Configure common compiler flags for C++ and CUDA @@ -87,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -104,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %%bin/nvcc,%%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %%bin/nvcc,%%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -221,38 +231,12 @@ else ifneq ($(shell $(CXX) --version | egrep '^(clang)'),) override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT on clang (was not ok without or with nvcc before #578) else ifneq ($(shell $(CXX) --version | egrep '^(Apple clang)'),) -override OMPFLAGS = -fopenmp # disable OpenMP MT on Apple clang (builds fail in the CI #578) +override OMPFLAGS = # disable OpenMP MT on Apple clang (builds fail in the CI #578) else override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -277,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -296,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -390,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -449,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -461,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%%.o : %%.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%%.o : %%.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%%_cu.o : %%.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%%_cu.o : %%.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%%.o : %%.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%%.o : %%.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -533,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -555,7 +557,7 @@ endif $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: $(BUILDDIR)/fbridge.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: cxx_objects_lib += $(BUILDDIR)/fbridge.o $(LIBDIR)/lib$(MG5AMC_CXXLIB).so: $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cxx_objects_lib) - $(CXX) -shared -o $@ $(cxx_objects_lib) $(CXXLIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) $(LIBFLAGS) -fopenmp + $(CXX) -shared -o $@ $(cxx_objects_lib) $(CXXLIBFLAGSRPATH2) -L$(LIBDIR) -l$(MG5AMC_COMMONLIB) ifneq ($(NVCC),) $(LIBDIR)/lib$(MG5AMC_CULIB).so: $(BUILDDIR)/fbridge_cu.o @@ -712,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -748,22 +742,32 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) - rm -rf build.* + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.* # Target: clean the builds as well as the gtest installation(s) distclean: cleanall @@ -772,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -818,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -864,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp_src.mk b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp_src.mk index dac2e47d1d..3a24b15773 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp_src.mk +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%%.o : %%.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%%.o : %%.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%%_cu.o : %%.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%%_cu.o : %%.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- From 66d0191579fe3c4da1b42c3fb5a944e34e1cd184 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 08:58:38 +0200 Subject: [PATCH 67/83] [CODEGEN] Added patch to makefile to patch.common in codegen --- .../MG5aMC_patches/PROD/patch.common | 238 ++++++++++++++++++ 1 file changed, 238 insertions(+) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index 8f96dab5ef..18470e9ebf 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -340,3 +340,241 @@ index a056d3861..b70b548e5 100755 alljobs = misc.glob('ajob*', Pdir) #remove associated results.dat (ensure to not mix with all data) +diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +index 74db44d84..36a1e90b5 100644 +--- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile ++++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +@@ -9,6 +9,24 @@ FFLAGS+= -cpp + # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) + CXXFLAGS = -O3 -Wall -Wshadow -Wextra + ++# Sets correct target based on MAKECMDGOALS ++ifeq ($(MAKECMDGOALS),) ++ TARGET := undefined ++else ++ ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) ++ TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) ++ else ++ TARGET := $(MAKECMDGOALS) ++ endif ++endif ++ ++# Default goal ++.DEFAULT_GOAL := usage ++ ++# Target if user does not specify target ++usage: ++ $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) ++ + # Enable ccache if USECCACHE=1 + ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) + override CXX:=ccache $(CXX) +@@ -48,10 +66,10 @@ CUDACPP_MAKEFILE=cudacpp.mk + # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 + # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... + # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) +-CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") ++CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") + ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) + ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) +-CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ++CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) + ifeq ($(CUDACPP_BUILDDIR),) + $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) + else +@@ -115,10 +133,6 @@ $(LIBS): .libs + cd ../../Source; make + touch $@ + +-$(CUDACPP_BUILDDIR)/.cudacpplibs: +- $(MAKE) -f $(CUDACPP_MAKEFILE) +- touch $@ +- + # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH + # Use relative paths with respect to the executables ($ORIGIN on Linux) + # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary +@@ -130,26 +144,47 @@ else + override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' + endif + +-.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link ++.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link + + madevent_fortran_link: $(PROG)_fortran + rm -f $(PROG) + ln -s $(PROG)_fortran $(PROG) + +-madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp ++# Only used for testing, should be removed in the future ++madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 ++ rm -f $(PROG) ++ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) ++ ++madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppnone ++ rm -f $(PROG) ++ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) ++ ++madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppsse4 ++ rm -f $(PROG) ++ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) ++ ++madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 ++ rm -f $(PROG) ++ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) ++ ++madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512y ++ rm -f $(PROG) ++ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) ++ ++madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512z + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +-madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda ++madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda cuda + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) + + # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) +-$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs ++$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) +- if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi + +-$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp ++$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o ++ $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) + + counters.o: counters.cc timer.h + $(CXX) $(CXXFLAGS) -c $< -o $@ +@@ -215,49 +250,105 @@ genps.o: .libs + + UNAME_P := $(shell uname -p) + ifeq ($(UNAME_P),ppc64le) +-avxall: avxnone avxsse4 ++cppall: ++ $(MAKE) USEBUILDDIR=1 cppnone ++ $(MAKE) USEBUILDDIR=1 cppsse4 + else ifeq ($(UNAME_P),arm) +-avxall: avxnone avxsse4 ++cppall: ++ $(MAKE) USEBUILDDIR=1 cppnone ++ $(MAKE) USEBUILDDIR=1 cppsse4 + else +-avxall: avxnone avxsse4 avxavx2 avx512y avx512z ++cppall: ++ $(MAKE) USEBUILDDIR=1 cppnone ++ $(MAKE) USEBUILDDIR=1 cppsse4 ++ $(MAKE) USEBUILDDIR=1 cppavx2 ++ $(MAKE) USEBUILDDIR=1 cpp512y ++ $(MAKE) USEBUILDDIR=1 cpp512z + endif + +-avxnone: $(PROG)_fortran $(DSIG_cudacpp) +- @echo +- $(MAKE) USEBUILDDIR=1 AVX=none ++ALL: ++ $(MAKE) USEBUILDDIR=1 cppnone ++ $(MAKE) USEBUILDDIR=1 cppsse4 ++ $(MAKE) USEBUILDDIR=1 cppavx2 ++ $(MAKE) USEBUILDDIR=1 cpp512y ++ $(MAKE) USEBUILDDIR=1 cpp512z ++ $(MAKE) USEBUILDDIR=1 cuda + +-avxsse4: $(PROG)_fortran $(DSIG_cudacpp) +- @echo +- $(MAKE) USEBUILDDIR=1 AVX=sse4 ++cppnone: ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone + +-avxavx2: $(PROG)_fortran $(DSIG_cudacpp) +- @echo +- $(MAKE) USEBUILDDIR=1 AVX=avx2 ++cppsse4: ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 + +-avx512y: $(PROG)_fortran $(DSIG_cudacpp) +- @echo +- $(MAKE) USEBUILDDIR=1 AVX=512y ++cppavx2: ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 + +-avx512z: $(PROG)_fortran $(DSIG_cudacpp) +- @echo +- $(MAKE) USEBUILDDIR=1 AVX=512z ++cpp512y: ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y + +-###endif ++cpp512z: ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z ++ ++cuda: ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cuda + + # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) + +-clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn +- $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda ++BUILD_DIRS := $(wildcard build.*) ++BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') ++NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) ++ ++clean: ++ifeq ($(USEBUILDDIR),1) ++ifeq ($(NUM_BUILD_DIRS),1) ++ $(info USEBUILDDIR=1, only cleaning build dir.) ++ $(RM) -r $(BUILD_DIRS) ++ $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) ++else ifeq ($(NUM_BUILD_DIRS),0) ++ $(error USEBUILDDIR=1, but no build directories are found.) ++else ++ $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) ++endif ++else ++ $(info USEBUILDDIR=0 only cleaning build with no dir.) ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir ++ $(RM) $(CUDACPP_BUILDDIR)/.*libs ++endif ++ ++cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone ++ ++cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 ++ ++cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 ++ ++clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp ++ $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y ++ ++clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp ++ $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z ++ ++cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda + + cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall +- rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs +- rm -f .libs ++ $(RM) $(CUDACPP_BUILDDIR)/.*libs ++ $(RM) .libs + + cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src + make -C ../../Source cleanall +- rm -rf $(LIBDIR)libbias.$(libext) +- rm -f ../../Source/*.mod ../../Source/*/*.mod ++ $(RM) -r $(LIBDIR)libbias.$(libext) ++ $(RM) ../../Source/*.mod ../../Source/*/*.mod + + distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation + $(MAKE) -f $(CUDACPP_MAKEFILE) distclean From 892f21cd69193efb1ca9d6e65e28007c523f8b9d Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 09:02:32 +0200 Subject: [PATCH 68/83] Readded cleaning of build directories in cleanall --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index f500cd0032..e37937c88c 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -767,6 +767,7 @@ cleanall: rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.* # Target: clean the builds as well as the gtest installation(s) distclean: cleanall From b0f52b51d4c37045f39eac8e4e91d57136a85f72 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 09:06:15 +0200 Subject: [PATCH 69/83] [CODEGEN] Fixed indentation in cudacpp.mk in codegen --- .../madgraph/iolibs/template_files/gpu/cudacpp.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk index 8b2f12aabc..8e2bfab159 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk @@ -766,8 +766,8 @@ cleanall: rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) - rm -rf build.* + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + rm -rf build.* # Target: clean the builds as well as the gtest installation(s) distclean: cleanall From fd3f74d106973f11b113adeb00b07d66b29894d0 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 09:07:32 +0200 Subject: [PATCH 70/83] Fixed indentation in cudacpp.mk in gg_tt.mad --- epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index e37937c88c..b4cf265525 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -767,7 +767,7 @@ cleanall: rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) - rm -rf build.* + rm -rf build.* # Target: clean the builds as well as the gtest installation(s) distclean: cleanall From f48ab5a59103283f09cce770d14bc6162d63c863 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 09:13:34 +0200 Subject: [PATCH 71/83] [CODEGEN] Removed prior patch to makefile in patch.common --- .../MG5aMC_patches/PROD/patch.common | 248 ------------------ 1 file changed, 248 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index 18470e9ebf..1b5796567e 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -38,254 +38,6 @@ index 617f10b93..dbe08b846 100644 +cleanall: cleanSource # THIS IS THE ONE + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; + -diff --git b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -index 348c283be..74db44d84 100644 ---- b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -+++ a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -@@ -1,6 +1,22 @@ -+SHELL := /bin/bash -+ - include ../../Source/make_opts - FFLAGS+= -w - -+# Enable the C preprocessor https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html -+FFLAGS+= -cpp -+ -+# Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) -+CXXFLAGS = -O3 -Wall -Wshadow -Wextra -+ -+# Enable ccache if USECCACHE=1 -+ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) -+ override CXX:=ccache $(CXX) -+endif -+ifeq ($(USECCACHE)$(shell echo $(FC) | grep ccache),1) -+ override FC:=ccache $(FC) -+endif -+ - # Load additional dependencies of the bias module, if present - ifeq (,$(wildcard ../bias_dependencies)) - BIASDEPENDENCIES = -@@ -24,7 +40,26 @@ else - MADLOOP_LIB = - endif - --LINKLIBS = $(LINK_MADLOOP_LIB) $(LINK_LOOP_LIBS) -L../../lib/ -ldhelas -ldsample -lmodel -lgeneric -lpdf -lgammaUPC -lcernlib $(llhapdf) -lbias -+LINKLIBS = $(LINK_MADLOOP_LIB) $(LINK_LOOP_LIBS) -L$(LIBDIR) -ldhelas -ldsample -lmodel -lgeneric -lpdf -lcernlib $(llhapdf) -lbias -+ -+processid_short=$(shell basename $(CURDIR) | awk -F_ '{print $$(NF-1)"_"$$NF}') -+CUDACPP_MAKEFILE=cudacpp.mk -+# NB1 Using ":=" below instead of "=" is much faster (it only runs the subprocess once instead of many times) -+# NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 -+# NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... -+# NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -+CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") -+###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) -+###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -+CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -+#ifeq ($(CUDACPP_BUILDDIR),) -+#$(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) -+#else -+$(info CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)') -+#endif -+CUDACPP_COMMONLIB=mg5amc_common -+CUDACPP_CXXLIB=mg5amc_$(processid_short)_cpp -+CUDACPP_CULIB=mg5amc_$(processid_short)_cuda - - LIBS = $(LIBDIR)libbias.$(libext) $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libdsample.$(libext) $(LIBDIR)libgeneric.$(libext) $(LIBDIR)libpdf.$(libext) $(LIBDIR)libgammaUPC.$(libext) $(LIBDIR)libmodel.$(libext) $(LIBDIR)libcernlib.$(libext) $(MADLOOP_LIB) $(LOOP_LIBS) - -@@ -43,41 +78,112 @@ ifeq ($(strip $(MATRIX_HEL)),) - endif - - --PROCESS= driver.o myamp.o genps.o unwgt.o setcuts.o get_color.o \ -+PROCESS= myamp.o genps.o unwgt.o setcuts.o get_color.o \ - cuts.o cluster.o reweight.o initcluster.o addmothers.o setscales.o \ -- idenparts.o dummy_fct.o \ -- $(patsubst %.f,%.o,$(wildcard auto_dsig*.f)) \ -+ idenparts.o dummy_fct.o -+ -+DSIG=driver.o $(patsubst %.f, %.o, $(filter-out auto_dsig.f, $(wildcard auto_dsig*.f))) -+DSIG_cudacpp=driver_cudacpp.o $(patsubst %.f, %_cudacpp.o, $(filter-out auto_dsig.f, $(wildcard auto_dsig*.f))) - - SYMMETRY = symmetry.o idenparts.o - - # Binaries - --$(PROG): $(PROCESS) auto_dsig.o $(LIBS) $(MATRIX) -- $(FC) -o $(PROG) $(PROCESS) $(MATRIX) $(LINKLIBS) $(LDFLAGS) $(BIASDEPENDENCIES) -fopenmp -+#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) - --$(PROG)_forhel: $(PROCESS) auto_dsig.o $(LIBS) $(MATRIX_HEL) -- $(FC) -o $(PROG)_forhel $(PROCESS) $(MATRIX_HEL) $(LINKLIBS) $(LDFLAGS) $(BIASDEPENDENCIES) -fopenmp -+all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) - --gensym: $(SYMMETRY) configs.inc $(LIBS) -- $(FC) -o gensym $(SYMMETRY) -L../../lib/ $(LINKLIBS) $(LDFLAGS) -+ifneq ($(shell $(CXX) --version | egrep '^Intel'),) -+override OMPFLAGS = -fopenmp -+LINKLIBS += -liomp5 # see #578 -+LINKLIBS += -lintlc # undefined reference to `_intel_fast_memcpy' -+else ifneq ($(shell $(CXX) --version | egrep '^clang'),) -+override OMPFLAGS = -fopenmp -+$(CUDACPP_BUILDDIR)/$(PROG)_cpp: LINKLIBS += -L $(shell dirname $(shell $(CXX) -print-file-name=libc++.so)) -lomp # see #604 -+###else ifneq ($(shell $(CXX) --version | egrep '^Apple clang'),) -+###override OMPFLAGS = -fopenmp # OMP is not supported yet by cudacpp for Apple clang -+else -+override OMPFLAGS = -fopenmp -+endif -+ -+$(PROG)_fortran: $(PROCESS) $(DSIG) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o -+ $(FC) -o $(PROG)_fortran $(PROCESS) $(DSIG) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o $(LDFLAGS) - --$(LIBDIR)libmodel.$(libext): ../../Cards/param_card.dat -- cd ../../Source/MODEL; make -+$(LIBS): .libs - --$(LIBDIR)libgeneric.$(libext): ../../Cards/run_card.dat -+.libs: ../../Cards/param_card.dat ../../Cards/run_card.dat - cd ../../Source; make -+ touch $@ -+ -+$(CUDACPP_BUILDDIR)/.cudacpplibs: -+ $(MAKE) -f $(CUDACPP_MAKEFILE) -+ touch $@ -+ -+# On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH -+# Use relative paths with respect to the executables ($ORIGIN on Linux) -+# On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary -+ifeq ($(UNAME_S),Darwin) -+ override LIBFLAGSRPATH = -+else ifeq ($(USEBUILDDIR),1) -+ override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/../$(LIBDIR)/$(CUDACPP_BUILDDIR)' -+else -+ override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' -+endif -+ -+.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link -+ -+madevent_fortran_link: $(PROG)_fortran -+ rm -f $(PROG) -+ ln -s $(PROG)_fortran $(PROG) -+ -+madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp -+ rm -f $(PROG) -+ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -+ -+madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda -+ rm -f $(PROG) -+ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) - --$(LIBDIR)libpdf.$(libext): -- cd ../../Source/PDF; make -+# Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -+$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs -+ $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) -+ if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi - --$(LIBDIR)libgammaUPC.$(libext): -- cd ../../Source/PDF/gammaUPC; make -+$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp -+ -+counters.o: counters.cc timer.h -+ $(CXX) $(CXXFLAGS) -c $< -o $@ -+ -+ompnumthreads.o: ompnumthreads.cc ompnumthreads.h -+ $(CXX) -I. $(CXXFLAGS) $(OMPFLAGS) -c $< -o $@ -+ -+$(PROG)_forhel: $(PROCESS) auto_dsig.o $(LIBS) $(MATRIX_HEL) -+ $(FC) -o $(PROG)_forhel $(PROCESS) $(MATRIX_HEL) $(LINKLIBS) $(LDFLAGS) $(BIASDEPENDENCIES) $(OMPFLAGS) -+ -+gensym: $(SYMMETRY) configs.inc $(LIBS) -+ $(FC) -o gensym $(SYMMETRY) -L$(LIBDIR) $(LINKLIBS) $(LDFLAGS) -+ -+###ifeq (,$(wildcard fbridge.inc)) # Pointless: fbridge.inc always exists as this is the cudacpp-modified makefile! -+###$(LIBDIR)libmodel.$(libext): ../../Cards/param_card.dat -+### cd ../../Source/MODEL; make -+### -+###$(LIBDIR)libgeneric.$(libext): ../../Cards/run_card.dat -+### cd ../../Source; make -+### -+###$(LIBDIR)libpdf.$(libext): -+### cd ../../Source/PDF; make -+### -+###$(LIBDIR)libgammaUPC.$(libext): -+### cd ../../Source/PDF/gammaUPC; make -+###endif - - # Add source so that the compiler finds the DiscreteSampler module. - $(MATRIX): %.o: %.f - $(FC) $(FFLAGS) $(MATRIX_FLAG) -c $< -I../../Source/ -I../../Source/PDF/gammaUPC - %.o: %.f - $(FC) $(FFLAGS) -c $< -I../../Source/ -I../../Source/PDF/gammaUPC -+%_cudacpp.o: %.f -+ $(FC) $(FFLAGS) -c -DMG5AMC_MEEXPORTER_CUDACPP $< -I../../Source/ $(OMPFLAGS) -o $@ - - # Dependencies - -@@ -97,5 +203,61 @@ unwgt.o: genps.inc nexternal.inc symswap.inc cluster.inc run.inc message.inc \ - run_config.inc - initcluster.o: message.inc - --clean: -- $(RM) *.o gensym madevent madevent_forhel -+# Extra dependencies on discretesampler.mod -+ -+auto_dsig.o: .libs -+driver.o: .libs -+driver_cudacpp.o: .libs -+$(MATRIX): .libs -+genps.o: .libs -+ -+# Cudacpp avxall targets -+ -+UNAME_P := $(shell uname -p) -+ifeq ($(UNAME_P),ppc64le) -+avxall: avxnone avxsse4 -+else ifeq ($(UNAME_P),arm) -+avxall: avxnone avxsse4 -+else -+avxall: avxnone avxsse4 avxavx2 avx512y avx512z -+endif -+ -+avxnone: $(PROG)_fortran $(DSIG_cudacpp) -+ @echo -+ $(MAKE) USEBUILDDIR=1 AVX=none -+ -+avxsse4: $(PROG)_fortran $(DSIG_cudacpp) -+ @echo -+ $(MAKE) USEBUILDDIR=1 AVX=sse4 -+ -+avxavx2: $(PROG)_fortran $(DSIG_cudacpp) -+ @echo -+ $(MAKE) USEBUILDDIR=1 AVX=avx2 -+ -+avx512y: $(PROG)_fortran $(DSIG_cudacpp) -+ @echo -+ $(MAKE) USEBUILDDIR=1 AVX=512y -+ -+avx512z: $(PROG)_fortran $(DSIG_cudacpp) -+ @echo -+ $(MAKE) USEBUILDDIR=1 AVX=512z -+ -+###endif -+ -+# Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -+ -+clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn -+ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda -+ -+cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src -+ $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall -+ rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs -+ rm -f .libs -+ -+cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src -+ make -C ../../Source cleanall -+ rm -rf $(LIBDIR)libbias.$(libext) -+ rm -f ../../Source/*.mod ../../Source/*/*.mod -+ -+distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation -+ $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git b/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py a/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py index 4dd71db86..3b8ec3121 100755 --- b/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py From 92bd1e77e4a08d0e1ab8982fa6d77a312f341daf Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 09:27:42 +0200 Subject: [PATCH 72/83] Revert "[CODEGEN] Removed prior patch to makefile in patch.common" This reverts commit f48ab5a59103283f09cce770d14bc6162d63c863. --- .../MG5aMC_patches/PROD/patch.common | 248 ++++++++++++++++++ 1 file changed, 248 insertions(+) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index 1b5796567e..18470e9ebf 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -38,6 +38,254 @@ index 617f10b93..dbe08b846 100644 +cleanall: cleanSource # THIS IS THE ONE + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; + +diff --git b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +index 348c283be..74db44d84 100644 +--- b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile ++++ a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +@@ -1,6 +1,22 @@ ++SHELL := /bin/bash ++ + include ../../Source/make_opts + FFLAGS+= -w + ++# Enable the C preprocessor https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html ++FFLAGS+= -cpp ++ ++# Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) ++CXXFLAGS = -O3 -Wall -Wshadow -Wextra ++ ++# Enable ccache if USECCACHE=1 ++ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) ++ override CXX:=ccache $(CXX) ++endif ++ifeq ($(USECCACHE)$(shell echo $(FC) | grep ccache),1) ++ override FC:=ccache $(FC) ++endif ++ + # Load additional dependencies of the bias module, if present + ifeq (,$(wildcard ../bias_dependencies)) + BIASDEPENDENCIES = +@@ -24,7 +40,26 @@ else + MADLOOP_LIB = + endif + +-LINKLIBS = $(LINK_MADLOOP_LIB) $(LINK_LOOP_LIBS) -L../../lib/ -ldhelas -ldsample -lmodel -lgeneric -lpdf -lgammaUPC -lcernlib $(llhapdf) -lbias ++LINKLIBS = $(LINK_MADLOOP_LIB) $(LINK_LOOP_LIBS) -L$(LIBDIR) -ldhelas -ldsample -lmodel -lgeneric -lpdf -lcernlib $(llhapdf) -lbias ++ ++processid_short=$(shell basename $(CURDIR) | awk -F_ '{print $$(NF-1)"_"$$NF}') ++CUDACPP_MAKEFILE=cudacpp.mk ++# NB1 Using ":=" below instead of "=" is much faster (it only runs the subprocess once instead of many times) ++# NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 ++# NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... ++# NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) ++CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") ++###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ++###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) ++CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ++#ifeq ($(CUDACPP_BUILDDIR),) ++#$(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) ++#else ++$(info CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)') ++#endif ++CUDACPP_COMMONLIB=mg5amc_common ++CUDACPP_CXXLIB=mg5amc_$(processid_short)_cpp ++CUDACPP_CULIB=mg5amc_$(processid_short)_cuda + + LIBS = $(LIBDIR)libbias.$(libext) $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libdsample.$(libext) $(LIBDIR)libgeneric.$(libext) $(LIBDIR)libpdf.$(libext) $(LIBDIR)libgammaUPC.$(libext) $(LIBDIR)libmodel.$(libext) $(LIBDIR)libcernlib.$(libext) $(MADLOOP_LIB) $(LOOP_LIBS) + +@@ -43,41 +78,112 @@ ifeq ($(strip $(MATRIX_HEL)),) + endif + + +-PROCESS= driver.o myamp.o genps.o unwgt.o setcuts.o get_color.o \ ++PROCESS= myamp.o genps.o unwgt.o setcuts.o get_color.o \ + cuts.o cluster.o reweight.o initcluster.o addmothers.o setscales.o \ +- idenparts.o dummy_fct.o \ +- $(patsubst %.f,%.o,$(wildcard auto_dsig*.f)) \ ++ idenparts.o dummy_fct.o ++ ++DSIG=driver.o $(patsubst %.f, %.o, $(filter-out auto_dsig.f, $(wildcard auto_dsig*.f))) ++DSIG_cudacpp=driver_cudacpp.o $(patsubst %.f, %_cudacpp.o, $(filter-out auto_dsig.f, $(wildcard auto_dsig*.f))) + + SYMMETRY = symmetry.o idenparts.o + + # Binaries + +-$(PROG): $(PROCESS) auto_dsig.o $(LIBS) $(MATRIX) +- $(FC) -o $(PROG) $(PROCESS) $(MATRIX) $(LINKLIBS) $(LDFLAGS) $(BIASDEPENDENCIES) -fopenmp ++#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) + +-$(PROG)_forhel: $(PROCESS) auto_dsig.o $(LIBS) $(MATRIX_HEL) +- $(FC) -o $(PROG)_forhel $(PROCESS) $(MATRIX_HEL) $(LINKLIBS) $(LDFLAGS) $(BIASDEPENDENCIES) -fopenmp ++all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) + +-gensym: $(SYMMETRY) configs.inc $(LIBS) +- $(FC) -o gensym $(SYMMETRY) -L../../lib/ $(LINKLIBS) $(LDFLAGS) ++ifneq ($(shell $(CXX) --version | egrep '^Intel'),) ++override OMPFLAGS = -fopenmp ++LINKLIBS += -liomp5 # see #578 ++LINKLIBS += -lintlc # undefined reference to `_intel_fast_memcpy' ++else ifneq ($(shell $(CXX) --version | egrep '^clang'),) ++override OMPFLAGS = -fopenmp ++$(CUDACPP_BUILDDIR)/$(PROG)_cpp: LINKLIBS += -L $(shell dirname $(shell $(CXX) -print-file-name=libc++.so)) -lomp # see #604 ++###else ifneq ($(shell $(CXX) --version | egrep '^Apple clang'),) ++###override OMPFLAGS = -fopenmp # OMP is not supported yet by cudacpp for Apple clang ++else ++override OMPFLAGS = -fopenmp ++endif ++ ++$(PROG)_fortran: $(PROCESS) $(DSIG) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o ++ $(FC) -o $(PROG)_fortran $(PROCESS) $(DSIG) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o $(LDFLAGS) + +-$(LIBDIR)libmodel.$(libext): ../../Cards/param_card.dat +- cd ../../Source/MODEL; make ++$(LIBS): .libs + +-$(LIBDIR)libgeneric.$(libext): ../../Cards/run_card.dat ++.libs: ../../Cards/param_card.dat ../../Cards/run_card.dat + cd ../../Source; make ++ touch $@ ++ ++$(CUDACPP_BUILDDIR)/.cudacpplibs: ++ $(MAKE) -f $(CUDACPP_MAKEFILE) ++ touch $@ ++ ++# On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH ++# Use relative paths with respect to the executables ($ORIGIN on Linux) ++# On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary ++ifeq ($(UNAME_S),Darwin) ++ override LIBFLAGSRPATH = ++else ifeq ($(USEBUILDDIR),1) ++ override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/../$(LIBDIR)/$(CUDACPP_BUILDDIR)' ++else ++ override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' ++endif ++ ++.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link ++ ++madevent_fortran_link: $(PROG)_fortran ++ rm -f $(PROG) ++ ln -s $(PROG)_fortran $(PROG) ++ ++madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp ++ rm -f $(PROG) ++ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) ++ ++madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda ++ rm -f $(PROG) ++ ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) + +-$(LIBDIR)libpdf.$(libext): +- cd ../../Source/PDF; make ++# Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) ++$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs ++ $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) ++ if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi + +-$(LIBDIR)libgammaUPC.$(libext): +- cd ../../Source/PDF/gammaUPC; make ++$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp ++ ++counters.o: counters.cc timer.h ++ $(CXX) $(CXXFLAGS) -c $< -o $@ ++ ++ompnumthreads.o: ompnumthreads.cc ompnumthreads.h ++ $(CXX) -I. $(CXXFLAGS) $(OMPFLAGS) -c $< -o $@ ++ ++$(PROG)_forhel: $(PROCESS) auto_dsig.o $(LIBS) $(MATRIX_HEL) ++ $(FC) -o $(PROG)_forhel $(PROCESS) $(MATRIX_HEL) $(LINKLIBS) $(LDFLAGS) $(BIASDEPENDENCIES) $(OMPFLAGS) ++ ++gensym: $(SYMMETRY) configs.inc $(LIBS) ++ $(FC) -o gensym $(SYMMETRY) -L$(LIBDIR) $(LINKLIBS) $(LDFLAGS) ++ ++###ifeq (,$(wildcard fbridge.inc)) # Pointless: fbridge.inc always exists as this is the cudacpp-modified makefile! ++###$(LIBDIR)libmodel.$(libext): ../../Cards/param_card.dat ++### cd ../../Source/MODEL; make ++### ++###$(LIBDIR)libgeneric.$(libext): ../../Cards/run_card.dat ++### cd ../../Source; make ++### ++###$(LIBDIR)libpdf.$(libext): ++### cd ../../Source/PDF; make ++### ++###$(LIBDIR)libgammaUPC.$(libext): ++### cd ../../Source/PDF/gammaUPC; make ++###endif + + # Add source so that the compiler finds the DiscreteSampler module. + $(MATRIX): %.o: %.f + $(FC) $(FFLAGS) $(MATRIX_FLAG) -c $< -I../../Source/ -I../../Source/PDF/gammaUPC + %.o: %.f + $(FC) $(FFLAGS) -c $< -I../../Source/ -I../../Source/PDF/gammaUPC ++%_cudacpp.o: %.f ++ $(FC) $(FFLAGS) -c -DMG5AMC_MEEXPORTER_CUDACPP $< -I../../Source/ $(OMPFLAGS) -o $@ + + # Dependencies + +@@ -97,5 +203,61 @@ unwgt.o: genps.inc nexternal.inc symswap.inc cluster.inc run.inc message.inc \ + run_config.inc + initcluster.o: message.inc + +-clean: +- $(RM) *.o gensym madevent madevent_forhel ++# Extra dependencies on discretesampler.mod ++ ++auto_dsig.o: .libs ++driver.o: .libs ++driver_cudacpp.o: .libs ++$(MATRIX): .libs ++genps.o: .libs ++ ++# Cudacpp avxall targets ++ ++UNAME_P := $(shell uname -p) ++ifeq ($(UNAME_P),ppc64le) ++avxall: avxnone avxsse4 ++else ifeq ($(UNAME_P),arm) ++avxall: avxnone avxsse4 ++else ++avxall: avxnone avxsse4 avxavx2 avx512y avx512z ++endif ++ ++avxnone: $(PROG)_fortran $(DSIG_cudacpp) ++ @echo ++ $(MAKE) USEBUILDDIR=1 AVX=none ++ ++avxsse4: $(PROG)_fortran $(DSIG_cudacpp) ++ @echo ++ $(MAKE) USEBUILDDIR=1 AVX=sse4 ++ ++avxavx2: $(PROG)_fortran $(DSIG_cudacpp) ++ @echo ++ $(MAKE) USEBUILDDIR=1 AVX=avx2 ++ ++avx512y: $(PROG)_fortran $(DSIG_cudacpp) ++ @echo ++ $(MAKE) USEBUILDDIR=1 AVX=512y ++ ++avx512z: $(PROG)_fortran $(DSIG_cudacpp) ++ @echo ++ $(MAKE) USEBUILDDIR=1 AVX=512z ++ ++###endif ++ ++# Clean (NB: 'make clean' in Source calls 'make clean' in all P*) ++ ++clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn ++ $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda ++ ++cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src ++ $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall ++ rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs ++ rm -f .libs ++ ++cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src ++ make -C ../../Source cleanall ++ rm -rf $(LIBDIR)libbias.$(libext) ++ rm -f ../../Source/*.mod ../../Source/*/*.mod ++ ++distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation ++ $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git b/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py a/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py index 4dd71db86..3b8ec3121 100755 --- b/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py From dd01050a29d74d154189de9d8c496c8404705611 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 09:40:02 +0200 Subject: [PATCH 73/83] [CODEGEN] Fixed patch not applying because string does not exist in file that it is trying to patch --- .../CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common | 8 ++++---- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index 18470e9ebf..205390bacc 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -340,10 +340,10 @@ index a056d3861..b70b548e5 100755 alljobs = misc.glob('ajob*', Pdir) #remove associated results.dat (ensure to not mix with all data) -diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +diff --git b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 74db44d84..36a1e90b5 100644 ---- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -+++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +--- b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile ++++ a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -9,6 +9,24 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra @@ -377,7 +377,7 @@ index 74db44d84..36a1e90b5 100644 +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) --CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +-CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn 2>/dev/null |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 36a1e90b59..597facb814 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -69,7 +69,7 @@ CUDACPP_MAKEFILE=cudacpp.mk CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else From e75ca3835c2457469e40834cf18ab75433849a1e Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 09:44:42 +0200 Subject: [PATCH 74/83] [CODEGEN] Fixed mismatch in patch.common --- .../PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index 205390bacc..8b4116395d 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -377,8 +377,8 @@ index 74db44d84..36a1e90b5 100644 +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) --CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn 2>/dev/null |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -+CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +-CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ++CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else From 191e1122c85245620b76418847ab536bdb438478 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 11:50:51 +0200 Subject: [PATCH 75/83] Sets correct cppavx dependency for compiling madevent_cpp --- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 597facb814..1cabeb5ff4 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -20,6 +20,11 @@ else endif endif +# Sets correct cppavx target as dependency when compiling Fortran +ifneq (,$(findstring cpp*,$(TARGET))) + CPPTARGET := $(TARGET) +endif + # Default goal .DEFAULT_GOAL := usage @@ -151,39 +156,39 @@ madevent_fortran_link: $(PROG)_fortran ln -s $(PROG)_fortran $(PROG) # Only used for testing, should be removed in the future -madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 +madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppnone +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppsse4 +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512y +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512z +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) -madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda cuda +madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h From 67dd7762242593a5c1b664d4e08e43071a9e4680 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 11:55:29 +0200 Subject: [PATCH 76/83] Fixed unneccessary & in CUDACPP_BUILDDIR assignment --- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 1cabeb5ff4..8048293272 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -74,7 +74,7 @@ CUDACPP_MAKEFILE=cudacpp.mk CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else From 9e974c053dd5f242994e74be9100b4fddf8db898 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 12:03:06 +0200 Subject: [PATCH 77/83] [CODEGEN] Add the dependency on cppavx target when compiling madevent_cpp in codegen patch --- .../MG5aMC_patches/PROD/patch.common | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index 8b4116395d..b21e919b8c 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -82,11 +82,11 @@ index 348c283be..74db44d84 100644 +###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) +###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) -+#ifeq ($(CUDACPP_BUILDDIR),) -+#$(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) -+#else ++ifeq ($(CUDACPP_BUILDDIR),) ++$(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) ++else +$(info CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)') -+#endif ++endif +CUDACPP_COMMONLIB=mg5amc_common +CUDACPP_CXXLIB=mg5amc_$(processid_short)_cpp +CUDACPP_CULIB=mg5amc_$(processid_short)_cuda @@ -341,10 +341,10 @@ index a056d3861..b70b548e5 100755 #remove associated results.dat (ensure to not mix with all data) diff --git b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -index 74db44d84..36a1e90b5 100644 +index 74db44d84..804829327 100644 --- b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -@@ -9,6 +9,24 @@ FFLAGS+= -cpp +@@ -9,6 +9,29 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra @@ -359,6 +359,11 @@ index 74db44d84..36a1e90b5 100644 + endif +endif + ++# Sets correct cppavx target as dependency when compiling Fortran ++ifneq (,$(findstring cpp*,$(TARGET))) ++ CPPTARGET := $(TARGET) ++endif ++ +# Default goal +.DEFAULT_GOAL := usage + @@ -369,7 +374,7 @@ index 74db44d84..36a1e90b5 100644 # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) -@@ -48,10 +66,10 @@ CUDACPP_MAKEFILE=cudacpp.mk +@@ -48,10 +71,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) @@ -382,7 +387,7 @@ index 74db44d84..36a1e90b5 100644 ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else -@@ -115,10 +133,6 @@ $(LIBS): .libs +@@ -115,10 +138,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ @@ -393,7 +398,7 @@ index 74db44d84..36a1e90b5 100644 # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary -@@ -130,26 +144,47 @@ else +@@ -130,26 +149,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif @@ -404,50 +409,48 @@ index 74db44d84..36a1e90b5 100644 rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) --madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +# Only used for testing, should be removed in the future -+madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 + madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + ++madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + -+madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppnone ++madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + -+madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppsse4 ++madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + -+madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cppavx2 ++madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + -+madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512y ++madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + -+madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp cpp512z - rm -f $(PROG) - ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) - --madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda -+madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda cuda + madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs -+$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o ++$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp -+$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o ++$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ -@@ -215,49 +250,105 @@ genps.o: .libs +@@ -215,49 +255,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) From 564682a18a4719a99e0f283d72d746bc8182020a Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 12:16:45 +0200 Subject: [PATCH 78/83] [CODEGEN] Now sets correct target for linking with cppavx target in runcard --- .../CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common | 6 +++++- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index b21e919b8c..f891e325ff 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -361,7 +361,11 @@ index 74db44d84..804829327 100644 + +# Sets correct cppavx target as dependency when compiling Fortran +ifneq (,$(findstring cpp*,$(TARGET))) -+ CPPTARGET := $(TARGET) ++ ifeq ($(TARGET),) ++ CPPTARGET := cppavx2 ++ else ++ CPPTARGET := $(TARGET) ++ endif +endif + +# Default goal diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 8048293272..7ae599f03e 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -22,7 +22,11 @@ endif # Sets correct cppavx target as dependency when compiling Fortran ifneq (,$(findstring cpp*,$(TARGET))) - CPPTARGET := $(TARGET) + ifeq ($(TARGET),) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) + endif endif # Default goal From 6382b5a359713205813e6f47c98dda0cac9e23ac Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 12:22:58 +0200 Subject: [PATCH 79/83] [CODEGEN] Fixed patch.commen to have correct intervals in git diff --- .../MG5aMC_patches/PROD/patch.common | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index f891e325ff..0c8ca0cf8b 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -341,10 +341,10 @@ index a056d3861..b70b548e5 100755 #remove associated results.dat (ensure to not mix with all data) diff --git b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -index 74db44d84..804829327 100644 +index 74db44d84..7ae599f03 100644 --- b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile -@@ -9,6 +9,29 @@ FFLAGS+= -cpp +@@ -9,6 +9,33 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra @@ -378,7 +378,7 @@ index 74db44d84..804829327 100644 # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) -@@ -48,10 +71,10 @@ CUDACPP_MAKEFILE=cudacpp.mk +@@ -48,10 +75,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) @@ -391,7 +391,7 @@ index 74db44d84..804829327 100644 ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else -@@ -115,10 +138,6 @@ $(LIBS): .libs +@@ -115,10 +142,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ @@ -402,7 +402,7 @@ index 74db44d84..804829327 100644 # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary -@@ -130,26 +149,47 @@ else +@@ -130,26 +153,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif @@ -454,7 +454,7 @@ index 74db44d84..804829327 100644 counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ -@@ -215,49 +255,105 @@ genps.o: .libs +@@ -215,49 +259,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) From 6092d6a70656c6c14245a1d9b498b518fe7cb487 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 13:32:45 +0200 Subject: [PATCH 80/83] [CODEGEN] Correctly assigns CPPTARGET in compiling madevent_cpp --- .../PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common | 4 ++-- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index 0c8ca0cf8b..c7807b1a80 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -353,7 +353,7 @@ index 74db44d84..7ae599f03 100644 + TARGET := undefined +else + ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) -+ TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) ++ TARGET := $(patsubst madevent_cpp%,cpp%,$(filter madevent_cpp%,$(MAKECMDGOALS))) + else + TARGET := $(MAKECMDGOALS) + endif @@ -361,7 +361,7 @@ index 74db44d84..7ae599f03 100644 + +# Sets correct cppavx target as dependency when compiling Fortran +ifneq (,$(findstring cpp*,$(TARGET))) -+ ifeq ($(TARGET),) ++ ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 7ae599f03e..bdd165f70c 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -14,7 +14,7 @@ ifeq ($(MAKECMDGOALS),) TARGET := undefined else ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) - TARGET := $(patsubst %_%,%,$(MAKECMDGOALS)) + TARGET := $(patsubst madevent_cpp%,cpp%,$(filter madevent_cpp%,$(MAKECMDGOALS))) else TARGET := $(MAKECMDGOALS) endif @@ -22,7 +22,7 @@ endif # Sets correct cppavx target as dependency when compiling Fortran ifneq (,$(findstring cpp*,$(TARGET))) - ifeq ($(TARGET),) + ifeq ($(TARGET),cpp) CPPTARGET := cppavx2 else CPPTARGET := $(TARGET) From bedb79c07f51a9dbc61c6385e537f87e294f6a22 Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 15:58:14 +0200 Subject: [PATCH 81/83] [CODEGEN] Correctly sets dependencies for madevent_cpp --- .../CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common | 4 ++-- epochX/cudacpp/gg_tt.mad/SubProcesses/makefile | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index c7807b1a80..bab28d89be 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -352,7 +352,7 @@ index 74db44d84..7ae599f03 100644 +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else -+ ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) ++ ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(patsubst madevent_cpp%,cpp%,$(filter madevent_cpp%,$(MAKECMDGOALS))) + else + TARGET := $(MAKECMDGOALS) @@ -360,7 +360,7 @@ index 74db44d84..7ae599f03 100644 +endif + +# Sets correct cppavx target as dependency when compiling Fortran -+ifneq (,$(findstring cpp*,$(TARGET))) ++ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) + ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index bdd165f70c..27a8c3a83a 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -13,15 +13,15 @@ CXXFLAGS = -O3 -Wall -Wshadow -Wextra ifeq ($(MAKECMDGOALS),) TARGET := undefined else - ifneq (,$(findstring madevent_*,$(MAKECMDGOALS))) - TARGET := $(patsubst madevent_cpp%,cpp%,$(filter madevent_cpp%,$(MAKECMDGOALS))) + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) else TARGET := $(MAKECMDGOALS) endif endif # Sets correct cppavx target as dependency when compiling Fortran -ifneq (,$(findstring cpp*,$(TARGET))) +ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) ifeq ($(TARGET),cpp) CPPTARGET := cppavx2 else From cf1b21b8d871682797c423bec5f0125fd94cbf8f Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Thu, 28 Sep 2023 16:00:51 +0200 Subject: [PATCH 82/83] [CODEGEN] Correctly sets target if madevent is in $MAKECMDGOALS --- .../PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common index bab28d89be..3cb3541cad 100644 --- a/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common +++ b/epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/MG5aMC_patches/PROD/patch.common @@ -353,7 +353,7 @@ index 74db44d84..7ae599f03 100644 + TARGET := undefined +else + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) -+ TARGET := $(patsubst madevent_cpp%,cpp%,$(filter madevent_cpp%,$(MAKECMDGOALS))) ++ TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) + else + TARGET := $(MAKECMDGOALS) + endif From 75c5be6d71694d2d2e4a6f29bdbe9bbc0795e9af Mon Sep 17 00:00:00 2001 From: Jorgen T Date: Fri, 29 Sep 2023 16:58:31 +0200 Subject: [PATCH 83/83] [CODEGEN] Regenerated all .sa/.mad processes --- .../ee_mumu.mad/Cards/delphes_trigger.dat | 20 + .../cudacpp/ee_mumu.mad/Cards/ident_card.dat | 28 +- .../ee_mumu.mad/Cards/me5_configuration.txt | 4 +- .../cudacpp/ee_mumu.mad/Cards/plot_card.dat | 203 + .../ee_mumu.mad/Cards/proc_card_mg5.dat | 10 +- epochX/cudacpp/ee_mumu.mad/Cards/run_card.dat | 12 +- .../ee_mumu.mad/Source/DHELAS/FFV4_0.f | 8 +- .../ee_mumu.mad/Source/DHELAS/FFV4_3.f | 12 +- .../ee_mumu.mad/Source/DHELAS/aloha_file.inc | 2 +- .../ee_mumu.mad/Source/PDF/pdfwrap_lhapdf.f | 1 + epochX/cudacpp/ee_mumu.mad/Source/make_opts | 12 +- epochX/cudacpp/ee_mumu.mad/Source/makefile | 4 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../SubProcesses/P1_epem_mupmum/CPPProcess.cc | 26 +- .../SubProcesses/P1_epem_mupmum/auto_dsig1.f | 20 +- .../SubProcesses/P1_epem_mupmum/counters.cc | 115 +- .../SubProcesses/P1_epem_mupmum/matrix1.f | 2 - .../P1_epem_mupmum/ompnumthreads.cc | 26 +- .../ee_mumu.mad/SubProcesses/counters.cc | 99 + .../ee_mumu.mad/SubProcesses/cudacpp.mk | 386 +- .../ee_mumu.mad/SubProcesses/dummy_fct.f | 10 +- .../cudacpp/ee_mumu.mad/SubProcesses/makefile | 172 +- .../ee_mumu.mad/SubProcesses/ompnumthreads.cc | 25 + .../SubProcesses/proc_characteristics | 2 +- .../cudacpp/ee_mumu.mad/bin/generate_events | 22 +- .../ee_mumu.mad/bin/internal/banner.py | 284 +- .../bin/internal/check_param_card.py | 2 +- .../bin/internal/common_run_interface.py | 11 +- .../ee_mumu.mad/bin/internal/extended_cmd.py | 8 +- .../ee_mumu.mad/bin/internal/gen_ximprove.py | 9 +- .../ee_mumu.mad/bin/internal/launch_plugin.py | 100 + .../bin/internal/madevent_interface.py | 6 +- .../cudacpp/ee_mumu.mad/bin/internal/run_plot | 47 + .../ee_mumu.mad/bin/internal/run_plot_delphes | 46 + .../ee_mumu.mad/bin/internal/run_plot_pgs | 47 + .../ee_mumu.mad/bin/internal/run_plot_pythia | 50 + epochX/cudacpp/ee_mumu.mad/bin/madevent | 26 +- epochX/cudacpp/ee_mumu.mad/src/HelAmps_sm.h | 52 +- epochX/cudacpp/ee_mumu.mad/src/cudacpp_src.mk | 171 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../P1_Sigma_sm_epem_mupmum/CPPProcess.cc | 26 +- .../ee_mumu.sa/SubProcesses/cudacpp.mk | 386 +- epochX/cudacpp/ee_mumu.sa/src/HelAmps_sm.h | 52 +- epochX/cudacpp/ee_mumu.sa/src/cudacpp_src.mk | 171 +- .../gg_tt.mad/Cards/delphes_trigger.dat | 20 + .../gg_tt.mad/Cards/me5_configuration.txt | 4 +- epochX/cudacpp/gg_tt.mad/Cards/plot_card.dat | 203 + epochX/cudacpp/gg_tt.mad/Cards/run_card.dat | 12 +- .../gg_tt.mad/Source/DHELAS/aloha_file.inc | 2 +- .../gg_tt.mad/Source/PDF/pdfwrap_lhapdf.f | 1 + epochX/cudacpp/gg_tt.mad/Source/make_opts | 12 +- epochX/cudacpp/gg_tt.mad/Source/makefile | 4 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../SubProcesses/P1_gg_ttx/CPPProcess.cc | 15 +- .../SubProcesses/P1_gg_ttx/auto_dsig1.f | 18 +- .../cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk | 2 +- .../gg_tt.mad/SubProcesses/dummy_fct.f | 10 +- .../cudacpp/gg_tt.mad/SubProcesses/makefile | 2 +- epochX/cudacpp/gg_tt.mad/bin/generate_events | 22 +- .../cudacpp/gg_tt.mad/bin/internal/banner.py | 284 +- .../bin/internal/check_param_card.py | 2 +- .../bin/internal/common_run_interface.py | 11 +- .../gg_tt.mad/bin/internal/extended_cmd.py | 8 +- .../gg_tt.mad/bin/internal/gen_ximprove.py | 9 +- .../gg_tt.mad/bin/internal/launch_plugin.py | 100 + .../bin/internal/madevent_interface.py | 6 +- .../cudacpp/gg_tt.mad/bin/internal/run_plot | 47 + .../gg_tt.mad/bin/internal/run_plot_delphes | 46 + .../gg_tt.mad/bin/internal/run_plot_pgs | 47 + .../gg_tt.mad/bin/internal/run_plot_pythia | 50 + epochX/cudacpp/gg_tt.mad/bin/madevent | 26 +- epochX/cudacpp/gg_tt.mad/src/HelAmps_sm.h | 8 + epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk | 2 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../P1_Sigma_sm_gg_ttx/CPPProcess.cc | 15 +- .../cudacpp/gg_tt.sa/SubProcesses/cudacpp.mk | 386 +- epochX/cudacpp/gg_tt.sa/src/HelAmps_sm.h | 8 + epochX/cudacpp/gg_tt.sa/src/cudacpp_src.mk | 171 +- .../gg_ttg.mad/Cards/delphes_trigger.dat | 20 + .../gg_ttg.mad/Cards/me5_configuration.txt | 4 +- epochX/cudacpp/gg_ttg.mad/Cards/plot_card.dat | 203 + epochX/cudacpp/gg_ttg.mad/Cards/run_card.dat | 12 +- .../gg_ttg.mad/Source/DHELAS/aloha_file.inc | 2 +- .../gg_ttg.mad/Source/PDF/pdfwrap_lhapdf.f | 1 + epochX/cudacpp/gg_ttg.mad/Source/make_opts | 12 +- epochX/cudacpp/gg_ttg.mad/Source/makefile | 4 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../SubProcesses/P1_gg_ttxg/CPPProcess.cc | 65 +- .../SubProcesses/P1_gg_ttxg/auto_dsig1.f | 18 +- .../SubProcesses/P1_gg_ttxg/matrix1.f | 49 +- .../gg_ttg.mad/SubProcesses/cudacpp.mk | 386 +- .../gg_ttg.mad/SubProcesses/dummy_fct.f | 10 +- .../cudacpp/gg_ttg.mad/SubProcesses/makefile | 172 +- epochX/cudacpp/gg_ttg.mad/bin/generate_events | 22 +- .../cudacpp/gg_ttg.mad/bin/internal/banner.py | 284 +- .../bin/internal/check_param_card.py | 2 +- .../bin/internal/common_run_interface.py | 11 +- .../gg_ttg.mad/bin/internal/extended_cmd.py | 8 +- .../gg_ttg.mad/bin/internal/gen_ximprove.py | 9 +- .../gg_ttg.mad/bin/internal/launch_plugin.py | 100 + .../bin/internal/madevent_interface.py | 6 +- .../cudacpp/gg_ttg.mad/bin/internal/run_plot | 47 + .../gg_ttg.mad/bin/internal/run_plot_delphes | 46 + .../gg_ttg.mad/bin/internal/run_plot_pgs | 47 + .../gg_ttg.mad/bin/internal/run_plot_pythia | 50 + epochX/cudacpp/gg_ttg.mad/bin/madevent | 26 +- epochX/cudacpp/gg_ttg.mad/src/HelAmps_sm.h | 18 + epochX/cudacpp/gg_ttg.mad/src/cudacpp_src.mk | 171 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../P1_Sigma_sm_gg_ttxg/CPPProcess.cc | 65 +- .../cudacpp/gg_ttg.sa/SubProcesses/cudacpp.mk | 386 +- epochX/cudacpp/gg_ttg.sa/src/HelAmps_sm.h | 18 + epochX/cudacpp/gg_ttg.sa/src/cudacpp_src.mk | 171 +- .../gg_ttgg.mad/Cards/delphes_trigger.dat | 20 + .../gg_ttgg.mad/Cards/me5_configuration.txt | 4 +- .../cudacpp/gg_ttgg.mad/Cards/plot_card.dat | 203 + epochX/cudacpp/gg_ttgg.mad/Cards/run_card.dat | 12 +- .../gg_ttgg.mad/Source/DHELAS/aloha_file.inc | 2 +- .../gg_ttgg.mad/Source/PDF/pdfwrap_lhapdf.f | 1 + epochX/cudacpp/gg_ttgg.mad/Source/make_opts | 12 +- epochX/cudacpp/gg_ttgg.mad/Source/makefile | 4 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../SubProcesses/P1_gg_ttxgg/CPPProcess.cc | 435 +- .../SubProcesses/P1_gg_ttxgg/auto_dsig1.f | 18 +- .../SubProcesses/P1_gg_ttxgg/matrix1.f | 638 +- .../gg_ttgg.mad/SubProcesses/cudacpp.mk | 386 +- .../gg_ttgg.mad/SubProcesses/dummy_fct.f | 10 +- .../cudacpp/gg_ttgg.mad/SubProcesses/makefile | 172 +- .../cudacpp/gg_ttgg.mad/bin/generate_events | 22 +- .../gg_ttgg.mad/bin/internal/banner.py | 284 +- .../bin/internal/check_param_card.py | 2 +- .../bin/internal/common_run_interface.py | 11 +- .../gg_ttgg.mad/bin/internal/extended_cmd.py | 8 +- .../gg_ttgg.mad/bin/internal/gen_ximprove.py | 9 +- .../gg_ttgg.mad/bin/internal/launch_plugin.py | 100 + .../bin/internal/madevent_interface.py | 6 +- .../cudacpp/gg_ttgg.mad/bin/internal/run_plot | 47 + .../gg_ttgg.mad/bin/internal/run_plot_delphes | 46 + .../gg_ttgg.mad/bin/internal/run_plot_pgs | 47 + .../gg_ttgg.mad/bin/internal/run_plot_pythia | 50 + epochX/cudacpp/gg_ttgg.mad/bin/madevent | 26 +- epochX/cudacpp/gg_ttgg.mad/src/HelAmps_sm.h | 24 + epochX/cudacpp/gg_ttgg.mad/src/cudacpp_src.mk | 171 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../P1_Sigma_sm_gg_ttxgg/CPPProcess.cc | 435 +- .../gg_ttgg.sa/SubProcesses/cudacpp.mk | 386 +- epochX/cudacpp/gg_ttgg.sa/src/HelAmps_sm.h | 24 + epochX/cudacpp/gg_ttgg.sa/src/cudacpp_src.mk | 171 +- .../gg_ttggg.mad/Cards/delphes_trigger.dat | 20 + .../gg_ttggg.mad/Cards/me5_configuration.txt | 4 +- .../cudacpp/gg_ttggg.mad/Cards/plot_card.dat | 203 + .../cudacpp/gg_ttggg.mad/Cards/run_card.dat | 12 +- .../gg_ttggg.mad/Source/DHELAS/aloha_file.inc | 2 +- .../gg_ttggg.mad/Source/PDF/pdfwrap_lhapdf.f | 1 + epochX/cudacpp/gg_ttggg.mad/Source/make_opts | 12 +- epochX/cudacpp/gg_ttggg.mad/Source/makefile | 4 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../SubProcesses/P1_gg_ttxggg/CPPProcess.cc | 4551 ++++--- .../SubProcesses/P1_gg_ttxggg/auto_dsig1.f | 18 +- .../SubProcesses/P1_gg_ttxggg/matrix1.f | 10181 ++++++++-------- .../gg_ttggg.mad/SubProcesses/cudacpp.mk | 386 +- .../gg_ttggg.mad/SubProcesses/dummy_fct.f | 10 +- .../gg_ttggg.mad/SubProcesses/makefile | 172 +- .../cudacpp/gg_ttggg.mad/bin/generate_events | 22 +- .../gg_ttggg.mad/bin/internal/banner.py | 284 +- .../bin/internal/check_param_card.py | 2 +- .../bin/internal/common_run_interface.py | 11 +- .../gg_ttggg.mad/bin/internal/extended_cmd.py | 8 +- .../gg_ttggg.mad/bin/internal/gen_ximprove.py | 9 +- .../bin/internal/launch_plugin.py | 100 + .../bin/internal/madevent_interface.py | 6 +- .../gg_ttggg.mad/bin/internal/run_plot | 47 + .../bin/internal/run_plot_delphes | 46 + .../gg_ttggg.mad/bin/internal/run_plot_pgs | 47 + .../gg_ttggg.mad/bin/internal/run_plot_pythia | 50 + epochX/cudacpp/gg_ttggg.mad/bin/madevent | 26 +- epochX/cudacpp/gg_ttggg.mad/src/HelAmps_sm.h | 24 + .../cudacpp/gg_ttggg.mad/src/cudacpp_src.mk | 171 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../P1_Sigma_sm_gg_ttxggg/CPPProcess.cc | 4551 ++++--- .../gg_ttggg.sa/SubProcesses/cudacpp.mk | 386 +- epochX/cudacpp/gg_ttggg.sa/src/HelAmps_sm.h | 24 + epochX/cudacpp/gg_ttggg.sa/src/cudacpp_src.mk | 171 +- .../gq_ttq.mad/Cards/delphes_trigger.dat | 20 + .../gq_ttq.mad/Cards/me5_configuration.txt | 4 +- epochX/cudacpp/gq_ttq.mad/Cards/plot_card.dat | 203 + epochX/cudacpp/gq_ttq.mad/Cards/run_card.dat | 10 - .../gq_ttq.mad/Source/DHELAS/aloha_file.inc | 2 +- .../gq_ttq.mad/Source/PDF/pdfwrap_lhapdf.f | 1 + epochX/cudacpp/gq_ttq.mad/Source/make_opts | 12 +- epochX/cudacpp/gq_ttq.mad/Source/makefile | 4 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../SubProcesses/P1_gu_ttxu/CPPProcess.cc | 36 +- .../SubProcesses/P1_gu_ttxu/auto_dsig1.f | 24 +- .../SubProcesses/P1_gux_ttxux/CPPProcess.cc | 29 +- .../SubProcesses/P1_gux_ttxux/auto_dsig1.f | 28 +- .../gq_ttq.mad/SubProcesses/cudacpp.mk | 386 +- .../gq_ttq.mad/SubProcesses/dummy_fct.f | 10 +- .../cudacpp/gq_ttq.mad/SubProcesses/makefile | 172 +- epochX/cudacpp/gq_ttq.mad/bin/generate_events | 22 +- .../cudacpp/gq_ttq.mad/bin/internal/banner.py | 284 +- .../bin/internal/check_param_card.py | 2 +- .../bin/internal/common_run_interface.py | 11 +- .../gq_ttq.mad/bin/internal/extended_cmd.py | 8 +- .../gq_ttq.mad/bin/internal/gen_ximprove.py | 9 +- .../gq_ttq.mad/bin/internal/launch_plugin.py | 100 + .../bin/internal/madevent_interface.py | 6 +- .../cudacpp/gq_ttq.mad/bin/internal/run_plot | 47 + .../gq_ttq.mad/bin/internal/run_plot_delphes | 46 + .../gq_ttq.mad/bin/internal/run_plot_pgs | 47 + .../gq_ttq.mad/bin/internal/run_plot_pythia | 50 + epochX/cudacpp/gq_ttq.mad/bin/madevent | 26 +- epochX/cudacpp/gq_ttq.mad/src/HelAmps_sm.h | 10 + .../cudacpp/gq_ttq.mad/src/Parameters_sm.cc | 4 +- epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.h | 18 +- epochX/cudacpp/gq_ttq.mad/src/cudacpp_src.mk | 171 +- .../pp_tt012j.mad/Cards/delphes_trigger.dat | 20 + .../pp_tt012j.mad/Cards/me5_configuration.txt | 4 +- .../cudacpp/pp_tt012j.mad/Cards/plot_card.dat | 203 + .../cudacpp/pp_tt012j.mad/Cards/run_card.dat | 10 - .../Source/DHELAS/aloha_file.inc | 2 +- .../pp_tt012j.mad/Source/PDF/pdfwrap_lhapdf.f | 1 + epochX/cudacpp/pp_tt012j.mad/Source/make_opts | 12 +- epochX/cudacpp/pp_tt012j.mad/Source/makefile | 4 +- .../SubProcesses/MatrixElementKernels.cc | 9 +- .../SubProcesses/P0_gg_ttx/CPPProcess.cc | 15 +- .../SubProcesses/P0_gg_ttx/auto_dsig1.f | 18 +- .../SubProcesses/P0_uux_ttx/CPPProcess.cc | 13 +- .../SubProcesses/P0_uux_ttx/auto_dsig1.f | 34 +- .../SubProcesses/P1_gg_ttxg/CPPProcess.cc | 65 +- .../SubProcesses/P1_gg_ttxg/auto_dsig1.f | 18 +- .../SubProcesses/P1_gg_ttxg/matrix1.f | 49 +- .../SubProcesses/P1_gu_ttxu/CPPProcess.cc | 31 +- .../SubProcesses/P1_gu_ttxu/auto_dsig1.f | 24 +- .../SubProcesses/P1_gux_ttxux/CPPProcess.cc | 31 +- .../SubProcesses/P1_gux_ttxux/auto_dsig1.f | 28 +- .../SubProcesses/P1_uux_ttxg/CPPProcess.cc | 31 +- .../SubProcesses/P1_uux_ttxg/auto_dsig1.f | 34 +- .../SubProcesses/P2_gg_ttxgg/CPPProcess.cc | 435 +- .../SubProcesses/P2_gg_ttxgg/auto_dsig1.f | 18 +- .../SubProcesses/P2_gg_ttxgg/matrix1.f | 638 +- .../SubProcesses/P2_gg_ttxuux/CPPProcess.cc | 148 +- .../SubProcesses/P2_gg_ttxuux/auto_dsig1.f | 18 +- .../SubProcesses/P2_gg_ttxuux/matrix1.f | 61 +- .../SubProcesses/P2_gu_ttxgu/CPPProcess.cc | 143 +- .../SubProcesses/P2_gu_ttxgu/auto_dsig1.f | 24 +- .../SubProcesses/P2_gu_ttxgu/matrix1.f | 84 +- .../SubProcesses/P2_gux_ttxgux/CPPProcess.cc | 143 +- .../SubProcesses/P2_gux_ttxgux/auto_dsig1.f | 28 +- .../SubProcesses/P2_gux_ttxgux/matrix1.f | 92 +- .../SubProcesses/P2_uc_ttxuc/CPPProcess.cc | 45 +- .../SubProcesses/P2_uc_ttxuc/auto_dsig1.f | 26 +- .../SubProcesses/P2_uc_ttxuc/matrix1.f | 10 +- .../SubProcesses/P2_ucx_ttxucx/CPPProcess.cc | 45 +- .../SubProcesses/P2_ucx_ttxucx/auto_dsig1.f | 34 +- .../SubProcesses/P2_ucx_ttxucx/matrix1.f | 14 +- .../SubProcesses/P2_uu_ttxuu/CPPProcess.cc | 71 +- .../SubProcesses/P2_uu_ttxuu/auto_dsig1.f | 30 +- .../SubProcesses/P2_uu_ttxuu/matrix1.f | 30 +- .../SubProcesses/P2_uux_ttxccx/CPPProcess.cc | 45 +- .../SubProcesses/P2_uux_ttxccx/auto_dsig1.f | 34 +- .../SubProcesses/P2_uux_ttxgg/CPPProcess.cc | 143 +- .../SubProcesses/P2_uux_ttxgg/auto_dsig1.f | 34 +- .../SubProcesses/P2_uux_ttxgg/matrix1.f | 78 +- .../SubProcesses/P2_uux_ttxuux/CPPProcess.cc | 73 +- .../SubProcesses/P2_uux_ttxuux/auto_dsig1.f | 34 +- .../SubProcesses/P2_uux_ttxuux/matrix1.f | 24 +- .../P2_uxcx_ttxuxcx/CPPProcess.cc | 45 +- .../SubProcesses/P2_uxcx_ttxuxcx/auto_dsig1.f | 32 +- .../SubProcesses/P2_uxcx_ttxuxcx/matrix1.f | 10 +- .../P2_uxux_ttxuxux/CPPProcess.cc | 71 +- .../SubProcesses/P2_uxux_ttxuxux/auto_dsig1.f | 38 +- .../SubProcesses/P2_uxux_ttxuxux/matrix1.f | 30 +- .../pp_tt012j.mad/SubProcesses/cudacpp.mk | 386 +- .../pp_tt012j.mad/SubProcesses/dummy_fct.f | 10 +- .../pp_tt012j.mad/SubProcesses/makefile | 172 +- .../cudacpp/pp_tt012j.mad/bin/generate_events | 22 +- .../pp_tt012j.mad/bin/internal/banner.py | 284 +- .../bin/internal/check_param_card.py | 2 +- .../bin/internal/common_run_interface.py | 11 +- .../bin/internal/extended_cmd.py | 8 +- .../bin/internal/gen_ximprove.py | 9 +- .../bin/internal/launch_plugin.py | 100 + .../bin/internal/madevent_interface.py | 6 +- .../pp_tt012j.mad/bin/internal/run_plot | 47 + .../bin/internal/run_plot_delphes | 46 + .../pp_tt012j.mad/bin/internal/run_plot_pgs | 47 + .../bin/internal/run_plot_pythia | 50 + epochX/cudacpp/pp_tt012j.mad/bin/madevent | 26 +- epochX/cudacpp/pp_tt012j.mad/src/HelAmps_sm.h | 24 + .../cudacpp/pp_tt012j.mad/src/cudacpp_src.mk | 171 +- 291 files changed, 22861 insertions(+), 16005 deletions(-) create mode 100644 epochX/cudacpp/ee_mumu.mad/Cards/delphes_trigger.dat create mode 100644 epochX/cudacpp/ee_mumu.mad/Cards/plot_card.dat mode change 100644 => 120000 epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/counters.cc mode change 100644 => 120000 epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/ompnumthreads.cc create mode 100644 epochX/cudacpp/ee_mumu.mad/SubProcesses/counters.cc create mode 100644 epochX/cudacpp/ee_mumu.mad/SubProcesses/ompnumthreads.cc create mode 100644 epochX/cudacpp/ee_mumu.mad/bin/internal/launch_plugin.py create mode 100755 epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot create mode 100755 epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_delphes create mode 100755 epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pgs create mode 100755 epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pythia create mode 100644 epochX/cudacpp/gg_tt.mad/Cards/delphes_trigger.dat create mode 100644 epochX/cudacpp/gg_tt.mad/Cards/plot_card.dat create mode 100644 epochX/cudacpp/gg_tt.mad/bin/internal/launch_plugin.py create mode 100755 epochX/cudacpp/gg_tt.mad/bin/internal/run_plot create mode 100755 epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_delphes create mode 100755 epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pgs create mode 100755 epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pythia create mode 100644 epochX/cudacpp/gg_ttg.mad/Cards/delphes_trigger.dat create mode 100644 epochX/cudacpp/gg_ttg.mad/Cards/plot_card.dat create mode 100644 epochX/cudacpp/gg_ttg.mad/bin/internal/launch_plugin.py create mode 100755 epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot create mode 100755 epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_delphes create mode 100755 epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pgs create mode 100755 epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pythia create mode 100644 epochX/cudacpp/gg_ttgg.mad/Cards/delphes_trigger.dat create mode 100644 epochX/cudacpp/gg_ttgg.mad/Cards/plot_card.dat create mode 100644 epochX/cudacpp/gg_ttgg.mad/bin/internal/launch_plugin.py create mode 100755 epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot create mode 100755 epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_delphes create mode 100755 epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pgs create mode 100755 epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pythia create mode 100644 epochX/cudacpp/gg_ttggg.mad/Cards/delphes_trigger.dat create mode 100644 epochX/cudacpp/gg_ttggg.mad/Cards/plot_card.dat create mode 100644 epochX/cudacpp/gg_ttggg.mad/bin/internal/launch_plugin.py create mode 100755 epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot create mode 100755 epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_delphes create mode 100755 epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pgs create mode 100755 epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pythia create mode 100644 epochX/cudacpp/gq_ttq.mad/Cards/delphes_trigger.dat create mode 100644 epochX/cudacpp/gq_ttq.mad/Cards/plot_card.dat create mode 100644 epochX/cudacpp/gq_ttq.mad/bin/internal/launch_plugin.py create mode 100755 epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot create mode 100755 epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_delphes create mode 100755 epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pgs create mode 100755 epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pythia create mode 100644 epochX/cudacpp/pp_tt012j.mad/Cards/delphes_trigger.dat create mode 100644 epochX/cudacpp/pp_tt012j.mad/Cards/plot_card.dat create mode 100644 epochX/cudacpp/pp_tt012j.mad/bin/internal/launch_plugin.py create mode 100755 epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot create mode 100755 epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_delphes create mode 100755 epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pgs create mode 100755 epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pythia diff --git a/epochX/cudacpp/ee_mumu.mad/Cards/delphes_trigger.dat b/epochX/cudacpp/ee_mumu.mad/Cards/delphes_trigger.dat new file mode 100644 index 0000000000..0aab0677aa --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/Cards/delphes_trigger.dat @@ -0,0 +1,20 @@ +#TRIGGER CARD # DO NOT REMOVE THIS IS A TAG! + +# list of trigger algorithms +# trigger_name >> algorithm #comments +Inclusive electron >> ELEC1_PT: '29' +di-electron >> ELEC1_PT: '17' && ELEC2_PT: '17' +Inclusive Photon >> GAMMA1_PT: '80' +di-Photon >> GAMMA1_PT: '40' && GAMMA2_PT: '25' +Inclusive muon >> MUON1_PT: '19' +di-muon >> MUON1_PT: '7' && MUON2_PT: '7' +Taujet and ETmis >> TAU1_PT: '86' && ETMIS_PT: '65' +di-Taujets >> TAU1_PT: '59' && TAU2_PT: '59' +Jet and ETmis >> JET1_PT: '180' && ETMIS_PT: '123' +Taujet and electron >> TAU1_PT: '45' && ELEC1_PT: '19' +Taujet and muon >> TAU1_PT: '40' && ELEC1_PT: '15' +Inclusive b-jet >> Bjet1_PT: '237' +Inclusive 1 jet >> JET1_PT: '657' +Inclusive 3 jets >> JET1_PT: '247' && JET2_PT: '247' && JET3_PT: '247' +Inclusive 4 jets >> JET1_PT: '113' && JET2_PT: '113' && JET3_PT: '113' && JET4_PT: '113' + diff --git a/epochX/cudacpp/ee_mumu.mad/Cards/ident_card.dat b/epochX/cudacpp/ee_mumu.mad/Cards/ident_card.dat index 0ba87b008f..b37758a42a 100644 --- a/epochX/cudacpp/ee_mumu.mad/Cards/ident_card.dat +++ b/epochX/cudacpp/ee_mumu.mad/Cards/ident_card.dat @@ -2,32 +2,32 @@ ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c written by the UFO converter ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc +mass 5 mdl_MB +mass 6 mdl_MT +mass 15 mdl_MTA +mass 23 mdl_MZ +mass 25 mdl_MH +sminputs 1 aEWM1 +sminputs 2 mdl_Gf +sminputs 3 aS +yukawa 5 mdl_ymb +yukawa 6 mdl_ymt +yukawa 15 mdl_ymtau - - +decay 6 mdl_WT decay 23 mdl_WZ + decay 24 mdl_WW + decay 25 mdl_WH -decay 6 mdl_WT -mass 15 mdl_MTA -mass 23 mdl_MZ -mass 25 mdl_MH -mass 5 mdl_MB -mass 6 mdl_MT -sminputs 1 aEWM1 -sminputs 2 mdl_Gf -sminputs 3 aS -yukawa 15 mdl_ymtau -yukawa 5 mdl_ymb -yukawa 6 mdl_ymt diff --git a/epochX/cudacpp/ee_mumu.mad/Cards/me5_configuration.txt b/epochX/cudacpp/ee_mumu.mad/Cards/me5_configuration.txt index 5ca005676e..8a0c1e6345 100644 --- a/epochX/cudacpp/ee_mumu.mad/Cards/me5_configuration.txt +++ b/epochX/cudacpp/ee_mumu.mad/Cards/me5_configuration.txt @@ -234,7 +234,7 @@ # pineappl = pineappl -#mg5_path = /data/avalassi/GPU2023/madgraph4gpuMOD/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo # MG5 MAIN DIRECTORY -#mg5_path = /data/avalassi/GPU2023/madgraph4gpuMOD/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo diff --git a/epochX/cudacpp/ee_mumu.mad/Cards/plot_card.dat b/epochX/cudacpp/ee_mumu.mad/Cards/plot_card.dat new file mode 100644 index 0000000000..9abe1cc05e --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/Cards/plot_card.dat @@ -0,0 +1,203 @@ +#************************************************************************** +# Card for MadAnalysis * +# * +# This file is used to set the classes and options for * +# the MadAnalysis program. * +# * +# * +# Some comments about the classes * +# 1. Plots are for classes of particles. * +# 2. Each particle is identified by its PDG code. * +# 3. Classes names are arbitrary (4 symbols max, no spaces allowed). * +# 4. Particles in the same class will be ordered with the 'ordering * +# function' in the file in_func.f. * +# 5. Classes can be added/edited/removed at will, and given a name * +# that will then appear in the plots. * +# 6. A particle can be put in one class only. Putting a particle in * +# two or more classes can lead to double counting of events. * +# 7. The class name mET is missing Energy and its name is reserved. * +# If used, it must be put last in the classes list below. * +# 8. If events contain particles not belonging to an existing class, * +# a new class will automatically be generated. * +# 9. For LHCO events the PDG code 21 is assigned to a jet (not * +# b-tagged), 5 to a b-tagged jet and 12 to missing ET. * +# * +# * +# Some comments about the cuts * +# 1. In the file kin_func.f the functions on which cuts can be applied * +# are given. * +# 2. The syntax is as follows. * +# etmin 1 3 30d0 * +# means that from the first class the Et of the first three particles * +# has to be greater than 30 GeV. * +# * +# etmissmin 20d0 * +# means that there must be at least 20 GeV of missing Et * +# * +# dRmin 2 1 4 3 3d0 * +# means that the distance between the first particle in the second * +# class and the first three particles in the fourth class has to be * +# greater than 3. * +# * +# ptmax 1 3 10d0 * +# ptmax 1 2 15d0 * +# means that the maximum pt of the third particle in the first class * +# has to smaller than 10 GeV, and the first two particles of this * +# class has to be smaller than 15 GeV * +# 3. The ordering of the particles within a class can be set with the * +# 'ordering function' in the file kin_func.f. * +# 4. For all the 'min' cuts, an event will be thrown away if the particle * +# does not exist. On the other hand, for all the 'max' cuts the cut * +# will be ignored if the particle does not exist * +# (Only dRij is an exception, for which it is the other way around) * +# * +# * +# * +# Some comments about the plotting options * +# 1. In the file kin_func.f the functions can be found that can be * +# plotted. (only for off-line usage) * +# 2. With the plotting options one can set the number of plots for each * +# of these functions. * +# 3. One has to specify for each variable which particles from which * +# class are used to set the plots. Syntax: * +# et 2 4 * +# means that the transverse energy of the first four particles in the * +# second class will be plotted. * +# mij 1 3 * +# mij 2 2 * +# means that for the invariant mass plots the first three particles * +# from the first class and the first two from the second class will be * +# used to plot the invariant mass of two particles. (10 plots) * +# 4. The ordering of the particles in a class can be set with the * +# 'ordering_function'. pt, e and et are valid functions. (For off-line * +# users X1, X2 and X3 can also be used, if defined in kin_func.f.) * +# 5. Max number of plots is 200. * +# * +# * +#************************************************************************** +# Put here your list of classes +#************************************************************************** +# Do NOT put spaces before class names! +# Begin Classes # This is TAG. Do not modify this line +jet 1 -1 2 -2 3 -3 4 -4 21 # Class number 1 +b 5 -5 # Class number 2 +mET 12 -12 14 -14 16 -16 1000022 # Missing ET class, name is reserved +# End Classes # This is TAG. Do not modify this line +#************************************************************************** +ordering_function pt # orders particles in classes according to their pt +normalization xsec # histogram normalization, xsec or number (e.g. 1) +#************************************************************************** +# Put here list of minimum pt for the classes +#************************************************************************** +# Begin Minpts # This is TAG. Do not modify this line +#1 30 +#2 40 +#3 10 +# End Minpts # This is TAG. Do not modify this line +#************************************************************************** +# Cuts on plotted events +#************************************************************************** +# Modify the cuts and remove the pounds/hashes to apply those cuts +# Do NOT put spaces at the beginning of the following lines! +# Begin Cuts # This is TAG. Do not modify this line +#etmin 2 2 40d0 +#etmin 2 1 80d0 +#etmin 1 3 20d0 +#etmax 2 1 200d0 +#ptmin 3 1 0d0 +#etmissmin 20d0 +#etmissmax 80d0 +#etamax 1 1 1d0 +#etamax 2 1 2d0 +#etamin 2 2 1.5d0 +#etamin 2 1 2d0 +#mijmax 2 1 2 2 200d0 +#mijmin 2 1 2 2 100d0 +#X1min 2 1 40d0 +#X1max 2 2 50d0 +#dRijmin 2 1 2 2 0.7d0 +#dRijmax 1 3 2 2 0.7d0 +#XY1min 2 2 2 2 20d0 +#XYZA2max 2 2 2 2 4 1 5 1 40d0 +# End Cuts # This is TAG. Do not modify this line +#************************************************************************** +# Put here the required plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotDefs # This is TAG. Do not modify this line +pt 1 4 # plot pt for the first four particles in class 1 +pt 2 4 # plot pt for the first four particles in class 2 +pt 3 4 # plot pt for the first four particles in class 3 +pt 4 4 # plot pt for the first four particles in class 4 +pt 5 4 # etc. +pt 6 4 +pt 7 4 +#e 2 2 +y 1 4 # plot rapidity for the first four particles in class 1 +y 2 4 +y 3 4 +y 4 4 +y 5 4 +y 6 4 +y 7 4 +#eta 2 2 # plot pseudo-rapidity for the first two part in the 2nd class +#mom 4 1 +#costh 5 1 +#phi 2 2 +#delta_eta 2 2 +#delta_eta 4 1 +mij 1 4 # use the first four particles in the 1st class to plot inv. mass +mij 2 2 # use the first two particles from the second class as well +mij 3 1 # etc. +mij 4 1 +mij 5 1 +mij 6 1 +mij 7 1 +#cosij 1 2 +#cosij 2 2 +#cosij 3 1 +#cosij 4 1 +dRij 1 4 +dRij 2 2 +dRij 3 1 +dRij 4 1 +dRij 5 1 +dRij 6 1 +dRij 7 1 +#delta_phi 2 2 +#delta_phi 4 1 +#delta_phi 5 1 +#X1 2 2 # plot X1 (defined in kin_func.f) +#XYZA1 2 2 +#XYZA1 4 1 +#XYZA1 5 1 +# End PlotDefs # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Put here the plot ranges +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotRange # This is TAG. Do not modify this line +pt 10 0 500 # bin size, min value, max value +et 10 0 500 # bin size, min value, max value +etmiss 10 0 500 # bin size, min value, max value +ht 20 0 1500 +y 0.2 -5 5 # etc. +mij 20 0 1500 +dRij 0.1 0 5 +#delta_phi 0.1 0 3.1 +#X1 1 0 100 +#XYZA1 1 0 100 +# End PlotRange # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Output for plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotOutput # This is TAG. Do not modify this line +output topdrawer # set to topdrawer or gnuplot +plot_decayed no # plot (and cut) dec. res.? (Only for LHE events) +# End PlotOutput # This is TAG. Do not modify this line +#************************************************************************** +# +# diff --git a/epochX/cudacpp/ee_mumu.mad/Cards/proc_card_mg5.dat b/epochX/cudacpp/ee_mumu.mad/Cards/proc_card_mg5.dat index b9e01f684b..a685cbcc05 100644 --- a/epochX/cudacpp/ee_mumu.mad/Cards/proc_card_mg5.dat +++ b/epochX/cudacpp/ee_mumu.mad/Cards/proc_card_mg5.dat @@ -35,15 +35,15 @@ set loop_color_flows False set max_npoint_for_channel 0 set default_unset_couplings 99 set max_t_for_channel 99 +set zerowidth_tchannel True set nlo_mixed_expansion True -set stdout_level DEBUG -set zerowidth_tchannel F -generate e+ e- > mu+ mu- +import model sm define p = g u c d s u~ c~ d~ s~ define j = g u c d s u~ c~ d~ s~ define l+ = e+ mu+ define l- = e- mu- define vl = ve vm vt define vl~ = ve~ vm~ vt~ -output madevent ../TMPOUT/CODEGEN_mad_ee_mumu --hel_recycling=False --\ -vector_size=16384 --me_exporter=standalone_cudacpp +generate e+ e- > mu+ mu- +output madevent ee_mumu.mad_gen --hel_recycling=False --vector_size=16\ +384 --me_exporter=standalone_cudacpp diff --git a/epochX/cudacpp/ee_mumu.mad/Cards/run_card.dat b/epochX/cudacpp/ee_mumu.mad/Cards/run_card.dat index 86f6a33258..67c1a4de28 100644 --- a/epochX/cudacpp/ee_mumu.mad/Cards/run_card.dat +++ b/epochX/cudacpp/ee_mumu.mad/Cards/run_card.dat @@ -82,7 +82,7 @@ #********************************************************************* 0 = nhel ! using helicities importance sampling or not. ! 0: sum over helicity, 1: importance sampling - 1 = sde_strategy ! default integration strategy (hep-ph/2021.00773) + 2 = sde_strategy ! default integration strategy (hep-ph/2021.00773) ! 1 is old strategy (using amp square) ! 2 is new strategy (using only the denominator) # To see advanced option for Phase-Space optimization: type "update psoptim" @@ -181,13 +181,3 @@ # systematics = systematics_program ! none, systematics [python], SysCalc [depreceted, C++] ['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule - -#********************************************************************* -# Options for the cudacpp plugin -#********************************************************************* - -# Set cudacpp-specific values of non-cudacpp-specific options --O3 -ffast-math -fbounds-check = global_flag ! build flags for Fortran code (for a fair comparison to cudacpp) - -# New cudacpp-specific options (default values are defined in banner.py) -CPP = cudacpp_backend ! valid backends are FORTRAN, CPP, CUDA diff --git a/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_0.f b/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_0.f index 86144cea09..53829ce13a 100644 --- a/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_0.f +++ b/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_0.f @@ -9,15 +9,15 @@ SUBROUTINE FFV4_0(F1, F2, V3, COUP,VERTEX) COMPLEX*16 COUP COMPLEX*16 F1(*) COMPLEX*16 F2(*) - COMPLEX*16 TMP1 COMPLEX*16 TMP3 + COMPLEX*16 TMP4 COMPLEX*16 V3(*) COMPLEX*16 VERTEX - TMP1 = (F1(3)*(F2(5)*(V3(3)+V3(6))+F2(6)*(V3(4)+CI*(V3(5)))) + TMP3 = (F1(3)*(F2(5)*(V3(3)+V3(6))+F2(6)*(V3(4)+CI*(V3(5)))) $ +F1(4)*(F2(5)*(V3(4)-CI*(V3(5)))+F2(6)*(V3(3)-V3(6)))) - TMP3 = (F1(5)*(F2(3)*(V3(3)-V3(6))-F2(4)*(V3(4)+CI*(V3(5)))) + TMP4 = (F1(5)*(F2(3)*(V3(3)-V3(6))-F2(4)*(V3(4)+CI*(V3(5)))) $ +F1(6)*(F2(3)*(-V3(4)+CI*(V3(5)))+F2(4)*(V3(3)+V3(6)))) - VERTEX = COUP*(-1D0)*(+CI*(TMP1)+2D0 * CI*(TMP3)) + VERTEX = COUP*(-1D0)*(+CI*(TMP3)+2D0 * CI*(TMP4)) END diff --git a/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_3.f b/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_3.f index aa18a03673..06573c09ee 100644 --- a/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_3.f +++ b/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/FFV4_3.f @@ -13,7 +13,7 @@ SUBROUTINE FFV4_3(F1, F2, COUP, M3, W3,V3) REAL*8 OM3 REAL*8 P3(0:3) COMPLEX*16 TMP2 - COMPLEX*16 TMP4 + COMPLEX*16 TMP5 COMPLEX*16 V3(6) REAL*8 W3 COMPLEX*16 DENOM @@ -27,18 +27,18 @@ SUBROUTINE FFV4_3(F1, F2, COUP, M3, W3,V3) P3(3) = -DIMAG(V3(1)) TMP2 = (F1(3)*(F2(5)*(P3(0)+P3(3))+F2(6)*(P3(1)+CI*(P3(2)))) $ +F1(4)*(F2(5)*(P3(1)-CI*(P3(2)))+F2(6)*(P3(0)-P3(3)))) - TMP4 = (F1(5)*(F2(3)*(P3(0)-P3(3))-F2(4)*(P3(1)+CI*(P3(2)))) + TMP5 = (F1(5)*(F2(3)*(P3(0)-P3(3))-F2(4)*(P3(1)+CI*(P3(2)))) $ +F1(6)*(F2(3)*(-P3(1)+CI*(P3(2)))+F2(4)*(P3(0)+P3(3)))) DENOM = COUP/(P3(0)**2-P3(1)**2-P3(2)**2-P3(3)**2 - M3 * (M3 -CI $ * W3)) - V3(3)= DENOM*(-2D0 * CI)*(OM3*-1D0/2D0 * P3(0)*(TMP2+2D0*(TMP4)) + V3(3)= DENOM*(-2D0 * CI)*(OM3*-1D0/2D0 * P3(0)*(TMP2+2D0*(TMP5)) $ +(+1D0/2D0*(F1(3)*F2(5)+F1(4)*F2(6))+F1(5)*F2(3)+F1(6)*F2(4))) - V3(4)= DENOM*(-2D0 * CI)*(OM3*-1D0/2D0 * P3(1)*(TMP2+2D0*(TMP4)) + V3(4)= DENOM*(-2D0 * CI)*(OM3*-1D0/2D0 * P3(1)*(TMP2+2D0*(TMP5)) $ +(-1D0/2D0*(F1(3)*F2(6)+F1(4)*F2(5))+F1(5)*F2(4)+F1(6)*F2(3))) - V3(5)= DENOM*2D0 * CI*(OM3*1D0/2D0 * P3(2)*(TMP2+2D0*(TMP4))+( + V3(5)= DENOM*2D0 * CI*(OM3*1D0/2D0 * P3(2)*(TMP2+2D0*(TMP5))+( $ +1D0/2D0 * CI*(F1(3)*F2(6))-1D0/2D0 * CI*(F1(4)*F2(5))-CI*(F1(5) $ *F2(4))+CI*(F1(6)*F2(3)))) - V3(6)= DENOM*2D0 * CI*(OM3*1D0/2D0 * P3(3)*(TMP2+2D0*(TMP4))+( + V3(6)= DENOM*2D0 * CI*(OM3*1D0/2D0 * P3(3)*(TMP2+2D0*(TMP5))+( $ +1D0/2D0*(F1(3)*F2(5))-1D0/2D0*(F1(4)*F2(6))-F1(5)*F2(3)+F1(6) $ *F2(4))) END diff --git a/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/aloha_file.inc b/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/aloha_file.inc index 4f385d6435..e58e08d7bd 100644 --- a/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/aloha_file.inc +++ b/epochX/cudacpp/ee_mumu.mad/Source/DHELAS/aloha_file.inc @@ -1 +1 @@ -ALOHARoutine = FFV2_3.o FFV2_0.o FFV4_0.o FFV4_3.o FFV1_0.o FFV1P0_3.o +ALOHARoutine = FFV1_0.o FFV1P0_3.o FFV2_0.o FFV2_3.o FFV4_0.o FFV4_3.o diff --git a/epochX/cudacpp/ee_mumu.mad/Source/PDF/pdfwrap_lhapdf.f b/epochX/cudacpp/ee_mumu.mad/Source/PDF/pdfwrap_lhapdf.f index 0be926e6cd..3f36905346 100644 --- a/epochX/cudacpp/ee_mumu.mad/Source/PDF/pdfwrap_lhapdf.f +++ b/epochX/cudacpp/ee_mumu.mad/Source/PDF/pdfwrap_lhapdf.f @@ -5,6 +5,7 @@ SUBROUTINE PDFWRAP C INCLUDE 'pdf.inc' INCLUDE '../alfas.inc' + INCLUDE '../vector.inc' INCLUDE '../coupl.inc' REAL*8 ZMASS DATA ZMASS/91.188D0/ diff --git a/epochX/cudacpp/ee_mumu.mad/Source/make_opts b/epochX/cudacpp/ee_mumu.mad/Source/make_opts index bd3c24228d..2607530b78 100644 --- a/epochX/cudacpp/ee_mumu.mad/Source/make_opts +++ b/epochX/cudacpp/ee_mumu.mad/Source/make_opts @@ -1,17 +1,11 @@ -pdlabel1= -pdlabel2= -lhapdf= -PYTHIA8_PATH=NotInstalled -MG5AMC_VERSION=3.5.0_lo_vect -GLOBAL_FLAG=-O3 -ffast-math -fbounds-check -ALOHA_FLAG= -MATRIX_FLAG= DEFAULT_CPP_COMPILER=g++ MACFLAG= STDLIB=-lstdc++ STDLIB_FLAG= DEFAULT_F_COMPILER=gfortran -DEFAULT_F2PY_COMPILER=f2py3 +DEFAULT_F2PY_COMPILER=f2py3.9 +MG5AMC_VERSION=SpecifiedByMG5aMCAtRunTime +PYTHIA8_PATH=NotInstalled #end_of_make_opts_variables BIASLIBDIR=../../../lib/ diff --git a/epochX/cudacpp/ee_mumu.mad/Source/makefile b/epochX/cudacpp/ee_mumu.mad/Source/makefile index dbe08b846e..00c73099a0 100644 --- a/epochX/cudacpp/ee_mumu.mad/Source/makefile +++ b/epochX/cudacpp/ee_mumu.mad/Source/makefile @@ -136,5 +136,7 @@ cleanSource: clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; -cleanall: cleanSource +cleanavx: + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; +cleanall: cleanSource # THIS IS THE ONE for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/CPPProcess.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/CPPProcess.cc index a6d90a2d1a..daa617d9ee 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/CPPProcess.cc +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/CPPProcess.cc @@ -238,25 +238,18 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 2 *** // Wavefunction(s) for diagram number 1 -#if not( defined __CUDACC__ and defined MGONGPU_TEST_DIVERGENCE ) - opzxxx( momenta, cHel[ihel][0], -1, w_fp[0], 0 ); // NB: opzxxx only uses pz -#else - if( ( blockDim.x * blockIdx.x + threadIdx.x ) % 2 == 0 ) - opzxxx( momenta, cHel[ihel][0], -1, w_fp[0], 0 ); // NB: opzxxx only uses pz - else - oxxxxx( momenta, 0, cHel[ihel][0], -1, w_fp[0], 0 ); -#endif + oxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][1], +1, w_fp[1], 1 ); - ixzxxx( momenta, cHel[ihel][2], -1, w_fp[2], 2 ); + ixxxxx( momenta, 0., cHel[ihel][2], -1, w_fp[2], 2 ); - oxzxxx( momenta, cHel[ihel][3], +1, w_fp[3], 3 ); + oxxxxx( momenta, 0., cHel[ihel][3], +1, w_fp[3], 3 ); - FFV1P0_3( w_fp[1], w_fp[0], COUPs[0], 0., 0., w_fp[4] ); + FFV1P0_3( w_fp[1], w_fp[0], COUPs[0], 1.0, 0., 0., w_fp[4] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[2], w_fp[3], w_fp[4], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[2], w_fp[3], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -266,10 +259,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 2 *** // Wavefunction(s) for diagram number 2 - FFV2_4_3( w_fp[1], w_fp[0], COUPs[1], COUPs[2], cIPD[0], cIPD[1], w_fp[4] ); + FFV2_4_3( w_fp[1], w_fp[0], COUPs[1], 1.0, COUPs[2], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 2 - FFV2_4_0( w_fp[2], w_fp[3], w_fp[4], COUPs[1], COUPs[2], &_fp[0] ); + FFV2_4_0( w_fp[2], w_fp[3], w_fp[4], COUPs[1], 1.0, COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -791,8 +784,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/auto_dsig1.f b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/auto_dsig1.f index b836e34865..31e7790d2d 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/auto_dsig1.f +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION EP1 DOUBLE PRECISION EM2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,15 +130,26 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - EP1=PDG2PDF(LPP(IB(1)),-11, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1) - $ ))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + EP1=PDG2PDF(LPP(IB(1)),-11, IB(1),XBK(IB(1)), QSCALE) IF (PDLABEL.EQ.'dressed') EP1_COMPONENTS(1:4) = $ EE_COMPONENTS(1:4) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - EM2=PDG2PDF(LPP(IB(2)),11, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + EM2=PDG2PDF(LPP(IB(2)),11, IB(2),XBK(IB(2)), QSCALE) IF (PDLABEL.EQ.'dressed') EM2_COMPONENTS(1:4) = $ EE_COMPONENTS(1:4) ENDIF diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/counters.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/counters.cc deleted file mode 100644 index 71fa817036..0000000000 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/counters.cc +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (C) 2020-2023 CERN and UCLouvain. -// Licensed under the GNU Lesser General Public License (version 3 or later). -// Created by: A. Valassi (Dec 2022) for the MG5aMC CUDACPP plugin. -// Further modified by: A. Valassi (2022-2023) for the MG5aMC CUDACPP plugin. - -#include "timer.h" -#define TIMERTYPE std::chrono::high_resolution_clock - -#include -#include - -// NB1: The C functions counters_xxx_ in this file are called by Fortran code -// Hence the trailing "_": 'call counters_end()' links to counters_end_ -// See http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html - -// NB2: This file also contains C++ code and is built using g++ -// Hence use 'extern "C"' to avoid name mangling by the C++ compiler -// See https://www.geeksforgeeks.org/extern-c-in-c - -extern "C" -{ - // Now: fortran=-1, cudacpp=0 - // Eventually: fortran=-1, cuda=0, cpp/none=1, cpp/sse4=2, etc... - constexpr unsigned int nimplC = 2; - constexpr unsigned int iimplF2C( int iimplF ) { return iimplF + 1; } - const char* iimplC2TXT( int iimplC ) - { - const int iimplF = iimplC - 1; - switch( iimplF ) - { - case -1: return "Fortran"; break; - case +0: return "CudaCpp"; break; - default: assert( false ); break; - } - } - - static mgOnGpu::Timer program_timer; - static float program_totaltime = 0; - static mgOnGpu::Timer matrix1_timer; - static float matrix1_totaltime = 0; - static mgOnGpu::Timer smatrix1_timer; - static float smatrix1_totaltime = 0; - static mgOnGpu::Timer smatrix1multi_timer[nimplC]; - static float smatrix1multi_totaltime[nimplC] = { 0 }; - static int matrix1_counter = 0; - static int smatrix1_counter = 0; - static int smatrix1multi_counter[nimplC] = { 0 }; - - void counters_initialise_() - { - program_timer.Start(); - return; - } - - void counters_matrix1_start_() - { - matrix1_counter++; - matrix1_timer.Start(); - return; - } - - void counters_matrix1_stop_() - { - matrix1_totaltime += matrix1_timer.GetDuration(); - return; - } - - void counters_smatrix1_start_() - { - smatrix1_counter++; - smatrix1_timer.Start(); - return; - } - - void counters_smatrix1_stop_() - { - smatrix1_totaltime += smatrix1_timer.GetDuration(); - return; - } - - void counters_smatrix1multi_start_( const int* iimplF, const int* pnevt ) - { - const unsigned int iimplC = iimplF2C( *iimplF ); - smatrix1multi_counter[iimplC] += *pnevt; - smatrix1multi_timer[iimplC].Start(); - return; - } - - void counters_smatrix1multi_stop_( const int* iimplF ) - { - const unsigned int iimplC = iimplF2C( *iimplF ); - smatrix1multi_totaltime[iimplC] += smatrix1multi_timer[iimplC].GetDuration(); - return; - } - - void counters_finalise_() - { - program_totaltime += program_timer.GetDuration(); - // Write to stdout - float overhead_totaltime = program_totaltime; - for( unsigned int iimplC = 0; iimplC < nimplC; iimplC++ ) overhead_totaltime -= smatrix1multi_totaltime[iimplC]; - printf( " [COUNTERS] PROGRAM TOTAL : %9.4fs\n", program_totaltime ); - printf( " [COUNTERS] Fortran Overhead ( 0 ) : %9.4fs\n", overhead_totaltime ); - for( unsigned int iimplC = 0; iimplC < nimplC; iimplC++ ) - if( smatrix1multi_counter[iimplC] > 0 ) - printf( " [COUNTERS] %7s MEs ( %1d ) : %9.4fs for %8d events => throughput is %8.2E events/s\n", - iimplC2TXT( iimplC ), - iimplC + 1, - smatrix1multi_totaltime[iimplC], - smatrix1multi_counter[iimplC], - smatrix1multi_counter[iimplC] / smatrix1multi_totaltime[iimplC] ); - return; - } -} diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/counters.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/counters.cc new file mode 120000 index 0000000000..06e29b46f9 --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/counters.cc @@ -0,0 +1 @@ +../counters.cc \ No newline at end of file diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/matrix1.f b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/matrix1.f index e00f0e1b64..21e300b33e 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/matrix1.f +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/matrix1.f @@ -410,7 +410,6 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C ---------- C BEGIN CODE C ---------- - call counters_matrix1_start() IF (FIRST) THEN FIRST=.FALSE. IF(ZERO.NE.0D0) FK_ZERO = SIGN(MAX(ABS(ZERO), ABS(ZERO @@ -478,7 +477,6 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) ENDDO ENDDO - call counters_matrix1_stop() END SUBROUTINE PRINT_ZERO_AMP_1() diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/ompnumthreads.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/ompnumthreads.cc deleted file mode 100644 index 1d004923b9..0000000000 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/ompnumthreads.cc +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2020-2023 CERN and UCLouvain. -// Licensed under the GNU Lesser General Public License (version 3 or later). -// Created by: A. Valassi (Dec 2022) for the MG5aMC CUDACPP plugin. -// Further modified by: A. Valassi (2022-2023) for the MG5aMC CUDACPP plugin. - -#include - -// NB1: The C function ompnumthreadsNotSetMeansOneThread_ is called by Fortran code -// Hence the trailing "_": 'call xxx()' links to xxx_ -// See http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html - -// NB2: This file also contains C++ code and is built using g++ -// Hence use 'extern "C"' to avoid name mangling by the C++ compiler -// See https://www.geeksforgeeks.org/extern-c-in-c - -#ifdef _OPENMP -extern "C" -{ - void ompnumthreads_not_set_means_one_thread_() - { - const int debuglevel = 0; // quiet(-1), info(0), debug(1) - ompnumthreadsNotSetMeansOneThread( debuglevel ); // call the inline C++ function defined in the .h file - } -} -#endif diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/ompnumthreads.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/ompnumthreads.cc new file mode 120000 index 0000000000..645dc78215 --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/P1_epem_mupmum/ompnumthreads.cc @@ -0,0 +1 @@ +../ompnumthreads.cc \ No newline at end of file diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/counters.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/counters.cc new file mode 100644 index 0000000000..cd6ecc8acd --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/counters.cc @@ -0,0 +1,99 @@ +// Copyright (C) 2020-2023 CERN and UCLouvain. +// Licensed under the GNU Lesser General Public License (version 3 or later). +// Created by: A. Valassi (Dec 2022) for the MG5aMC CUDACPP plugin. +// Further modified by: A. Valassi (2022-2023) for the MG5aMC CUDACPP plugin. + +#include "timer.h" +#define TIMERTYPE std::chrono::high_resolution_clock + +#include +#include + +// NB1: The C functions counters_xxx_ in this file are called by Fortran code +// Hence the trailing "_": 'call counters_end()' links to counters_end_ +// See http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html + +// NB2: This file also contains C++ code and is built using g++ +// Hence use 'extern "C"' to avoid name mangling by the C++ compiler +// See https://www.geeksforgeeks.org/extern-c-in-c + +extern "C" +{ + // Now: fortran=-1, cudacpp=0 + // Eventually: fortran=-1, cuda=0, cpp/none=1, cpp/sse4=2, etc... + constexpr unsigned int nimplC = 2; + constexpr unsigned int iimplF2C( int iimplF ) { return iimplF + 1; } + const char* iimplC2TXT( int iimplC ) + { + const int iimplF = iimplC - 1; + switch( iimplF ) + { + case -1: return "Fortran"; break; + case +0: return "CudaCpp"; break; + default: assert( false ); break; + } + } + + static mgOnGpu::Timer program_timer; + static float program_totaltime = 0; + static mgOnGpu::Timer smatrix1_timer; + static float smatrix1_totaltime = 0; + static mgOnGpu::Timer smatrix1multi_timer[nimplC]; + static float smatrix1multi_totaltime[nimplC] = { 0 }; + static int matrix1_counter = 0; + static int smatrix1_counter = 0; + static int smatrix1multi_counter[nimplC] = { 0 }; + + void counters_initialise_() + { + program_timer.Start(); + return; + } + + void counters_smatrix1_start_() + { + smatrix1_counter++; + smatrix1_timer.Start(); + return; + } + + void counters_smatrix1_stop_() + { + smatrix1_totaltime += smatrix1_timer.GetDuration(); + return; + } + + void counters_smatrix1multi_start_( const int* iimplF, const int* pnevt ) + { + const unsigned int iimplC = iimplF2C( *iimplF ); + smatrix1multi_counter[iimplC] += *pnevt; + smatrix1multi_timer[iimplC].Start(); + return; + } + + void counters_smatrix1multi_stop_( const int* iimplF ) + { + const unsigned int iimplC = iimplF2C( *iimplF ); + smatrix1multi_totaltime[iimplC] += smatrix1multi_timer[iimplC].GetDuration(); + return; + } + + void counters_finalise_() + { + program_totaltime += program_timer.GetDuration(); + // Write to stdout + float overhead_totaltime = program_totaltime; + for( unsigned int iimplC = 0; iimplC < nimplC; iimplC++ ) overhead_totaltime -= smatrix1multi_totaltime[iimplC]; + printf( " [COUNTERS] PROGRAM TOTAL : %9.4fs\n", program_totaltime ); + printf( " [COUNTERS] Fortran Overhead ( 0 ) : %9.4fs\n", overhead_totaltime ); + for( unsigned int iimplC = 0; iimplC < nimplC; iimplC++ ) + if( smatrix1multi_counter[iimplC] > 0 ) + printf( " [COUNTERS] %7s MEs ( %1d ) : %9.4fs for %8d events => throughput is %8.2E events/s\n", + iimplC2TXT( iimplC ), + iimplC + 1, + smatrix1multi_totaltime[iimplC], + smatrix1multi_counter[iimplC], + smatrix1multi_counter[iimplC] / smatrix1multi_totaltime[iimplC] ); + return; + } +} diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/ee_mumu.mad/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/dummy_fct.f b/epochX/cudacpp/ee_mumu.mad/SubProcesses/dummy_fct.f index 076cf29d67..4f7a204b8f 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/dummy_fct.f +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/dummy_fct.f @@ -32,7 +32,7 @@ logical FUNCTION dummy_cuts(P) LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL) logical do_cuts(nexternal) COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY, - . IS_A_ONIUM, do_cuts + & IS_A_ONIUM, do_cuts dummy_cuts=.true. @@ -118,15 +118,16 @@ double precision function user_dynamical_scale(P) C ************************************************************ -C default for the library implementing a dummt bias function +C default for the library implementing a dummy bias function C ************************************************************ subroutine bias_wgt_custom(p, original_weight, bias_weight) - implicit none + implicit none C C Parameters C include 'nexternal.inc' -C + +C C Arguments C double precision p(0:3, nexternal) @@ -161,3 +162,4 @@ subroutine bias_wgt_custom(p, original_weight, bias_weight) return end subroutine bias_wgt_custom + diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/makefile b/epochX/cudacpp/ee_mumu.mad/SubProcesses/makefile index 74db44d848..093bc84271 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/makefile +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/makefile @@ -9,6 +9,33 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra +# Sets correct target based on MAKECMDGOALS +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) + else + TARGET := $(MAKECMDGOALS) + endif +endif + +# Sets correct cppavx target as dependency when compiling Fortran +ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) + ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) + endif +endif + +# Default goal +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -48,10 +75,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -89,7 +116,7 @@ SYMMETRY = symmetry.o idenparts.o # Binaries -LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 +#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) @@ -115,10 +142,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.cudacpplibs: - $(MAKE) -f $(CUDACPP_MAKEFILE) - touch $@ - # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary @@ -130,26 +153,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +# Only used for testing, should be removed in the future madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -215,49 +259,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else ifeq ($(UNAME_P),arm) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z endif -avxnone: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=none +ALL: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z + $(MAKE) USEBUILDDIR=1 cuda -avxsse4: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 +cppnone: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -avxavx2: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 +cppsse4: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -avx512y: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y +cppavx2: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -avx512z: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z +cpp512y: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -###endif +cpp512z: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z + +cuda: + $(MAKE) -f $(CUDACPP_MAKEFILE) cuda # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +BUILD_DIRS := $(wildcard build.*) +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + +clean: +ifeq ($(USEBUILDDIR),1) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only cleaning build dir.) + $(RM) -r $(BUILD_DIRS) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + $(info USEBUILDDIR=0 only cleaning build with no dir.) + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* + $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir + $(RM) $(CUDACPP_BUILDDIR)/.*libs +endif + +cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone + +cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 + +cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 + +clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y + +clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z + +cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda + $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs - rm -f .libs + $(RM) $(CUDACPP_BUILDDIR)/.*libs + $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall - rm -rf $(LIBDIR)libbias.$(libext) - rm -f ../../Source/*.mod ../../Source/*/*.mod + $(RM) -r $(LIBDIR)libbias.$(libext) + $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/ompnumthreads.cc b/epochX/cudacpp/ee_mumu.mad/SubProcesses/ompnumthreads.cc new file mode 100644 index 0000000000..1d004923b9 --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/ompnumthreads.cc @@ -0,0 +1,25 @@ +// Copyright (C) 2020-2023 CERN and UCLouvain. +// Licensed under the GNU Lesser General Public License (version 3 or later). +// Created by: A. Valassi (Dec 2022) for the MG5aMC CUDACPP plugin. +// Further modified by: A. Valassi (2022-2023) for the MG5aMC CUDACPP plugin. + +#include + +// NB1: The C function ompnumthreadsNotSetMeansOneThread_ is called by Fortran code +// Hence the trailing "_": 'call xxx()' links to xxx_ +// See http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html + +// NB2: This file also contains C++ code and is built using g++ +// Hence use 'extern "C"' to avoid name mangling by the C++ compiler +// See https://www.geeksforgeeks.org/extern-c-in-c + +#ifdef _OPENMP +extern "C" +{ + void ompnumthreads_not_set_means_one_thread_() + { + const int debuglevel = 0; // quiet(-1), info(0), debug(1) + ompnumthreadsNotSetMeansOneThread( debuglevel ); // call the inline C++ function defined in the .h file + } +} +#endif diff --git a/epochX/cudacpp/ee_mumu.mad/SubProcesses/proc_characteristics b/epochX/cudacpp/ee_mumu.mad/SubProcesses/proc_characteristics index 95773bcf0c..12e1ef1648 100644 --- a/epochX/cudacpp/ee_mumu.mad/SubProcesses/proc_characteristics +++ b/epochX/cudacpp/ee_mumu.mad/SubProcesses/proc_characteristics @@ -8,7 +8,7 @@ ninitial = 2 grouped_matrix = True has_loops = False - bias_module = dummy + bias_module = None max_n_matched_jets = 0 colored_pdgs = [1, 2, 3, 4, 5, 6, 21] complex_mass_scheme = False diff --git a/epochX/cudacpp/ee_mumu.mad/bin/generate_events b/epochX/cudacpp/ee_mumu.mad/bin/generate_events index 107313b25d..5577cc66a0 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/generate_events +++ b/epochX/cudacpp/ee_mumu.mad/bin/generate_events @@ -46,7 +46,7 @@ if __debug__ and (not os.path.exists(pjoin(root_path,'../..', 'bin','create_rele sys.path.append(pjoin(root_path,'bin','internal')) import madevent_interface as ME - +import misc as misc import logging import logging.config @@ -160,17 +160,31 @@ if '__main__' == __name__: # Check that python version is valid set_configuration() - argument = sys.argv + argument = sys.argv + + # check for plugin customization of the launch command + launch_interface = ME.MadEventCmdShell + if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + + try: if '-h' in argument or '--help' in argument: - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.exec_cmd('help generate_events') sys.exit() elif len(argument) > 1 and argument[1] in ['0', '1', '2']: argument = treat_old_argument(argument) with ME.MadEventCmdShell.RunWebHandling(root_path, ): - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.run_cmd('generate_events %s' % ' '.join(argument[1:])) launch.run_cmd('quit') except ME.MadEventAlreadyRunning as message: diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/banner.py b/epochX/cudacpp/ee_mumu.mad/bin/internal/banner.py index 7624b9f557..824815f47b 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/internal/banner.py +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/banner.py @@ -537,7 +537,7 @@ def charge_card(self, tag): self.param_card = param_card_reader.ParamCard(param_card) return self.param_card elif tag == 'mgruncard': - self.run_card = RunCard(self[tag]) + self.run_card = RunCard(self[tag], unknown_warning=False) return self.run_card elif tag == 'mg5proccard': proc_card = self[tag].split('\n') @@ -1002,13 +1002,14 @@ def __init__(self, finput=None, **opt): self.allowed_value = {} self.default_setup() + self.plugin_input(finput) # if input is define read that input if isinstance(finput, (file, str, StringIO.StringIO)): self.read(finput, **opt) - self.plugin_input(finput) + def plugin_input(self, finput=None): @@ -2624,6 +2625,7 @@ class RunCard(ConfigFile): default_include_file = 'run_card.inc' default_autodef_file = 'run.inc' donewarning = [] + include_as_parameter = [] def plugin_input(self, finput): @@ -2670,18 +2672,40 @@ def __new__(cls, finput=None, **opt): elif isinstance(finput, cls): target_class = finput.__class__ elif isinstance(finput, str): + path = finput if '\n' not in finput: finput = open(finput).read() if 'req_acc_FO' in finput: target_class = RunCardNLO else: target_class = RunCardLO + if MADEVENT and os.path.exists(pjoin(MEDIR, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(MEDIR, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + elif not MADEVENT and os.path.exists(path.replace('run_card.dat', '../bin/internal/launch_plugin.py')): + misc.sprint('try to use plugin class') + pydir = path.replace('run_card.dat', '../bin/internal/') + with misc.TMP_variable(sys, 'path', sys.path + [pydir]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + else: return None target_class.fill_post_set_from_blocks() - - return super(RunCard, cls).__new__(target_class, finput, **opt) + out = super(RunCard, cls).__new__(target_class, finput, **opt) + if not isinstance(out, RunCard): #should not happen but in presence of missmatch of library loaded. + out.__init__(finput, **opt) + return out else: return super(RunCard, cls).__new__(cls, finput, **opt) @@ -2709,7 +2733,7 @@ def __init__(self, *args, **opts): self.system_default = {} self.display_block = [] # set some block to be displayed - + self.fct_mod = {} # {param: (fct_pointer, *argument, **opts)} self.cut_class = {} self.warned=False @@ -2746,7 +2770,7 @@ def get_lepton_densities(cls): def add_param(self, name, value, fortran_name=None, include=True, hidden=False, legacy=False, cut=False, system=False, sys_default=None, - autodef=False, + autodef=False, fct_mod=None, **opts): """ add a parameter to the card. value is the default value and defines the type (int/float/bool/str) of the input. @@ -2760,6 +2784,7 @@ def add_param(self, name, value, fortran_name=None, include=True, If a path (Source/PDF/pdf.inc) the definition will be added within that file Default is False (does not add the definition) entry added in the run_card will automatically have this on True. + fct_mod: defines a function to run if the parameter is modify in the include file options of **opts: - allowed: list of valid options. '*' means anything else should be allowed. empty list means anything possible as well. @@ -2784,8 +2809,12 @@ def add_param(self, name, value, fortran_name=None, include=True, if autodef: self.definition_path[autodef].append(name) self.user_set.add(name) + # function to trigger if a value is modified in the include file + # main target is action to force correct recompilation (like for compilation flag/...) + if fct_mod: + self.fct_mod[name] = fct_mod - def read(self, finput, consistency=True): + def read(self, finput, consistency=True, unknown_warning=True): """Read the input file, this can be a path to a file, a file object, a str with the content of the file.""" @@ -2793,6 +2822,7 @@ def read(self, finput, consistency=True): if "\n" in finput: finput = finput.split('\n') elif os.path.isfile(finput): + self.path = finput finput = open(finput) else: raise Exception("No such file %s" % finput) @@ -2807,7 +2837,7 @@ def read(self, finput, consistency=True): name = name.lower().strip() if name not in self: #looks like an entry added by a user -> add it nicely - self.add_unknown_entry(name, value) + self.add_unknown_entry(name, value, unknown_warning) else: self.set( name, value, user=True) # parameter not set in the run_card can be set to compatiblity value @@ -2819,7 +2849,7 @@ def read(self, finput, consistency=True): logger.warning(str(error)) else: raise - def add_unknown_entry(self, name, value): + def add_unknown_entry(self, name, value, unknow_warning): """function to add an entry to the run_card when the associated parameter does not exists. This is based on the guess_entry_fromname for the various syntax providing input. This then call add_param accordingly. @@ -2858,7 +2888,7 @@ def add_unknown_entry(self, name, value): raise Exception("dictionary need to have at least one entry") default['dict']['__type__'] = default[self.guess_type_from_value(default_value[0])] - if name not in RunCard.donewarning: + if name not in RunCard.donewarning and unknow_warning: logger.warning("Found unexpected entry in run_card: \"%s\" with value \"%s\".\n"+\ " The type was assigned to %s. \n"+\ " The definition of that variable will %sbe automatically added to fortran file %s\n"+\ @@ -2896,7 +2926,16 @@ def valid_line(self, line, tmp): return False else: return True - + + + def reset_simd(self, old_value, new_value, name, *args, **opts): + raise Exception('pass in reset simd') + + def make_clean(self,old_value, new_value, name, dir): + raise Exception('pass make clean for ', dir) + + def make_Ptouch(self,old_value, new_value, name, reset): + raise Exception('pass Ptouch for ', reset) def write(self, output_file, template=None, python_template=False, write_hidden=False, template_options=None, **opt): @@ -3071,6 +3110,77 @@ def write(self, output_file, template=None, python_template=False, else: output_file.write(text) + def get_last_value_include(self, output_dir): + """For paraeter in self.fct_mod + parse the associate inc file to get the value of the previous run. + We return a dictionary {name: old_value} + if inc file does not exist we will return the current value (i.e. set has no change) + """ + + #remember that + # default_include_file is a class variable + # self.includepath is on the form include_path : [list of param ] + out = {} + + # setup inc_to_parse to be like self.includepath (include_path : [list of param ]) + # BUT only containing the parameter that need to be tracked for the fct_mod option + inc_to_parse = {} + for inc_file, params in self.includepath.items(): + if not inc_file: + continue + if any(p in params for p in self.fct_mod): + inc_to_parse[inc_file] = [name for name in self.includepath[inc_file] if name in self.fct_mod] + + # now loop over the files and ask the associate function + for inc_file, params in inc_to_parse.items(): + if inc_file is True: + inc_file = self.default_include_file + out.update(self.get_value_from_include(inc_file, params, output_dir)) + + return out + + def get_value_from_include(self, path, list_of_params, output_dir): + """for a given include file return the current value of the requested parameter + return a dictionary {name: value} + if path does not exists return the current value in self for all parameter""" + + #WARNING DOES NOT HANDLE LIST/DICT so far + + # handle case where file is missing + if not os.path.exists(pjoin(output_dir,path)): + misc.sprint("include file not existing", pjoin(output_dir,path)) + out = {name: self[name] for name in list_of_params} + + with open(pjoin(output_dir,path), 'r') as fsock: + text = fsock.read() + + for name in list_of_params: + misc.sprint(name, name in self.fortran_name) + misc.sprint(self.fortran_name[name] if name in self.fortran_name[name] else name) + to_track = [self.fortran_name[name] if name in self.fortran_name else name for name in list_of_params] + pattern = re.compile(r"\(?(%(names)s)\s?=\s?([^)]*)\)?" % {'names':'|'.join(to_track)}, re.I) + out = dict(pattern.findall(text)) + misc.sprint(out) + for name in list_of_params: + if name in self.fortran_name: + value = out[self.fortran_name[name]] + del out[self.fortran_name[name]] + out[name] = value + + for name, value in out.items(): + try: + out[name] = self.format_variable(value, type(self[name])) + except Exception: + continue + + if len(out) != len(list_of_params): + misc.sprint(list_of_params) + misc.sprint(to_track) + misc.sprint(self.fortran_name) + misc.sprint(text) + raise Exception + return out + def get_default(self, name, default=None, log_level=None): """return self[name] if exist otherwise default. log control if we @@ -3361,71 +3471,93 @@ def write_include_file(self, output_dir, output_file=None): #ensusre that system only parameter are correctly set self.update_system_parameter_for_include() + value_in_old_include = self.get_last_value_include(output_dir) + + if output_dir: self.write_autodef(output_dir, output_file=None) # check/fix status of customised functions self.edit_dummy_fct_from_file(self["custom_fcts"], os.path.dirname(output_dir)) for incname in self.includepath: - if incname is True: - pathinc = self.default_include_file - elif incname is False: - continue - else: - pathinc = incname + self.write_one_include_file(output_dir, incname, output_file) + + for name,value in value_in_old_include.items(): + if value != self[name]: + self.fct_mod[name][0](value, self[name], name, *self.fct_mod[name][1],**self.fct_mod[name][2]) - if output_file: - fsock = output_file + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + misc.sprint(incname) + if incname is True: + pathinc = self.default_include_file + elif incname is False: + return + else: + pathinc = incname + + if output_file: + fsock = output_file + else: + fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) + + + for key in self.includepath[incname]: + #define the fortran name + if key in self.fortran_name: + fortran_name = self.fortran_name[key] else: - fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) - for key in self.includepath[incname]: - #define the fortran name - if key in self.fortran_name: - fortran_name = self.fortran_name[key] + fortran_name = key + + if incname in self.include_as_parameter: + fsock.writelines('INTEGER %s\n' % fortran_name) + #get the value with warning if the user didn't set it + value = self.get_default(key) + if hasattr(self, 'mod_inc_%s' % key): + value = getattr(self, 'mod_inc_%s' % key)(value) + # Special treatment for strings containing a list of + # strings. Convert it to a list of strings + if isinstance(value, list): + # in case of a list, add the length of the list as 0th + # element in fortran. Only in case of integer or float + # list (not for bool nor string) + targettype = self.list_parameter[key] + if targettype is bool: + pass + elif targettype is int: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) + fsock.writelines(line) + elif targettype is float: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) + fsock.writelines(line) + # output the rest of the list in fortran + for i,v in enumerate(value): + line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) + fsock.writelines(line) + elif isinstance(value, dict): + for fortran_name, onevalue in value.items(): + line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) + fsock.writelines(line) + elif isinstance(incname,str) and 'compile' in incname: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, value) else: - fortran_name = key - - #get the value with warning if the user didn't set it - value = self.get_default(key) - if hasattr(self, 'mod_inc_%s' % key): - value = getattr(self, 'mod_inc_%s' % key)(value) - # Special treatment for strings containing a list of - # strings. Convert it to a list of strings - if isinstance(value, list): - # in case of a list, add the length of the list as 0th - # element in fortran. Only in case of integer or float - # list (not for bool nor string) - targettype = self.list_parameter[key] - if targettype is bool: - pass - elif targettype is int: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) - fsock.writelines(line) - elif targettype is float: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) - fsock.writelines(line) - # output the rest of the list in fortran - for i,v in enumerate(value): - line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) - fsock.writelines(line) - elif isinstance(value, dict): - for fortran_name, onevalue in value.items(): - line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) - fsock.writelines(line) - elif isinstance(incname,str) and 'compile' in incname: line = '%s = %s \n' % (fortran_name, value) - fsock.write(line) + fsock.write(line) + else: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, self.f77_formatting(value)) else: line = '%s = %s \n' % (fortran_name, self.f77_formatting(value)) - fsock.writelines(line) - if not output_file: - fsock.close() - path = pjoin(output_dir,pathinc) - if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): - files.mv(path+'.tmp', path) - else: - os.remove(path+'.tmp') - + fsock.writelines(line) + if not output_file: + fsock.close() + path = pjoin(output_dir,pathinc) + if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): + files.mv(path+'.tmp', path) + else: + os.remove(path+'.tmp') def write_autodef(self, output_dir, output_file=None): """ Add the definition of variable to run.inc if the variable is set with autodef. @@ -3764,13 +3896,14 @@ def remove_all_cut(self): %(tmin_for_channel)s = tmin_for_channel ! limit the non-singular reach of --some-- channel of integration related to T-channel diagram (value between -1 and 0), -1 is no impact %(survey_splitting)s = survey_splitting ! for loop-induced control how many core are used at survey for the computation of a single iteration. %(survey_nchannel_per_job)s = survey_nchannel_per_job ! control how many Channel are integrated inside a single job on cluster/multicore - %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) + %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) #********************************************************************* -# Compilation flag. No automatic re-compilation (need manual "make clean" in Source) +# Compilation flag. #********************************************************************* %(global_flag)s = global_flag ! fortran optimization flag use for the all code. %(aloha_flag)s = aloha_flag ! fortran optimization flag for aloha function. Suggestions: '-ffast-math' %(matrix_flag)s = matrix_flag ! fortran optimization flag for matrix.f function. Suggestions: '-O3' + %(vector_size)s = vector_size ! size designed for SIMD/OpenMP/GPU (number of events in lockstep) """ template_off = '# To see advanced option for Phase-Space optimization: type "update psoptim"' @@ -3926,9 +4059,12 @@ class RunCardLO(RunCard): "get_dummy_x1_x2": pjoin("SubProcesses","dummy_fct.f"), "dummy_boostframe": pjoin("SubProcesses","dummy_fct.f"), "user_dynamical_scale": pjoin("SubProcesses","dummy_fct.f"), + "bias_wgt_custom": pjoin("SubProcesses","dummy_fct.f"), "user_": pjoin("SubProcesses","dummy_fct.f") # all function starting by user will be added to that file } + include_as_parameter = ['vector.inc'] + if MG5DIR: default_run_card = pjoin(MG5DIR, "internal", "default_run_card_lo.dat") @@ -4162,10 +4298,15 @@ def default_setup(self): self.add_param('hel_splitamp', True, hidden=True, include=False, comment='decide if amplitude aloha call can be splitted in two or not when doing helicity per helicity optimization.') self.add_param('hel_zeroamp', True, hidden=True, include=False, comment='decide if zero amplitude can be removed from the computation when doing helicity per helicity optimization.') self.add_param('SDE_strategy', 1, allowed=[1,2], fortran_name="sde_strat", comment="decide how Multi-channel should behaves \"1\" means full single diagram enhanced (hep-ph/0208156), \"2\" use the product of the denominator") - self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check') - self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math') - self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3') - + self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check', + fct_mod=(self.make_clean, ('Source'),{})) + self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math', + fct_mod=(self.make_clean, ('Source/DHELAS'),{})) + self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3', + fct_mod=(self.make_Ptouch, ('matrix'),{})) + self.add_param('vector_size', 1, include='vector.inc', hidden=True, comment='lockstep size for parralelism run', + fortran_name='VECSIZE_MEMMAX', fct_mod=(self.reset_simd,(),{})) + # parameter allowing to define simple cut via the pdg # Special syntax are related to those. (can not be edit directly) self.add_param('pt_min_pdg',{'__type__':0.}, include=False, cut=True) @@ -4187,8 +4328,7 @@ def default_setup(self): self.add_param('mxxmin4pdg',[-1.], system=True) self.add_param('mxxpart_antipart', [False], system=True) - # CUDACPP parameters - self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + def check_validity(self): """ """ diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/check_param_card.py b/epochX/cudacpp/ee_mumu.mad/bin/internal/check_param_card.py index fe874a06a4..71089d7480 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/internal/check_param_card.py +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/check_param_card.py @@ -85,7 +85,7 @@ def load_str(self, text): self.value= ' '.join(data[len(self.lhacode):]) # check that lhacode are the first entry otherwise return invalid param. if ' '.join([str(i) for i in self.lhacode]) != ' '.join(data[:len(self.lhacode)]): - raise InvalidParam + raise InvalidParam("line was %s" % str(data)) else: self.value = data[-1] diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/common_run_interface.py b/epochX/cudacpp/ee_mumu.mad/bin/internal/common_run_interface.py index 5d0187e3fa..14c7f310dc 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/internal/common_run_interface.py +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/common_run_interface.py @@ -749,13 +749,15 @@ def writeRunWeb(me_dir): class RunWebHandling(object): - def __init__(self, me_dir, crashifpresent=True, warnifpresent=True): + def __init__(self, me_dir, crashifpresent=True, warnifpresent=True, force_run=False): """raise error if RunWeb already exists me_dir is the directory where the write RunWeb""" self.remove_run_web = True self.me_dir = me_dir - + if force_run: + self.remove_run_web = False + return if crashifpresent or warnifpresent: if os.path.exists(pjoin(me_dir, 'RunWeb')): pid = open(pjoin(me_dir, 'RunWeb')).read() @@ -6574,7 +6576,7 @@ def reask(self, *args, **opt): fail_due_to_format = 0 #parameter to avoid infinite loop def postcmd(self, stop, line): - if line not in [None, '0', 'done', '']: + if line not in [None, '0', 'done', '',0]: ending_question = cmd.OneLinePathCompletion.postcmd(self,stop,line) else: ending_question = True @@ -7533,7 +7535,8 @@ def open_file(self, answer): else: raise if time.time() - start < .5: - self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y') + self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y', + timeout=False) self.reload_card(path) def reload_card(self, path): diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/extended_cmd.py b/epochX/cudacpp/ee_mumu.mad/bin/internal/extended_cmd.py index a6a8609dce..2f37070580 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/internal/extended_cmd.py +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/extended_cmd.py @@ -1108,9 +1108,12 @@ def ask(self, question, default, choices=[], path_msg=None, if alias: choices += list(alias.keys()) + + question_instance = obj(question, allow_arg=choices, default=default, mother_interface=self, **opt) - + if fct_timeout is None: + fct_timeout = lambda x: question_instance.postcmd(x, default) if x and default else False if first_cmd: if isinstance(first_cmd, str): question_instance.onecmd(first_cmd) @@ -2271,6 +2274,9 @@ def postcmd(self, stop, line): if n: self.default(line) return self.postcmd(stop, line) + elif self.value is None and line: + self.default(line) + return self.postcmd(stop, line) if not self.casesensitive: for ans in self.allow_arg: if ans.lower() == self.value.lower(): diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/gen_ximprove.py b/epochX/cudacpp/ee_mumu.mad/bin/internal/gen_ximprove.py index 3b8ec31215..a88d60b282 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/internal/gen_ximprove.py +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/gen_ximprove.py @@ -154,10 +154,15 @@ def get_helicity(self, to_submit=True, clean=True): p = misc.Popen(['./gensym'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=Pdir) #sym_input = "%(points)d %(iterations)d %(accuracy)f \n" % self.opts + (stdout, _) = p.communicate(''.encode()) stdout = stdout.decode('ascii',errors='ignore') - nb_channel = max([math.floor(float(d)) for d in stdout.split()]) - + try: + nb_channel = max([math.floor(float(d)) for d in stdout.split()]) + except Exception as error: + misc.sprint(stdout, 'no channel or error for %s' % Pdir) + continue + self.cmd.compile(['madevent_forhel'], cwd=Pdir) if not os.path.exists(pjoin(Pdir, 'madevent_forhel')): raise Exception('Error make madevent_forhel not successful') diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/launch_plugin.py b/epochX/cudacpp/ee_mumu.mad/bin/internal/launch_plugin.py new file mode 100644 index 0000000000..23271b846e --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/launch_plugin.py @@ -0,0 +1,100 @@ + +import logging +import os +import subprocess +pjoin = os.path.join +logger = logging.getLogger('cmdprint') # for stdout + +try: + import madgraph +except ImportError: + import internal.madevent_interface as madevent_interface + import internal.misc as misc + import internal.extended_cmd as extended_cmd + import internal.banner as banner_mod +else: + import madgraph.interface.madevent_interface as madevent_interface + import madgraph.various.misc as misc + import madgraph.interface.extended_cmd as extended_cmd + import madgraph.various.banner as banner_mod + +class CPPMEInterface(madevent_interface.MadEventCmdShell): + + def compile(self, *args, **opts): + """ """ + + import multiprocessing + if not self.options['nb_core'] or self.options['nb_core'] == 'None': + self.options['nb_core'] = multiprocessing.cpu_count() + + if args and args[0][0] == 'madevent' and hasattr(self, 'run_card'): + import pathlib + import os + pjoin = os.path.join + + + + + cudacpp_backend = self.run_card['cudacpp_backend'].upper() # the default value is defined in banner.py + logger.info("Building madevent in madevent_interface.py with '%s' matrix elements"%cudacpp_backend) + if cudacpp_backend == 'FORTRAN': + args[0][0] = 'madevent_fortran_link' + elif cudacpp_backend == 'CPP': + args[0][0] = 'madevent_cpp_link' + elif cudacpp_backend == 'CUDA': + args[0][0] = 'madevent_cuda_link' + else: + raise Exception("Invalid cudacpp_backend='%s': only 'FORTRAN', 'CPP', 'CUDA' are supported") + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + else: + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + +class CPPRunCard(banner_mod.RunCardLO): + + def reset_simd(self, old_value, new_value, name): + if not hasattr(self, 'path'): + raise Exception + + if name == "vector_size" and new_value <= int(old_value): + # code can handle the new size -> do not recompile + return + + Sourcedir = pjoin(os.path.dirname(os.path.dirname(self.path)), 'Source') + subprocess.call(['make', 'cleanavx'], cwd=Sourcedir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + def plugin_input(self, finput): + return + + def default_setup(self): + super().default_setup() + self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + + + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + if incname == "vector.inc" and 'vector_size' not in self.user_set: + return + super().write_one_include_file(output_dir, incname, output_file) + + + def check_validity(self): + """ensure that PLUGIN information are consistent""" + + super().check_validity() + + if self['SDE_strategy'] != 1: + logger.warning('SDE_strategy different of 1 is not supported with SMD/GPU mode') + self['sde_strategy'] = 1 + + if self['hel_recycling']: + self['hel_recycling'] = False + +class GPURunCard(CPPRunCard): + + def default_setup(self): + super(CPPRunCard, self).default_setup() + self.add_param('cudacpp_backend', 'CUDA', include=False, hidden=False) + +MEINTERFACE = CPPMEInterface +RunCard = CPPRunCard diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/madevent_interface.py b/epochX/cudacpp/ee_mumu.mad/bin/internal/madevent_interface.py index 920e07a926..d722702891 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/internal/madevent_interface.py +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/madevent_interface.py @@ -3796,9 +3796,11 @@ def do_combine_events(self, line): if self.run_card['bias_module'].lower() not in ['dummy', 'none'] and nb_event: self.correct_bias() - + elif self.run_card['custom_fcts']: + self.correct_bias() + logger.info("combine events done in %s", time.time()-start) - + self.to_store.append('event') diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot new file mode 100755 index 0000000000..7deee7ac88 --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_unweighted_events.lhe.gz ]];then + gunzip -c ${run}_unweighted_events.lhe.gz > unweighted_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e unweighted_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir $run + cd $run + echo "../unweighted_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl $run parton + mv plots.html ${run}_plots.html +fi + diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_delphes b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_delphes new file mode 100755 index 0000000000..975f410d0e --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_delphes @@ -0,0 +1,46 @@ +#!/bin/bash +# +# This runs MadAnalysis on the delphes_events.lhco +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_delphes_events.lhco.gz ]];then + gunzip -c ${run}_delphes_events.lhco.gz > delphes_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e delphes_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_delphes + cd ${run}_delphes + echo "../delphes_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_delphes Delphes + mv plots.html ${run}_plots_delphes.html +fi diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pgs b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pgs new file mode 100755 index 0000000000..e7a36ef344 --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pgs @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_pgs_events.lhco.gz ]];then + gunzip -c ${run}_pgs_events.lhco.gz > pgs_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e pgs_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pgs + cd ${run}_pgs + echo "../pgs_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pgs PGS + mv plots.html ${run}_plots_pgs.html +fi + diff --git a/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pythia b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pythia new file mode 100755 index 0000000000..532bfb4b7b --- /dev/null +++ b/epochX/cudacpp/ee_mumu.mad/bin/internal/run_plot_pythia @@ -0,0 +1,50 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin/internal + +if [[ $run != "" && -e ${run}_pythia_events.lhe.gz ]];then + gunzip -c ${run}_pythia_events.lhe.gz > pythia_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e pythia_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pythia + cd ${run}_pythia + echo "../pythia_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pythia Pythia + mv plots.html ${run}_plots_pythia.html + $dirbin/gen_crossxhtml-pl $run +else + echo "Not creating plots" +fi + diff --git a/epochX/cudacpp/ee_mumu.mad/bin/madevent b/epochX/cudacpp/ee_mumu.mad/bin/madevent index c944aa1faf..dff9711b73 100755 --- a/epochX/cudacpp/ee_mumu.mad/bin/madevent +++ b/epochX/cudacpp/ee_mumu.mad/bin/madevent @@ -32,6 +32,7 @@ except ImportError: import os +pjoin = os.path.join import optparse # Get the directory of the script real path (bin) @@ -160,13 +161,30 @@ except: pass import internal.madevent_interface as cmd_interface +# check for plugin customization of the launch command +launch_interface = cmd_interface.MadEventCmdShell +if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + +#Source use this executable for compilation always allow it +force_run = False +if (args and args[0] == 'treatcards'): + force_run=True + # Call the cmd interface main loop try: if '-h' in args or '--help' in args: - launch = ME.MadEventCmdShell(me_dir=os.path.dirname(root_path), force_run=True) + launch = launch_interface(me_dir=os.path.dirname(root_path), force_run=True) launch.exec_cmd('help generate_events') sys.exit(0) - with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), ): + with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), force_run=force_run): if (args and os.path.isfile(args[0])): # They are an input file input_file = args[0] @@ -178,7 +196,7 @@ try: cmd_line.run_cmd('import command ' + input_file) cmd_line.run_cmd('quit') else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) cmd_line.use_rawinput = False cmd_line.haspiping = False cmd_line.run_cmd('import command ' + input_file) @@ -188,7 +206,7 @@ try: if options.web: cmd_line = cmd_interface.MadEventCmd(force_run=True) else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) if not hasattr(cmd_line, 'do_%s' % args[0]): if parser_error: print( parser_error) diff --git a/epochX/cudacpp/ee_mumu.mad/src/HelAmps_sm.h b/epochX/cudacpp/ee_mumu.mad/src/HelAmps_sm.h index 6a8781b113..4e4fd67611 100644 --- a/epochX/cudacpp/ee_mumu.mad/src/HelAmps_sm.h +++ b/epochX/cudacpp/ee_mumu.mad/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV2_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -909,6 +913,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -919,6 +924,7 @@ namespace mg5amcCpu FFV4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -932,7 +938,9 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -943,7 +951,9 @@ namespace mg5amcCpu FFV2_4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -957,6 +967,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -980,6 +991,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1011,6 +1023,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1034,6 +1047,7 @@ namespace mg5amcCpu FFV2_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1067,6 +1081,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1078,9 +1093,9 @@ namespace mg5amcCpu const cxtype cI = cxmake( 0., 1. ); constexpr fptype one( 1. ); constexpr fptype two( 2. ); - const cxtype_sv TMP1 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); - const cxtype_sv TMP3 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); - ( *vertex ) = COUP * ( -one ) * ( +cI * TMP1 + ( two * cI ) * TMP3 ); + const cxtype_sv TMP3 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); + const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); + ( *vertex ) = COUP * ( -one ) * ( +cI * TMP3 + ( two * cI ) * TMP4 ); mgDebug( 1, __FUNCTION__ ); return; } @@ -1093,6 +1108,7 @@ namespace mg5amcCpu FFV4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1110,12 +1126,12 @@ namespace mg5amcCpu constexpr fptype two( 2. ); constexpr fptype half( 1. / 2. ); const cxtype_sv TMP2 = ( F1[2] * ( F2[4] * ( P3[0] + P3[3] ) + F2[5] * ( P3[1] + cI * P3[2] ) ) + F1[3] * ( F2[4] * ( P3[1] - cI * P3[2] ) + F2[5] * ( P3[0] - P3[3] ) ) ); - const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); + const cxtype_sv TMP5 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); const cxtype_sv denom = COUP / ( ( P3[0] * P3[0] ) - ( P3[1] * P3[1] ) - ( P3[2] * P3[2] ) - ( P3[3] * P3[3] ) - M3 * ( M3 - cI * W3 ) ); - V3[2] = denom * ( -two * cI ) * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ); - V3[3] = denom * ( -two * cI ) * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP4 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ); - V3[4] = denom * ( two * cI ) * ( OM3 * half * P3[2] * ( TMP2 + two * TMP4 ) + ( half * cI * ( F1[2] * F2[5] ) - half * cI * ( F1[3] * F2[4] ) - cI * ( F1[4] * F2[3] ) + cI * ( F1[5] * F2[2] ) ) ); - V3[5] = denom * ( two * cI ) * ( OM3 * half * P3[3] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ); + V3[2] = denom * ( -two * cI ) * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ); + V3[3] = denom * ( -two * cI ) * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP5 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ); + V3[4] = denom * ( two * cI ) * ( OM3 * half * P3[2] * ( TMP2 + two * TMP5 ) + ( half * cI * ( F1[2] * F2[5] ) - half * cI * ( F1[3] * F2[4] ) - cI * ( F1[4] * F2[3] ) + cI * ( F1[5] * F2[2] ) ) ); + V3[5] = denom * ( two * cI ) * ( OM3 * half * P3[3] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ); mgDebug( 1, __FUNCTION__ ); return; } @@ -1129,7 +1145,9 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1142,9 +1160,9 @@ namespace mg5amcCpu const cxtype cI = cxmake( 0., 1. ); constexpr fptype one( 1. ); constexpr fptype two( 2. ); - const cxtype_sv TMP1 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); - const cxtype_sv TMP3 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); - ( *vertex ) = ( -one ) * ( COUP2 * ( +cI * TMP1 + ( two * cI ) * TMP3 ) + cI * ( TMP1 * COUP1 ) ); + const cxtype_sv TMP3 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); + const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); + ( *vertex ) = ( -one ) * ( Ccoeff2*COUP2 * ( +cI * TMP3 + ( two * cI ) * TMP4 ) + cI * ( TMP3 * Ccoeff1*COUP1 ) ); mgDebug( 1, __FUNCTION__ ); return; } @@ -1157,7 +1175,9 @@ namespace mg5amcCpu FFV2_4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1177,12 +1197,12 @@ namespace mg5amcCpu constexpr fptype two( 2. ); constexpr fptype half( 1. / 2. ); const cxtype_sv TMP2 = ( F1[2] * ( F2[4] * ( P3[0] + P3[3] ) + F2[5] * ( P3[1] + cI * P3[2] ) ) + F1[3] * ( F2[4] * ( P3[1] - cI * P3[2] ) + F2[5] * ( P3[0] - P3[3] ) ) ); - const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); + const cxtype_sv TMP5 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); const cxtype_sv denom = one / ( ( P3[0] * P3[0] ) - ( P3[1] * P3[1] ) - ( P3[2] * P3[2] ) - ( P3[3] * P3[3] ) - M3 * ( M3 - cI * W3 ) ); - V3[2] = denom * ( -two * cI ) * ( COUP2 * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( COUP1 * ( F1[2] * F2[4] + F1[3] * F2[5] - P3[0] * OM3 * TMP2 ) ) ); - V3[3] = denom * ( -two * cI ) * ( COUP2 * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP4 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ) - half * ( COUP1 * ( F1[2] * F2[5] + F1[3] * F2[4] + P3[1] * OM3 * TMP2 ) ) ); - V3[4] = denom * cI * ( COUP2 * ( OM3 * P3[2] * ( TMP2 + two * TMP4 ) + ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + ( -two * cI ) * ( F1[4] * F2[3] ) + ( two * cI ) * ( F1[5] * F2[2] ) ) ) + COUP1 * ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + P3[2] * OM3 * TMP2 ) ); - V3[5] = denom * ( two * cI ) * ( COUP2 * ( OM3 * half * P3[3] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( COUP1 * ( F1[2] * F2[4] + P3[3] * OM3 * TMP2 - F1[3] * F2[5] ) ) ); + V3[2] = denom * ( -two * cI ) * ( Ccoeff2*COUP2 * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( Ccoeff1*COUP1 * ( F1[2] * F2[4] + F1[3] * F2[5] - P3[0] * OM3 * TMP2 ) ) ); + V3[3] = denom * ( -two * cI ) * ( Ccoeff2*COUP2 * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP5 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ) - half * ( Ccoeff1*COUP1 * ( F1[2] * F2[5] + F1[3] * F2[4] + P3[1] * OM3 * TMP2 ) ) ); + V3[4] = denom * cI * ( Ccoeff2*COUP2 * ( OM3 * P3[2] * ( TMP2 + two * TMP5 ) + ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + ( -two * cI ) * ( F1[4] * F2[3] ) + ( two * cI ) * ( F1[5] * F2[2] ) ) ) + Ccoeff1*COUP1 * ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + P3[2] * OM3 * TMP2 ) ); + V3[5] = denom * ( two * cI ) * ( Ccoeff2*COUP2 * ( OM3 * half * P3[3] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( Ccoeff1*COUP1 * ( F1[2] * F2[4] + P3[3] * OM3 * TMP2 - F1[3] * F2[5] ) ) ); mgDebug( 1, __FUNCTION__ ); return; } diff --git a/epochX/cudacpp/ee_mumu.mad/src/cudacpp_src.mk b/epochX/cudacpp/ee_mumu.mad/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/ee_mumu.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/ee_mumu.mad/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/ee_mumu.sa/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/ee_mumu.sa/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/ee_mumu.sa/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/ee_mumu.sa/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/ee_mumu.sa/SubProcesses/P1_Sigma_sm_epem_mupmum/CPPProcess.cc b/epochX/cudacpp/ee_mumu.sa/SubProcesses/P1_Sigma_sm_epem_mupmum/CPPProcess.cc index 12a28d3f7a..bad39b6414 100644 --- a/epochX/cudacpp/ee_mumu.sa/SubProcesses/P1_Sigma_sm_epem_mupmum/CPPProcess.cc +++ b/epochX/cudacpp/ee_mumu.sa/SubProcesses/P1_Sigma_sm_epem_mupmum/CPPProcess.cc @@ -238,25 +238,18 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 2 *** // Wavefunction(s) for diagram number 1 -#if not( defined __CUDACC__ and defined MGONGPU_TEST_DIVERGENCE ) - opzxxx( momenta, cHel[ihel][0], -1, w_fp[0], 0 ); // NB: opzxxx only uses pz -#else - if( ( blockDim.x * blockIdx.x + threadIdx.x ) % 2 == 0 ) - opzxxx( momenta, cHel[ihel][0], -1, w_fp[0], 0 ); // NB: opzxxx only uses pz - else - oxxxxx( momenta, 0, cHel[ihel][0], -1, w_fp[0], 0 ); -#endif + oxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][1], +1, w_fp[1], 1 ); - ixzxxx( momenta, cHel[ihel][2], -1, w_fp[2], 2 ); + ixxxxx( momenta, 0., cHel[ihel][2], -1, w_fp[2], 2 ); - oxzxxx( momenta, cHel[ihel][3], +1, w_fp[3], 3 ); + oxxxxx( momenta, 0., cHel[ihel][3], +1, w_fp[3], 3 ); - FFV1P0_3( w_fp[1], w_fp[0], COUPs[0], 0., 0., w_fp[4] ); + FFV1P0_3( w_fp[1], w_fp[0], COUPs[0], 1.0, 0., 0., w_fp[4] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[2], w_fp[3], w_fp[4], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[2], w_fp[3], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -265,10 +258,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 2 *** // Wavefunction(s) for diagram number 2 - FFV2_4_3( w_fp[1], w_fp[0], COUPs[1], COUPs[2], cIPD[0], cIPD[1], w_fp[4] ); + FFV2_4_3( w_fp[1], w_fp[0], COUPs[1], 1.0, COUPs[2], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 2 - FFV2_4_0( w_fp[2], w_fp[3], w_fp[4], COUPs[1], COUPs[2], &_fp[0] ); + FFV2_4_0( w_fp[2], w_fp[3], w_fp[4], COUPs[1], 1.0, COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -789,8 +782,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: standalone_cudacpp static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/ee_mumu.sa/SubProcesses/cudacpp.mk b/epochX/cudacpp/ee_mumu.sa/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/ee_mumu.sa/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/ee_mumu.sa/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/ee_mumu.sa/src/HelAmps_sm.h b/epochX/cudacpp/ee_mumu.sa/src/HelAmps_sm.h index 6a8781b113..4e4fd67611 100644 --- a/epochX/cudacpp/ee_mumu.sa/src/HelAmps_sm.h +++ b/epochX/cudacpp/ee_mumu.sa/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV2_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -909,6 +913,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -919,6 +924,7 @@ namespace mg5amcCpu FFV4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -932,7 +938,9 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -943,7 +951,9 @@ namespace mg5amcCpu FFV2_4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -957,6 +967,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -980,6 +991,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1011,6 +1023,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1034,6 +1047,7 @@ namespace mg5amcCpu FFV2_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1067,6 +1081,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1078,9 +1093,9 @@ namespace mg5amcCpu const cxtype cI = cxmake( 0., 1. ); constexpr fptype one( 1. ); constexpr fptype two( 2. ); - const cxtype_sv TMP1 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); - const cxtype_sv TMP3 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); - ( *vertex ) = COUP * ( -one ) * ( +cI * TMP1 + ( two * cI ) * TMP3 ); + const cxtype_sv TMP3 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); + const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); + ( *vertex ) = COUP * ( -one ) * ( +cI * TMP3 + ( two * cI ) * TMP4 ); mgDebug( 1, __FUNCTION__ ); return; } @@ -1093,6 +1108,7 @@ namespace mg5amcCpu FFV4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1110,12 +1126,12 @@ namespace mg5amcCpu constexpr fptype two( 2. ); constexpr fptype half( 1. / 2. ); const cxtype_sv TMP2 = ( F1[2] * ( F2[4] * ( P3[0] + P3[3] ) + F2[5] * ( P3[1] + cI * P3[2] ) ) + F1[3] * ( F2[4] * ( P3[1] - cI * P3[2] ) + F2[5] * ( P3[0] - P3[3] ) ) ); - const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); + const cxtype_sv TMP5 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); const cxtype_sv denom = COUP / ( ( P3[0] * P3[0] ) - ( P3[1] * P3[1] ) - ( P3[2] * P3[2] ) - ( P3[3] * P3[3] ) - M3 * ( M3 - cI * W3 ) ); - V3[2] = denom * ( -two * cI ) * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ); - V3[3] = denom * ( -two * cI ) * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP4 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ); - V3[4] = denom * ( two * cI ) * ( OM3 * half * P3[2] * ( TMP2 + two * TMP4 ) + ( half * cI * ( F1[2] * F2[5] ) - half * cI * ( F1[3] * F2[4] ) - cI * ( F1[4] * F2[3] ) + cI * ( F1[5] * F2[2] ) ) ); - V3[5] = denom * ( two * cI ) * ( OM3 * half * P3[3] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ); + V3[2] = denom * ( -two * cI ) * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ); + V3[3] = denom * ( -two * cI ) * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP5 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ); + V3[4] = denom * ( two * cI ) * ( OM3 * half * P3[2] * ( TMP2 + two * TMP5 ) + ( half * cI * ( F1[2] * F2[5] ) - half * cI * ( F1[3] * F2[4] ) - cI * ( F1[4] * F2[3] ) + cI * ( F1[5] * F2[2] ) ) ); + V3[5] = denom * ( two * cI ) * ( OM3 * half * P3[3] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ); mgDebug( 1, __FUNCTION__ ); return; } @@ -1129,7 +1145,9 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1142,9 +1160,9 @@ namespace mg5amcCpu const cxtype cI = cxmake( 0., 1. ); constexpr fptype one( 1. ); constexpr fptype two( 2. ); - const cxtype_sv TMP1 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); - const cxtype_sv TMP3 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); - ( *vertex ) = ( -one ) * ( COUP2 * ( +cI * TMP1 + ( two * cI ) * TMP3 ) + cI * ( TMP1 * COUP1 ) ); + const cxtype_sv TMP3 = ( F1[2] * ( F2[4] * ( V3[2] + V3[5] ) + F2[5] * ( V3[3] + cI * V3[4] ) ) + F1[3] * ( F2[4] * ( V3[3] - cI * V3[4] ) + F2[5] * ( V3[2] - V3[5] ) ) ); + const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( V3[2] - V3[5] ) - F2[3] * ( V3[3] + cI * V3[4] ) ) + F1[5] * ( F2[2] * ( -V3[3] + cI * V3[4] ) + F2[3] * ( V3[2] + V3[5] ) ) ); + ( *vertex ) = ( -one ) * ( Ccoeff2*COUP2 * ( +cI * TMP3 + ( two * cI ) * TMP4 ) + cI * ( TMP3 * Ccoeff1*COUP1 ) ); mgDebug( 1, __FUNCTION__ ); return; } @@ -1157,7 +1175,9 @@ namespace mg5amcCpu FFV2_4_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP1[], + const double Ccoeff1, const fptype allCOUP2[], + const double Ccoeff2, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1177,12 +1197,12 @@ namespace mg5amcCpu constexpr fptype two( 2. ); constexpr fptype half( 1. / 2. ); const cxtype_sv TMP2 = ( F1[2] * ( F2[4] * ( P3[0] + P3[3] ) + F2[5] * ( P3[1] + cI * P3[2] ) ) + F1[3] * ( F2[4] * ( P3[1] - cI * P3[2] ) + F2[5] * ( P3[0] - P3[3] ) ) ); - const cxtype_sv TMP4 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); + const cxtype_sv TMP5 = ( F1[4] * ( F2[2] * ( P3[0] - P3[3] ) - F2[3] * ( P3[1] + cI * P3[2] ) ) + F1[5] * ( F2[2] * ( -P3[1] + cI * P3[2] ) + F2[3] * ( P3[0] + P3[3] ) ) ); const cxtype_sv denom = one / ( ( P3[0] * P3[0] ) - ( P3[1] * P3[1] ) - ( P3[2] * P3[2] ) - ( P3[3] * P3[3] ) - M3 * ( M3 - cI * W3 ) ); - V3[2] = denom * ( -two * cI ) * ( COUP2 * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( COUP1 * ( F1[2] * F2[4] + F1[3] * F2[5] - P3[0] * OM3 * TMP2 ) ) ); - V3[3] = denom * ( -two * cI ) * ( COUP2 * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP4 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ) - half * ( COUP1 * ( F1[2] * F2[5] + F1[3] * F2[4] + P3[1] * OM3 * TMP2 ) ) ); - V3[4] = denom * cI * ( COUP2 * ( OM3 * P3[2] * ( TMP2 + two * TMP4 ) + ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + ( -two * cI ) * ( F1[4] * F2[3] ) + ( two * cI ) * ( F1[5] * F2[2] ) ) ) + COUP1 * ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + P3[2] * OM3 * TMP2 ) ); - V3[5] = denom * ( two * cI ) * ( COUP2 * ( OM3 * half * P3[3] * ( TMP2 + two * TMP4 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( COUP1 * ( F1[2] * F2[4] + P3[3] * OM3 * TMP2 - F1[3] * F2[5] ) ) ); + V3[2] = denom * ( -two * cI ) * ( Ccoeff2*COUP2 * ( OM3 * -half * P3[0] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] + F1[3] * F2[5] ) + F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( Ccoeff1*COUP1 * ( F1[2] * F2[4] + F1[3] * F2[5] - P3[0] * OM3 * TMP2 ) ) ); + V3[3] = denom * ( -two * cI ) * ( Ccoeff2*COUP2 * ( OM3 * -half * P3[1] * ( TMP2 + two * TMP5 ) + ( -half * ( F1[2] * F2[5] + F1[3] * F2[4] ) + F1[4] * F2[3] + F1[5] * F2[2] ) ) - half * ( Ccoeff1*COUP1 * ( F1[2] * F2[5] + F1[3] * F2[4] + P3[1] * OM3 * TMP2 ) ) ); + V3[4] = denom * cI * ( Ccoeff2*COUP2 * ( OM3 * P3[2] * ( TMP2 + two * TMP5 ) + ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + ( -two * cI ) * ( F1[4] * F2[3] ) + ( two * cI ) * ( F1[5] * F2[2] ) ) ) + Ccoeff1*COUP1 * ( +cI * ( F1[2] * F2[5] ) - cI * ( F1[3] * F2[4] ) + P3[2] * OM3 * TMP2 ) ); + V3[5] = denom * ( two * cI ) * ( Ccoeff2*COUP2 * ( OM3 * half * P3[3] * ( TMP2 + two * TMP5 ) + ( +half * ( F1[2] * F2[4] ) - half * ( F1[3] * F2[5] ) - F1[4] * F2[2] + F1[5] * F2[3] ) ) + half * ( Ccoeff1*COUP1 * ( F1[2] * F2[4] + P3[3] * OM3 * TMP2 - F1[3] * F2[5] ) ) ); mgDebug( 1, __FUNCTION__ ); return; } diff --git a/epochX/cudacpp/ee_mumu.sa/src/cudacpp_src.mk b/epochX/cudacpp/ee_mumu.sa/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/ee_mumu.sa/src/cudacpp_src.mk +++ b/epochX/cudacpp/ee_mumu.sa/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_tt.mad/Cards/delphes_trigger.dat b/epochX/cudacpp/gg_tt.mad/Cards/delphes_trigger.dat new file mode 100644 index 0000000000..0aab0677aa --- /dev/null +++ b/epochX/cudacpp/gg_tt.mad/Cards/delphes_trigger.dat @@ -0,0 +1,20 @@ +#TRIGGER CARD # DO NOT REMOVE THIS IS A TAG! + +# list of trigger algorithms +# trigger_name >> algorithm #comments +Inclusive electron >> ELEC1_PT: '29' +di-electron >> ELEC1_PT: '17' && ELEC2_PT: '17' +Inclusive Photon >> GAMMA1_PT: '80' +di-Photon >> GAMMA1_PT: '40' && GAMMA2_PT: '25' +Inclusive muon >> MUON1_PT: '19' +di-muon >> MUON1_PT: '7' && MUON2_PT: '7' +Taujet and ETmis >> TAU1_PT: '86' && ETMIS_PT: '65' +di-Taujets >> TAU1_PT: '59' && TAU2_PT: '59' +Jet and ETmis >> JET1_PT: '180' && ETMIS_PT: '123' +Taujet and electron >> TAU1_PT: '45' && ELEC1_PT: '19' +Taujet and muon >> TAU1_PT: '40' && ELEC1_PT: '15' +Inclusive b-jet >> Bjet1_PT: '237' +Inclusive 1 jet >> JET1_PT: '657' +Inclusive 3 jets >> JET1_PT: '247' && JET2_PT: '247' && JET3_PT: '247' +Inclusive 4 jets >> JET1_PT: '113' && JET2_PT: '113' && JET3_PT: '113' && JET4_PT: '113' + diff --git a/epochX/cudacpp/gg_tt.mad/Cards/me5_configuration.txt b/epochX/cudacpp/gg_tt.mad/Cards/me5_configuration.txt index 27acb12a1e..8a0c1e6345 100644 --- a/epochX/cudacpp/gg_tt.mad/Cards/me5_configuration.txt +++ b/epochX/cudacpp/gg_tt.mad/Cards/me5_configuration.txt @@ -234,7 +234,7 @@ # pineappl = pineappl -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo # MG5 MAIN DIRECTORY -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo diff --git a/epochX/cudacpp/gg_tt.mad/Cards/plot_card.dat b/epochX/cudacpp/gg_tt.mad/Cards/plot_card.dat new file mode 100644 index 0000000000..9abe1cc05e --- /dev/null +++ b/epochX/cudacpp/gg_tt.mad/Cards/plot_card.dat @@ -0,0 +1,203 @@ +#************************************************************************** +# Card for MadAnalysis * +# * +# This file is used to set the classes and options for * +# the MadAnalysis program. * +# * +# * +# Some comments about the classes * +# 1. Plots are for classes of particles. * +# 2. Each particle is identified by its PDG code. * +# 3. Classes names are arbitrary (4 symbols max, no spaces allowed). * +# 4. Particles in the same class will be ordered with the 'ordering * +# function' in the file in_func.f. * +# 5. Classes can be added/edited/removed at will, and given a name * +# that will then appear in the plots. * +# 6. A particle can be put in one class only. Putting a particle in * +# two or more classes can lead to double counting of events. * +# 7. The class name mET is missing Energy and its name is reserved. * +# If used, it must be put last in the classes list below. * +# 8. If events contain particles not belonging to an existing class, * +# a new class will automatically be generated. * +# 9. For LHCO events the PDG code 21 is assigned to a jet (not * +# b-tagged), 5 to a b-tagged jet and 12 to missing ET. * +# * +# * +# Some comments about the cuts * +# 1. In the file kin_func.f the functions on which cuts can be applied * +# are given. * +# 2. The syntax is as follows. * +# etmin 1 3 30d0 * +# means that from the first class the Et of the first three particles * +# has to be greater than 30 GeV. * +# * +# etmissmin 20d0 * +# means that there must be at least 20 GeV of missing Et * +# * +# dRmin 2 1 4 3 3d0 * +# means that the distance between the first particle in the second * +# class and the first three particles in the fourth class has to be * +# greater than 3. * +# * +# ptmax 1 3 10d0 * +# ptmax 1 2 15d0 * +# means that the maximum pt of the third particle in the first class * +# has to smaller than 10 GeV, and the first two particles of this * +# class has to be smaller than 15 GeV * +# 3. The ordering of the particles within a class can be set with the * +# 'ordering function' in the file kin_func.f. * +# 4. For all the 'min' cuts, an event will be thrown away if the particle * +# does not exist. On the other hand, for all the 'max' cuts the cut * +# will be ignored if the particle does not exist * +# (Only dRij is an exception, for which it is the other way around) * +# * +# * +# * +# Some comments about the plotting options * +# 1. In the file kin_func.f the functions can be found that can be * +# plotted. (only for off-line usage) * +# 2. With the plotting options one can set the number of plots for each * +# of these functions. * +# 3. One has to specify for each variable which particles from which * +# class are used to set the plots. Syntax: * +# et 2 4 * +# means that the transverse energy of the first four particles in the * +# second class will be plotted. * +# mij 1 3 * +# mij 2 2 * +# means that for the invariant mass plots the first three particles * +# from the first class and the first two from the second class will be * +# used to plot the invariant mass of two particles. (10 plots) * +# 4. The ordering of the particles in a class can be set with the * +# 'ordering_function'. pt, e and et are valid functions. (For off-line * +# users X1, X2 and X3 can also be used, if defined in kin_func.f.) * +# 5. Max number of plots is 200. * +# * +# * +#************************************************************************** +# Put here your list of classes +#************************************************************************** +# Do NOT put spaces before class names! +# Begin Classes # This is TAG. Do not modify this line +jet 1 -1 2 -2 3 -3 4 -4 21 # Class number 1 +b 5 -5 # Class number 2 +mET 12 -12 14 -14 16 -16 1000022 # Missing ET class, name is reserved +# End Classes # This is TAG. Do not modify this line +#************************************************************************** +ordering_function pt # orders particles in classes according to their pt +normalization xsec # histogram normalization, xsec or number (e.g. 1) +#************************************************************************** +# Put here list of minimum pt for the classes +#************************************************************************** +# Begin Minpts # This is TAG. Do not modify this line +#1 30 +#2 40 +#3 10 +# End Minpts # This is TAG. Do not modify this line +#************************************************************************** +# Cuts on plotted events +#************************************************************************** +# Modify the cuts and remove the pounds/hashes to apply those cuts +# Do NOT put spaces at the beginning of the following lines! +# Begin Cuts # This is TAG. Do not modify this line +#etmin 2 2 40d0 +#etmin 2 1 80d0 +#etmin 1 3 20d0 +#etmax 2 1 200d0 +#ptmin 3 1 0d0 +#etmissmin 20d0 +#etmissmax 80d0 +#etamax 1 1 1d0 +#etamax 2 1 2d0 +#etamin 2 2 1.5d0 +#etamin 2 1 2d0 +#mijmax 2 1 2 2 200d0 +#mijmin 2 1 2 2 100d0 +#X1min 2 1 40d0 +#X1max 2 2 50d0 +#dRijmin 2 1 2 2 0.7d0 +#dRijmax 1 3 2 2 0.7d0 +#XY1min 2 2 2 2 20d0 +#XYZA2max 2 2 2 2 4 1 5 1 40d0 +# End Cuts # This is TAG. Do not modify this line +#************************************************************************** +# Put here the required plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotDefs # This is TAG. Do not modify this line +pt 1 4 # plot pt for the first four particles in class 1 +pt 2 4 # plot pt for the first four particles in class 2 +pt 3 4 # plot pt for the first four particles in class 3 +pt 4 4 # plot pt for the first four particles in class 4 +pt 5 4 # etc. +pt 6 4 +pt 7 4 +#e 2 2 +y 1 4 # plot rapidity for the first four particles in class 1 +y 2 4 +y 3 4 +y 4 4 +y 5 4 +y 6 4 +y 7 4 +#eta 2 2 # plot pseudo-rapidity for the first two part in the 2nd class +#mom 4 1 +#costh 5 1 +#phi 2 2 +#delta_eta 2 2 +#delta_eta 4 1 +mij 1 4 # use the first four particles in the 1st class to plot inv. mass +mij 2 2 # use the first two particles from the second class as well +mij 3 1 # etc. +mij 4 1 +mij 5 1 +mij 6 1 +mij 7 1 +#cosij 1 2 +#cosij 2 2 +#cosij 3 1 +#cosij 4 1 +dRij 1 4 +dRij 2 2 +dRij 3 1 +dRij 4 1 +dRij 5 1 +dRij 6 1 +dRij 7 1 +#delta_phi 2 2 +#delta_phi 4 1 +#delta_phi 5 1 +#X1 2 2 # plot X1 (defined in kin_func.f) +#XYZA1 2 2 +#XYZA1 4 1 +#XYZA1 5 1 +# End PlotDefs # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Put here the plot ranges +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotRange # This is TAG. Do not modify this line +pt 10 0 500 # bin size, min value, max value +et 10 0 500 # bin size, min value, max value +etmiss 10 0 500 # bin size, min value, max value +ht 20 0 1500 +y 0.2 -5 5 # etc. +mij 20 0 1500 +dRij 0.1 0 5 +#delta_phi 0.1 0 3.1 +#X1 1 0 100 +#XYZA1 1 0 100 +# End PlotRange # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Output for plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotOutput # This is TAG. Do not modify this line +output topdrawer # set to topdrawer or gnuplot +plot_decayed no # plot (and cut) dec. res.? (Only for LHE events) +# End PlotOutput # This is TAG. Do not modify this line +#************************************************************************** +# +# diff --git a/epochX/cudacpp/gg_tt.mad/Cards/run_card.dat b/epochX/cudacpp/gg_tt.mad/Cards/run_card.dat index 80d07f317e..48d84c73f0 100644 --- a/epochX/cudacpp/gg_tt.mad/Cards/run_card.dat +++ b/epochX/cudacpp/gg_tt.mad/Cards/run_card.dat @@ -77,7 +77,7 @@ #********************************************************************* 0 = nhel ! using helicities importance sampling or not. ! 0: sum over helicity, 1: importance sampling - 1 = sde_strategy ! default integration strategy (hep-ph/2021.00773) + 2 = sde_strategy ! default integration strategy (hep-ph/2021.00773) ! 1 is old strategy (using amp square) ! 2 is new strategy (using only the denominator) # To see advanced option for Phase-Space optimization: type "update psoptim" @@ -139,13 +139,3 @@ # systematics = systematics_program ! none, systematics [python], SysCalc [depreceted, C++] ['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule - -#********************************************************************* -# Options for the cudacpp plugin -#********************************************************************* - -# Set cudacpp-specific values of non-cudacpp-specific options --O3 -ffast-math -fbounds-check = global_flag ! build flags for Fortran code (for a fair comparison to cudacpp) - -# New cudacpp-specific options (default values are defined in banner.py) -CPP = cudacpp_backend ! valid backends are FORTRAN, CPP, CUDA diff --git a/epochX/cudacpp/gg_tt.mad/Source/DHELAS/aloha_file.inc b/epochX/cudacpp/gg_tt.mad/Source/DHELAS/aloha_file.inc index 3a21194b00..eaf8cc8601 100644 --- a/epochX/cudacpp/gg_tt.mad/Source/DHELAS/aloha_file.inc +++ b/epochX/cudacpp/gg_tt.mad/Source/DHELAS/aloha_file.inc @@ -1 +1 @@ -ALOHARoutine = FFV1_0.o FFV1_1.o FFV1_2.o VVV1P0_1.o +ALOHARoutine = VVV1P0_1.o FFV1_0.o FFV1_1.o FFV1_2.o diff --git a/epochX/cudacpp/gg_tt.mad/Source/PDF/pdfwrap_lhapdf.f b/epochX/cudacpp/gg_tt.mad/Source/PDF/pdfwrap_lhapdf.f index 0be926e6cd..3f36905346 100644 --- a/epochX/cudacpp/gg_tt.mad/Source/PDF/pdfwrap_lhapdf.f +++ b/epochX/cudacpp/gg_tt.mad/Source/PDF/pdfwrap_lhapdf.f @@ -5,6 +5,7 @@ SUBROUTINE PDFWRAP C INCLUDE 'pdf.inc' INCLUDE '../alfas.inc' + INCLUDE '../vector.inc' INCLUDE '../coupl.inc' REAL*8 ZMASS DATA ZMASS/91.188D0/ diff --git a/epochX/cudacpp/gg_tt.mad/Source/make_opts b/epochX/cudacpp/gg_tt.mad/Source/make_opts index bd3c24228d..2607530b78 100644 --- a/epochX/cudacpp/gg_tt.mad/Source/make_opts +++ b/epochX/cudacpp/gg_tt.mad/Source/make_opts @@ -1,17 +1,11 @@ -pdlabel1= -pdlabel2= -lhapdf= -PYTHIA8_PATH=NotInstalled -MG5AMC_VERSION=3.5.0_lo_vect -GLOBAL_FLAG=-O3 -ffast-math -fbounds-check -ALOHA_FLAG= -MATRIX_FLAG= DEFAULT_CPP_COMPILER=g++ MACFLAG= STDLIB=-lstdc++ STDLIB_FLAG= DEFAULT_F_COMPILER=gfortran -DEFAULT_F2PY_COMPILER=f2py3 +DEFAULT_F2PY_COMPILER=f2py3.9 +MG5AMC_VERSION=SpecifiedByMG5aMCAtRunTime +PYTHIA8_PATH=NotInstalled #end_of_make_opts_variables BIASLIBDIR=../../../lib/ diff --git a/epochX/cudacpp/gg_tt.mad/Source/makefile b/epochX/cudacpp/gg_tt.mad/Source/makefile index dbe08b846e..00c73099a0 100644 --- a/epochX/cudacpp/gg_tt.mad/Source/makefile +++ b/epochX/cudacpp/gg_tt.mad/Source/makefile @@ -136,5 +136,7 @@ cleanSource: clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; -cleanall: cleanSource +cleanavx: + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; +cleanall: cleanSource # THIS IS THE ONE for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_tt.mad/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/CPPProcess.cc b/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/CPPProcess.cc index 0afa202e07..64558e76af 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/CPPProcess.cc +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/CPPProcess.cc @@ -246,10 +246,10 @@ namespace mg5amcCpu ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[4] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[4] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -260,10 +260,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 3 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[4] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[4], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -273,10 +273,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 3 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[4] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[4], w_fp[2], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[4], w_fp[2], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -799,8 +799,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/auto_dsig1.f b/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/auto_dsig1.f index 3b24a9924c..0b493ae244 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/auto_dsig1.f +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/P1_gg_ttx/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -126,11 +127,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk index b4cf265525..15669185ad 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/dummy_fct.f b/epochX/cudacpp/gg_tt.mad/SubProcesses/dummy_fct.f index 076cf29d67..4f7a204b8f 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/dummy_fct.f +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/dummy_fct.f @@ -32,7 +32,7 @@ logical FUNCTION dummy_cuts(P) LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL) logical do_cuts(nexternal) COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY, - . IS_A_ONIUM, do_cuts + & IS_A_ONIUM, do_cuts dummy_cuts=.true. @@ -118,15 +118,16 @@ double precision function user_dynamical_scale(P) C ************************************************************ -C default for the library implementing a dummt bias function +C default for the library implementing a dummy bias function C ************************************************************ subroutine bias_wgt_custom(p, original_weight, bias_weight) - implicit none + implicit none C C Parameters C include 'nexternal.inc' -C + +C C Arguments C double precision p(0:3, nexternal) @@ -161,3 +162,4 @@ subroutine bias_wgt_custom(p, original_weight, bias_weight) return end subroutine bias_wgt_custom + diff --git a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile index 27a8c3a83a..093bc84271 100644 --- a/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_tt.mad/SubProcesses/makefile @@ -116,7 +116,7 @@ SYMMETRY = symmetry.o idenparts.o # Binaries -LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 +#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) diff --git a/epochX/cudacpp/gg_tt.mad/bin/generate_events b/epochX/cudacpp/gg_tt.mad/bin/generate_events index 107313b25d..5577cc66a0 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/generate_events +++ b/epochX/cudacpp/gg_tt.mad/bin/generate_events @@ -46,7 +46,7 @@ if __debug__ and (not os.path.exists(pjoin(root_path,'../..', 'bin','create_rele sys.path.append(pjoin(root_path,'bin','internal')) import madevent_interface as ME - +import misc as misc import logging import logging.config @@ -160,17 +160,31 @@ if '__main__' == __name__: # Check that python version is valid set_configuration() - argument = sys.argv + argument = sys.argv + + # check for plugin customization of the launch command + launch_interface = ME.MadEventCmdShell + if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + + try: if '-h' in argument or '--help' in argument: - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.exec_cmd('help generate_events') sys.exit() elif len(argument) > 1 and argument[1] in ['0', '1', '2']: argument = treat_old_argument(argument) with ME.MadEventCmdShell.RunWebHandling(root_path, ): - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.run_cmd('generate_events %s' % ' '.join(argument[1:])) launch.run_cmd('quit') except ME.MadEventAlreadyRunning as message: diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/banner.py b/epochX/cudacpp/gg_tt.mad/bin/internal/banner.py index 7624b9f557..824815f47b 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/internal/banner.py +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/banner.py @@ -537,7 +537,7 @@ def charge_card(self, tag): self.param_card = param_card_reader.ParamCard(param_card) return self.param_card elif tag == 'mgruncard': - self.run_card = RunCard(self[tag]) + self.run_card = RunCard(self[tag], unknown_warning=False) return self.run_card elif tag == 'mg5proccard': proc_card = self[tag].split('\n') @@ -1002,13 +1002,14 @@ def __init__(self, finput=None, **opt): self.allowed_value = {} self.default_setup() + self.plugin_input(finput) # if input is define read that input if isinstance(finput, (file, str, StringIO.StringIO)): self.read(finput, **opt) - self.plugin_input(finput) + def plugin_input(self, finput=None): @@ -2624,6 +2625,7 @@ class RunCard(ConfigFile): default_include_file = 'run_card.inc' default_autodef_file = 'run.inc' donewarning = [] + include_as_parameter = [] def plugin_input(self, finput): @@ -2670,18 +2672,40 @@ def __new__(cls, finput=None, **opt): elif isinstance(finput, cls): target_class = finput.__class__ elif isinstance(finput, str): + path = finput if '\n' not in finput: finput = open(finput).read() if 'req_acc_FO' in finput: target_class = RunCardNLO else: target_class = RunCardLO + if MADEVENT and os.path.exists(pjoin(MEDIR, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(MEDIR, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + elif not MADEVENT and os.path.exists(path.replace('run_card.dat', '../bin/internal/launch_plugin.py')): + misc.sprint('try to use plugin class') + pydir = path.replace('run_card.dat', '../bin/internal/') + with misc.TMP_variable(sys, 'path', sys.path + [pydir]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + else: return None target_class.fill_post_set_from_blocks() - - return super(RunCard, cls).__new__(target_class, finput, **opt) + out = super(RunCard, cls).__new__(target_class, finput, **opt) + if not isinstance(out, RunCard): #should not happen but in presence of missmatch of library loaded. + out.__init__(finput, **opt) + return out else: return super(RunCard, cls).__new__(cls, finput, **opt) @@ -2709,7 +2733,7 @@ def __init__(self, *args, **opts): self.system_default = {} self.display_block = [] # set some block to be displayed - + self.fct_mod = {} # {param: (fct_pointer, *argument, **opts)} self.cut_class = {} self.warned=False @@ -2746,7 +2770,7 @@ def get_lepton_densities(cls): def add_param(self, name, value, fortran_name=None, include=True, hidden=False, legacy=False, cut=False, system=False, sys_default=None, - autodef=False, + autodef=False, fct_mod=None, **opts): """ add a parameter to the card. value is the default value and defines the type (int/float/bool/str) of the input. @@ -2760,6 +2784,7 @@ def add_param(self, name, value, fortran_name=None, include=True, If a path (Source/PDF/pdf.inc) the definition will be added within that file Default is False (does not add the definition) entry added in the run_card will automatically have this on True. + fct_mod: defines a function to run if the parameter is modify in the include file options of **opts: - allowed: list of valid options. '*' means anything else should be allowed. empty list means anything possible as well. @@ -2784,8 +2809,12 @@ def add_param(self, name, value, fortran_name=None, include=True, if autodef: self.definition_path[autodef].append(name) self.user_set.add(name) + # function to trigger if a value is modified in the include file + # main target is action to force correct recompilation (like for compilation flag/...) + if fct_mod: + self.fct_mod[name] = fct_mod - def read(self, finput, consistency=True): + def read(self, finput, consistency=True, unknown_warning=True): """Read the input file, this can be a path to a file, a file object, a str with the content of the file.""" @@ -2793,6 +2822,7 @@ def read(self, finput, consistency=True): if "\n" in finput: finput = finput.split('\n') elif os.path.isfile(finput): + self.path = finput finput = open(finput) else: raise Exception("No such file %s" % finput) @@ -2807,7 +2837,7 @@ def read(self, finput, consistency=True): name = name.lower().strip() if name not in self: #looks like an entry added by a user -> add it nicely - self.add_unknown_entry(name, value) + self.add_unknown_entry(name, value, unknown_warning) else: self.set( name, value, user=True) # parameter not set in the run_card can be set to compatiblity value @@ -2819,7 +2849,7 @@ def read(self, finput, consistency=True): logger.warning(str(error)) else: raise - def add_unknown_entry(self, name, value): + def add_unknown_entry(self, name, value, unknow_warning): """function to add an entry to the run_card when the associated parameter does not exists. This is based on the guess_entry_fromname for the various syntax providing input. This then call add_param accordingly. @@ -2858,7 +2888,7 @@ def add_unknown_entry(self, name, value): raise Exception("dictionary need to have at least one entry") default['dict']['__type__'] = default[self.guess_type_from_value(default_value[0])] - if name not in RunCard.donewarning: + if name not in RunCard.donewarning and unknow_warning: logger.warning("Found unexpected entry in run_card: \"%s\" with value \"%s\".\n"+\ " The type was assigned to %s. \n"+\ " The definition of that variable will %sbe automatically added to fortran file %s\n"+\ @@ -2896,7 +2926,16 @@ def valid_line(self, line, tmp): return False else: return True - + + + def reset_simd(self, old_value, new_value, name, *args, **opts): + raise Exception('pass in reset simd') + + def make_clean(self,old_value, new_value, name, dir): + raise Exception('pass make clean for ', dir) + + def make_Ptouch(self,old_value, new_value, name, reset): + raise Exception('pass Ptouch for ', reset) def write(self, output_file, template=None, python_template=False, write_hidden=False, template_options=None, **opt): @@ -3071,6 +3110,77 @@ def write(self, output_file, template=None, python_template=False, else: output_file.write(text) + def get_last_value_include(self, output_dir): + """For paraeter in self.fct_mod + parse the associate inc file to get the value of the previous run. + We return a dictionary {name: old_value} + if inc file does not exist we will return the current value (i.e. set has no change) + """ + + #remember that + # default_include_file is a class variable + # self.includepath is on the form include_path : [list of param ] + out = {} + + # setup inc_to_parse to be like self.includepath (include_path : [list of param ]) + # BUT only containing the parameter that need to be tracked for the fct_mod option + inc_to_parse = {} + for inc_file, params in self.includepath.items(): + if not inc_file: + continue + if any(p in params for p in self.fct_mod): + inc_to_parse[inc_file] = [name for name in self.includepath[inc_file] if name in self.fct_mod] + + # now loop over the files and ask the associate function + for inc_file, params in inc_to_parse.items(): + if inc_file is True: + inc_file = self.default_include_file + out.update(self.get_value_from_include(inc_file, params, output_dir)) + + return out + + def get_value_from_include(self, path, list_of_params, output_dir): + """for a given include file return the current value of the requested parameter + return a dictionary {name: value} + if path does not exists return the current value in self for all parameter""" + + #WARNING DOES NOT HANDLE LIST/DICT so far + + # handle case where file is missing + if not os.path.exists(pjoin(output_dir,path)): + misc.sprint("include file not existing", pjoin(output_dir,path)) + out = {name: self[name] for name in list_of_params} + + with open(pjoin(output_dir,path), 'r') as fsock: + text = fsock.read() + + for name in list_of_params: + misc.sprint(name, name in self.fortran_name) + misc.sprint(self.fortran_name[name] if name in self.fortran_name[name] else name) + to_track = [self.fortran_name[name] if name in self.fortran_name else name for name in list_of_params] + pattern = re.compile(r"\(?(%(names)s)\s?=\s?([^)]*)\)?" % {'names':'|'.join(to_track)}, re.I) + out = dict(pattern.findall(text)) + misc.sprint(out) + for name in list_of_params: + if name in self.fortran_name: + value = out[self.fortran_name[name]] + del out[self.fortran_name[name]] + out[name] = value + + for name, value in out.items(): + try: + out[name] = self.format_variable(value, type(self[name])) + except Exception: + continue + + if len(out) != len(list_of_params): + misc.sprint(list_of_params) + misc.sprint(to_track) + misc.sprint(self.fortran_name) + misc.sprint(text) + raise Exception + return out + def get_default(self, name, default=None, log_level=None): """return self[name] if exist otherwise default. log control if we @@ -3361,71 +3471,93 @@ def write_include_file(self, output_dir, output_file=None): #ensusre that system only parameter are correctly set self.update_system_parameter_for_include() + value_in_old_include = self.get_last_value_include(output_dir) + + if output_dir: self.write_autodef(output_dir, output_file=None) # check/fix status of customised functions self.edit_dummy_fct_from_file(self["custom_fcts"], os.path.dirname(output_dir)) for incname in self.includepath: - if incname is True: - pathinc = self.default_include_file - elif incname is False: - continue - else: - pathinc = incname + self.write_one_include_file(output_dir, incname, output_file) + + for name,value in value_in_old_include.items(): + if value != self[name]: + self.fct_mod[name][0](value, self[name], name, *self.fct_mod[name][1],**self.fct_mod[name][2]) - if output_file: - fsock = output_file + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + misc.sprint(incname) + if incname is True: + pathinc = self.default_include_file + elif incname is False: + return + else: + pathinc = incname + + if output_file: + fsock = output_file + else: + fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) + + + for key in self.includepath[incname]: + #define the fortran name + if key in self.fortran_name: + fortran_name = self.fortran_name[key] else: - fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) - for key in self.includepath[incname]: - #define the fortran name - if key in self.fortran_name: - fortran_name = self.fortran_name[key] + fortran_name = key + + if incname in self.include_as_parameter: + fsock.writelines('INTEGER %s\n' % fortran_name) + #get the value with warning if the user didn't set it + value = self.get_default(key) + if hasattr(self, 'mod_inc_%s' % key): + value = getattr(self, 'mod_inc_%s' % key)(value) + # Special treatment for strings containing a list of + # strings. Convert it to a list of strings + if isinstance(value, list): + # in case of a list, add the length of the list as 0th + # element in fortran. Only in case of integer or float + # list (not for bool nor string) + targettype = self.list_parameter[key] + if targettype is bool: + pass + elif targettype is int: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) + fsock.writelines(line) + elif targettype is float: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) + fsock.writelines(line) + # output the rest of the list in fortran + for i,v in enumerate(value): + line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) + fsock.writelines(line) + elif isinstance(value, dict): + for fortran_name, onevalue in value.items(): + line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) + fsock.writelines(line) + elif isinstance(incname,str) and 'compile' in incname: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, value) else: - fortran_name = key - - #get the value with warning if the user didn't set it - value = self.get_default(key) - if hasattr(self, 'mod_inc_%s' % key): - value = getattr(self, 'mod_inc_%s' % key)(value) - # Special treatment for strings containing a list of - # strings. Convert it to a list of strings - if isinstance(value, list): - # in case of a list, add the length of the list as 0th - # element in fortran. Only in case of integer or float - # list (not for bool nor string) - targettype = self.list_parameter[key] - if targettype is bool: - pass - elif targettype is int: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) - fsock.writelines(line) - elif targettype is float: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) - fsock.writelines(line) - # output the rest of the list in fortran - for i,v in enumerate(value): - line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) - fsock.writelines(line) - elif isinstance(value, dict): - for fortran_name, onevalue in value.items(): - line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) - fsock.writelines(line) - elif isinstance(incname,str) and 'compile' in incname: line = '%s = %s \n' % (fortran_name, value) - fsock.write(line) + fsock.write(line) + else: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, self.f77_formatting(value)) else: line = '%s = %s \n' % (fortran_name, self.f77_formatting(value)) - fsock.writelines(line) - if not output_file: - fsock.close() - path = pjoin(output_dir,pathinc) - if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): - files.mv(path+'.tmp', path) - else: - os.remove(path+'.tmp') - + fsock.writelines(line) + if not output_file: + fsock.close() + path = pjoin(output_dir,pathinc) + if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): + files.mv(path+'.tmp', path) + else: + os.remove(path+'.tmp') def write_autodef(self, output_dir, output_file=None): """ Add the definition of variable to run.inc if the variable is set with autodef. @@ -3764,13 +3896,14 @@ def remove_all_cut(self): %(tmin_for_channel)s = tmin_for_channel ! limit the non-singular reach of --some-- channel of integration related to T-channel diagram (value between -1 and 0), -1 is no impact %(survey_splitting)s = survey_splitting ! for loop-induced control how many core are used at survey for the computation of a single iteration. %(survey_nchannel_per_job)s = survey_nchannel_per_job ! control how many Channel are integrated inside a single job on cluster/multicore - %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) + %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) #********************************************************************* -# Compilation flag. No automatic re-compilation (need manual "make clean" in Source) +# Compilation flag. #********************************************************************* %(global_flag)s = global_flag ! fortran optimization flag use for the all code. %(aloha_flag)s = aloha_flag ! fortran optimization flag for aloha function. Suggestions: '-ffast-math' %(matrix_flag)s = matrix_flag ! fortran optimization flag for matrix.f function. Suggestions: '-O3' + %(vector_size)s = vector_size ! size designed for SIMD/OpenMP/GPU (number of events in lockstep) """ template_off = '# To see advanced option for Phase-Space optimization: type "update psoptim"' @@ -3926,9 +4059,12 @@ class RunCardLO(RunCard): "get_dummy_x1_x2": pjoin("SubProcesses","dummy_fct.f"), "dummy_boostframe": pjoin("SubProcesses","dummy_fct.f"), "user_dynamical_scale": pjoin("SubProcesses","dummy_fct.f"), + "bias_wgt_custom": pjoin("SubProcesses","dummy_fct.f"), "user_": pjoin("SubProcesses","dummy_fct.f") # all function starting by user will be added to that file } + include_as_parameter = ['vector.inc'] + if MG5DIR: default_run_card = pjoin(MG5DIR, "internal", "default_run_card_lo.dat") @@ -4162,10 +4298,15 @@ def default_setup(self): self.add_param('hel_splitamp', True, hidden=True, include=False, comment='decide if amplitude aloha call can be splitted in two or not when doing helicity per helicity optimization.') self.add_param('hel_zeroamp', True, hidden=True, include=False, comment='decide if zero amplitude can be removed from the computation when doing helicity per helicity optimization.') self.add_param('SDE_strategy', 1, allowed=[1,2], fortran_name="sde_strat", comment="decide how Multi-channel should behaves \"1\" means full single diagram enhanced (hep-ph/0208156), \"2\" use the product of the denominator") - self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check') - self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math') - self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3') - + self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check', + fct_mod=(self.make_clean, ('Source'),{})) + self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math', + fct_mod=(self.make_clean, ('Source/DHELAS'),{})) + self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3', + fct_mod=(self.make_Ptouch, ('matrix'),{})) + self.add_param('vector_size', 1, include='vector.inc', hidden=True, comment='lockstep size for parralelism run', + fortran_name='VECSIZE_MEMMAX', fct_mod=(self.reset_simd,(),{})) + # parameter allowing to define simple cut via the pdg # Special syntax are related to those. (can not be edit directly) self.add_param('pt_min_pdg',{'__type__':0.}, include=False, cut=True) @@ -4187,8 +4328,7 @@ def default_setup(self): self.add_param('mxxmin4pdg',[-1.], system=True) self.add_param('mxxpart_antipart', [False], system=True) - # CUDACPP parameters - self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + def check_validity(self): """ """ diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/check_param_card.py b/epochX/cudacpp/gg_tt.mad/bin/internal/check_param_card.py index fe874a06a4..71089d7480 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/internal/check_param_card.py +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/check_param_card.py @@ -85,7 +85,7 @@ def load_str(self, text): self.value= ' '.join(data[len(self.lhacode):]) # check that lhacode are the first entry otherwise return invalid param. if ' '.join([str(i) for i in self.lhacode]) != ' '.join(data[:len(self.lhacode)]): - raise InvalidParam + raise InvalidParam("line was %s" % str(data)) else: self.value = data[-1] diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/common_run_interface.py b/epochX/cudacpp/gg_tt.mad/bin/internal/common_run_interface.py index 5d0187e3fa..14c7f310dc 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/internal/common_run_interface.py +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/common_run_interface.py @@ -749,13 +749,15 @@ def writeRunWeb(me_dir): class RunWebHandling(object): - def __init__(self, me_dir, crashifpresent=True, warnifpresent=True): + def __init__(self, me_dir, crashifpresent=True, warnifpresent=True, force_run=False): """raise error if RunWeb already exists me_dir is the directory where the write RunWeb""" self.remove_run_web = True self.me_dir = me_dir - + if force_run: + self.remove_run_web = False + return if crashifpresent or warnifpresent: if os.path.exists(pjoin(me_dir, 'RunWeb')): pid = open(pjoin(me_dir, 'RunWeb')).read() @@ -6574,7 +6576,7 @@ def reask(self, *args, **opt): fail_due_to_format = 0 #parameter to avoid infinite loop def postcmd(self, stop, line): - if line not in [None, '0', 'done', '']: + if line not in [None, '0', 'done', '',0]: ending_question = cmd.OneLinePathCompletion.postcmd(self,stop,line) else: ending_question = True @@ -7533,7 +7535,8 @@ def open_file(self, answer): else: raise if time.time() - start < .5: - self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y') + self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y', + timeout=False) self.reload_card(path) def reload_card(self, path): diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/extended_cmd.py b/epochX/cudacpp/gg_tt.mad/bin/internal/extended_cmd.py index a6a8609dce..2f37070580 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/internal/extended_cmd.py +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/extended_cmd.py @@ -1108,9 +1108,12 @@ def ask(self, question, default, choices=[], path_msg=None, if alias: choices += list(alias.keys()) + + question_instance = obj(question, allow_arg=choices, default=default, mother_interface=self, **opt) - + if fct_timeout is None: + fct_timeout = lambda x: question_instance.postcmd(x, default) if x and default else False if first_cmd: if isinstance(first_cmd, str): question_instance.onecmd(first_cmd) @@ -2271,6 +2274,9 @@ def postcmd(self, stop, line): if n: self.default(line) return self.postcmd(stop, line) + elif self.value is None and line: + self.default(line) + return self.postcmd(stop, line) if not self.casesensitive: for ans in self.allow_arg: if ans.lower() == self.value.lower(): diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py b/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py index 3b8ec31215..a88d60b282 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/gen_ximprove.py @@ -154,10 +154,15 @@ def get_helicity(self, to_submit=True, clean=True): p = misc.Popen(['./gensym'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=Pdir) #sym_input = "%(points)d %(iterations)d %(accuracy)f \n" % self.opts + (stdout, _) = p.communicate(''.encode()) stdout = stdout.decode('ascii',errors='ignore') - nb_channel = max([math.floor(float(d)) for d in stdout.split()]) - + try: + nb_channel = max([math.floor(float(d)) for d in stdout.split()]) + except Exception as error: + misc.sprint(stdout, 'no channel or error for %s' % Pdir) + continue + self.cmd.compile(['madevent_forhel'], cwd=Pdir) if not os.path.exists(pjoin(Pdir, 'madevent_forhel')): raise Exception('Error make madevent_forhel not successful') diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/launch_plugin.py b/epochX/cudacpp/gg_tt.mad/bin/internal/launch_plugin.py new file mode 100644 index 0000000000..23271b846e --- /dev/null +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/launch_plugin.py @@ -0,0 +1,100 @@ + +import logging +import os +import subprocess +pjoin = os.path.join +logger = logging.getLogger('cmdprint') # for stdout + +try: + import madgraph +except ImportError: + import internal.madevent_interface as madevent_interface + import internal.misc as misc + import internal.extended_cmd as extended_cmd + import internal.banner as banner_mod +else: + import madgraph.interface.madevent_interface as madevent_interface + import madgraph.various.misc as misc + import madgraph.interface.extended_cmd as extended_cmd + import madgraph.various.banner as banner_mod + +class CPPMEInterface(madevent_interface.MadEventCmdShell): + + def compile(self, *args, **opts): + """ """ + + import multiprocessing + if not self.options['nb_core'] or self.options['nb_core'] == 'None': + self.options['nb_core'] = multiprocessing.cpu_count() + + if args and args[0][0] == 'madevent' and hasattr(self, 'run_card'): + import pathlib + import os + pjoin = os.path.join + + + + + cudacpp_backend = self.run_card['cudacpp_backend'].upper() # the default value is defined in banner.py + logger.info("Building madevent in madevent_interface.py with '%s' matrix elements"%cudacpp_backend) + if cudacpp_backend == 'FORTRAN': + args[0][0] = 'madevent_fortran_link' + elif cudacpp_backend == 'CPP': + args[0][0] = 'madevent_cpp_link' + elif cudacpp_backend == 'CUDA': + args[0][0] = 'madevent_cuda_link' + else: + raise Exception("Invalid cudacpp_backend='%s': only 'FORTRAN', 'CPP', 'CUDA' are supported") + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + else: + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + +class CPPRunCard(banner_mod.RunCardLO): + + def reset_simd(self, old_value, new_value, name): + if not hasattr(self, 'path'): + raise Exception + + if name == "vector_size" and new_value <= int(old_value): + # code can handle the new size -> do not recompile + return + + Sourcedir = pjoin(os.path.dirname(os.path.dirname(self.path)), 'Source') + subprocess.call(['make', 'cleanavx'], cwd=Sourcedir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + def plugin_input(self, finput): + return + + def default_setup(self): + super().default_setup() + self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + + + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + if incname == "vector.inc" and 'vector_size' not in self.user_set: + return + super().write_one_include_file(output_dir, incname, output_file) + + + def check_validity(self): + """ensure that PLUGIN information are consistent""" + + super().check_validity() + + if self['SDE_strategy'] != 1: + logger.warning('SDE_strategy different of 1 is not supported with SMD/GPU mode') + self['sde_strategy'] = 1 + + if self['hel_recycling']: + self['hel_recycling'] = False + +class GPURunCard(CPPRunCard): + + def default_setup(self): + super(CPPRunCard, self).default_setup() + self.add_param('cudacpp_backend', 'CUDA', include=False, hidden=False) + +MEINTERFACE = CPPMEInterface +RunCard = CPPRunCard diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/madevent_interface.py b/epochX/cudacpp/gg_tt.mad/bin/internal/madevent_interface.py index 920e07a926..d722702891 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/internal/madevent_interface.py +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/madevent_interface.py @@ -3796,9 +3796,11 @@ def do_combine_events(self, line): if self.run_card['bias_module'].lower() not in ['dummy', 'none'] and nb_event: self.correct_bias() - + elif self.run_card['custom_fcts']: + self.correct_bias() + logger.info("combine events done in %s", time.time()-start) - + self.to_store.append('event') diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot new file mode 100755 index 0000000000..7deee7ac88 --- /dev/null +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_unweighted_events.lhe.gz ]];then + gunzip -c ${run}_unweighted_events.lhe.gz > unweighted_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e unweighted_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir $run + cd $run + echo "../unweighted_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl $run parton + mv plots.html ${run}_plots.html +fi + diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_delphes b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_delphes new file mode 100755 index 0000000000..975f410d0e --- /dev/null +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_delphes @@ -0,0 +1,46 @@ +#!/bin/bash +# +# This runs MadAnalysis on the delphes_events.lhco +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_delphes_events.lhco.gz ]];then + gunzip -c ${run}_delphes_events.lhco.gz > delphes_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e delphes_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_delphes + cd ${run}_delphes + echo "../delphes_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_delphes Delphes + mv plots.html ${run}_plots_delphes.html +fi diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pgs b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pgs new file mode 100755 index 0000000000..e7a36ef344 --- /dev/null +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pgs @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_pgs_events.lhco.gz ]];then + gunzip -c ${run}_pgs_events.lhco.gz > pgs_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e pgs_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pgs + cd ${run}_pgs + echo "../pgs_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pgs PGS + mv plots.html ${run}_plots_pgs.html +fi + diff --git a/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pythia b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pythia new file mode 100755 index 0000000000..532bfb4b7b --- /dev/null +++ b/epochX/cudacpp/gg_tt.mad/bin/internal/run_plot_pythia @@ -0,0 +1,50 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin/internal + +if [[ $run != "" && -e ${run}_pythia_events.lhe.gz ]];then + gunzip -c ${run}_pythia_events.lhe.gz > pythia_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e pythia_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pythia + cd ${run}_pythia + echo "../pythia_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pythia Pythia + mv plots.html ${run}_plots_pythia.html + $dirbin/gen_crossxhtml-pl $run +else + echo "Not creating plots" +fi + diff --git a/epochX/cudacpp/gg_tt.mad/bin/madevent b/epochX/cudacpp/gg_tt.mad/bin/madevent index c944aa1faf..dff9711b73 100755 --- a/epochX/cudacpp/gg_tt.mad/bin/madevent +++ b/epochX/cudacpp/gg_tt.mad/bin/madevent @@ -32,6 +32,7 @@ except ImportError: import os +pjoin = os.path.join import optparse # Get the directory of the script real path (bin) @@ -160,13 +161,30 @@ except: pass import internal.madevent_interface as cmd_interface +# check for plugin customization of the launch command +launch_interface = cmd_interface.MadEventCmdShell +if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + +#Source use this executable for compilation always allow it +force_run = False +if (args and args[0] == 'treatcards'): + force_run=True + # Call the cmd interface main loop try: if '-h' in args or '--help' in args: - launch = ME.MadEventCmdShell(me_dir=os.path.dirname(root_path), force_run=True) + launch = launch_interface(me_dir=os.path.dirname(root_path), force_run=True) launch.exec_cmd('help generate_events') sys.exit(0) - with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), ): + with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), force_run=force_run): if (args and os.path.isfile(args[0])): # They are an input file input_file = args[0] @@ -178,7 +196,7 @@ try: cmd_line.run_cmd('import command ' + input_file) cmd_line.run_cmd('quit') else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) cmd_line.use_rawinput = False cmd_line.haspiping = False cmd_line.run_cmd('import command ' + input_file) @@ -188,7 +206,7 @@ try: if options.web: cmd_line = cmd_interface.MadEventCmd(force_run=True) else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) if not hasattr(cmd_line, 'do_%s' % args[0]): if parser_error: print( parser_error) diff --git a/epochX/cudacpp/gg_tt.mad/src/HelAmps_sm.h b/epochX/cudacpp/gg_tt.mad/src/HelAmps_sm.h index 94bf8aca52..07d0bfa887 100644 --- a/epochX/cudacpp/gg_tt.mad/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_tt.mad/src/HelAmps_sm.h @@ -862,6 +862,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -875,6 +876,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -885,6 +887,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -897,6 +900,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -909,6 +913,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -947,6 +952,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -970,6 +976,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1001,6 +1008,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) diff --git a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk index 42fa1b1fd7..750986464e 100644 --- a/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.mad/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories diff --git a/epochX/cudacpp/gg_tt.sa/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_tt.sa/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_tt.sa/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_tt.sa/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_tt.sa/SubProcesses/P1_Sigma_sm_gg_ttx/CPPProcess.cc b/epochX/cudacpp/gg_tt.sa/SubProcesses/P1_Sigma_sm_gg_ttx/CPPProcess.cc index ea42fb3e96..7f253cd296 100644 --- a/epochX/cudacpp/gg_tt.sa/SubProcesses/P1_Sigma_sm_gg_ttx/CPPProcess.cc +++ b/epochX/cudacpp/gg_tt.sa/SubProcesses/P1_Sigma_sm_gg_ttx/CPPProcess.cc @@ -246,10 +246,10 @@ namespace mg5amcCpu ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[4] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[4] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -259,10 +259,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 3 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[4] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[4], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -271,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 3 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[4] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[4], w_fp[2], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[4], w_fp[2], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -796,8 +796,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: standalone_cudacpp static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_tt.sa/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_tt.sa/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gg_tt.sa/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_tt.sa/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gg_tt.sa/src/HelAmps_sm.h b/epochX/cudacpp/gg_tt.sa/src/HelAmps_sm.h index 94bf8aca52..07d0bfa887 100644 --- a/epochX/cudacpp/gg_tt.sa/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_tt.sa/src/HelAmps_sm.h @@ -862,6 +862,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -875,6 +876,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -885,6 +887,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -897,6 +900,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -909,6 +913,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -947,6 +952,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -970,6 +976,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1001,6 +1008,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) diff --git a/epochX/cudacpp/gg_tt.sa/src/cudacpp_src.mk b/epochX/cudacpp/gg_tt.sa/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gg_tt.sa/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_tt.sa/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_ttg.mad/Cards/delphes_trigger.dat b/epochX/cudacpp/gg_ttg.mad/Cards/delphes_trigger.dat new file mode 100644 index 0000000000..0aab0677aa --- /dev/null +++ b/epochX/cudacpp/gg_ttg.mad/Cards/delphes_trigger.dat @@ -0,0 +1,20 @@ +#TRIGGER CARD # DO NOT REMOVE THIS IS A TAG! + +# list of trigger algorithms +# trigger_name >> algorithm #comments +Inclusive electron >> ELEC1_PT: '29' +di-electron >> ELEC1_PT: '17' && ELEC2_PT: '17' +Inclusive Photon >> GAMMA1_PT: '80' +di-Photon >> GAMMA1_PT: '40' && GAMMA2_PT: '25' +Inclusive muon >> MUON1_PT: '19' +di-muon >> MUON1_PT: '7' && MUON2_PT: '7' +Taujet and ETmis >> TAU1_PT: '86' && ETMIS_PT: '65' +di-Taujets >> TAU1_PT: '59' && TAU2_PT: '59' +Jet and ETmis >> JET1_PT: '180' && ETMIS_PT: '123' +Taujet and electron >> TAU1_PT: '45' && ELEC1_PT: '19' +Taujet and muon >> TAU1_PT: '40' && ELEC1_PT: '15' +Inclusive b-jet >> Bjet1_PT: '237' +Inclusive 1 jet >> JET1_PT: '657' +Inclusive 3 jets >> JET1_PT: '247' && JET2_PT: '247' && JET3_PT: '247' +Inclusive 4 jets >> JET1_PT: '113' && JET2_PT: '113' && JET3_PT: '113' && JET4_PT: '113' + diff --git a/epochX/cudacpp/gg_ttg.mad/Cards/me5_configuration.txt b/epochX/cudacpp/gg_ttg.mad/Cards/me5_configuration.txt index 27acb12a1e..8a0c1e6345 100644 --- a/epochX/cudacpp/gg_ttg.mad/Cards/me5_configuration.txt +++ b/epochX/cudacpp/gg_ttg.mad/Cards/me5_configuration.txt @@ -234,7 +234,7 @@ # pineappl = pineappl -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo # MG5 MAIN DIRECTORY -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo diff --git a/epochX/cudacpp/gg_ttg.mad/Cards/plot_card.dat b/epochX/cudacpp/gg_ttg.mad/Cards/plot_card.dat new file mode 100644 index 0000000000..9abe1cc05e --- /dev/null +++ b/epochX/cudacpp/gg_ttg.mad/Cards/plot_card.dat @@ -0,0 +1,203 @@ +#************************************************************************** +# Card for MadAnalysis * +# * +# This file is used to set the classes and options for * +# the MadAnalysis program. * +# * +# * +# Some comments about the classes * +# 1. Plots are for classes of particles. * +# 2. Each particle is identified by its PDG code. * +# 3. Classes names are arbitrary (4 symbols max, no spaces allowed). * +# 4. Particles in the same class will be ordered with the 'ordering * +# function' in the file in_func.f. * +# 5. Classes can be added/edited/removed at will, and given a name * +# that will then appear in the plots. * +# 6. A particle can be put in one class only. Putting a particle in * +# two or more classes can lead to double counting of events. * +# 7. The class name mET is missing Energy and its name is reserved. * +# If used, it must be put last in the classes list below. * +# 8. If events contain particles not belonging to an existing class, * +# a new class will automatically be generated. * +# 9. For LHCO events the PDG code 21 is assigned to a jet (not * +# b-tagged), 5 to a b-tagged jet and 12 to missing ET. * +# * +# * +# Some comments about the cuts * +# 1. In the file kin_func.f the functions on which cuts can be applied * +# are given. * +# 2. The syntax is as follows. * +# etmin 1 3 30d0 * +# means that from the first class the Et of the first three particles * +# has to be greater than 30 GeV. * +# * +# etmissmin 20d0 * +# means that there must be at least 20 GeV of missing Et * +# * +# dRmin 2 1 4 3 3d0 * +# means that the distance between the first particle in the second * +# class and the first three particles in the fourth class has to be * +# greater than 3. * +# * +# ptmax 1 3 10d0 * +# ptmax 1 2 15d0 * +# means that the maximum pt of the third particle in the first class * +# has to smaller than 10 GeV, and the first two particles of this * +# class has to be smaller than 15 GeV * +# 3. The ordering of the particles within a class can be set with the * +# 'ordering function' in the file kin_func.f. * +# 4. For all the 'min' cuts, an event will be thrown away if the particle * +# does not exist. On the other hand, for all the 'max' cuts the cut * +# will be ignored if the particle does not exist * +# (Only dRij is an exception, for which it is the other way around) * +# * +# * +# * +# Some comments about the plotting options * +# 1. In the file kin_func.f the functions can be found that can be * +# plotted. (only for off-line usage) * +# 2. With the plotting options one can set the number of plots for each * +# of these functions. * +# 3. One has to specify for each variable which particles from which * +# class are used to set the plots. Syntax: * +# et 2 4 * +# means that the transverse energy of the first four particles in the * +# second class will be plotted. * +# mij 1 3 * +# mij 2 2 * +# means that for the invariant mass plots the first three particles * +# from the first class and the first two from the second class will be * +# used to plot the invariant mass of two particles. (10 plots) * +# 4. The ordering of the particles in a class can be set with the * +# 'ordering_function'. pt, e and et are valid functions. (For off-line * +# users X1, X2 and X3 can also be used, if defined in kin_func.f.) * +# 5. Max number of plots is 200. * +# * +# * +#************************************************************************** +# Put here your list of classes +#************************************************************************** +# Do NOT put spaces before class names! +# Begin Classes # This is TAG. Do not modify this line +jet 1 -1 2 -2 3 -3 4 -4 21 # Class number 1 +b 5 -5 # Class number 2 +mET 12 -12 14 -14 16 -16 1000022 # Missing ET class, name is reserved +# End Classes # This is TAG. Do not modify this line +#************************************************************************** +ordering_function pt # orders particles in classes according to their pt +normalization xsec # histogram normalization, xsec or number (e.g. 1) +#************************************************************************** +# Put here list of minimum pt for the classes +#************************************************************************** +# Begin Minpts # This is TAG. Do not modify this line +#1 30 +#2 40 +#3 10 +# End Minpts # This is TAG. Do not modify this line +#************************************************************************** +# Cuts on plotted events +#************************************************************************** +# Modify the cuts and remove the pounds/hashes to apply those cuts +# Do NOT put spaces at the beginning of the following lines! +# Begin Cuts # This is TAG. Do not modify this line +#etmin 2 2 40d0 +#etmin 2 1 80d0 +#etmin 1 3 20d0 +#etmax 2 1 200d0 +#ptmin 3 1 0d0 +#etmissmin 20d0 +#etmissmax 80d0 +#etamax 1 1 1d0 +#etamax 2 1 2d0 +#etamin 2 2 1.5d0 +#etamin 2 1 2d0 +#mijmax 2 1 2 2 200d0 +#mijmin 2 1 2 2 100d0 +#X1min 2 1 40d0 +#X1max 2 2 50d0 +#dRijmin 2 1 2 2 0.7d0 +#dRijmax 1 3 2 2 0.7d0 +#XY1min 2 2 2 2 20d0 +#XYZA2max 2 2 2 2 4 1 5 1 40d0 +# End Cuts # This is TAG. Do not modify this line +#************************************************************************** +# Put here the required plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotDefs # This is TAG. Do not modify this line +pt 1 4 # plot pt for the first four particles in class 1 +pt 2 4 # plot pt for the first four particles in class 2 +pt 3 4 # plot pt for the first four particles in class 3 +pt 4 4 # plot pt for the first four particles in class 4 +pt 5 4 # etc. +pt 6 4 +pt 7 4 +#e 2 2 +y 1 4 # plot rapidity for the first four particles in class 1 +y 2 4 +y 3 4 +y 4 4 +y 5 4 +y 6 4 +y 7 4 +#eta 2 2 # plot pseudo-rapidity for the first two part in the 2nd class +#mom 4 1 +#costh 5 1 +#phi 2 2 +#delta_eta 2 2 +#delta_eta 4 1 +mij 1 4 # use the first four particles in the 1st class to plot inv. mass +mij 2 2 # use the first two particles from the second class as well +mij 3 1 # etc. +mij 4 1 +mij 5 1 +mij 6 1 +mij 7 1 +#cosij 1 2 +#cosij 2 2 +#cosij 3 1 +#cosij 4 1 +dRij 1 4 +dRij 2 2 +dRij 3 1 +dRij 4 1 +dRij 5 1 +dRij 6 1 +dRij 7 1 +#delta_phi 2 2 +#delta_phi 4 1 +#delta_phi 5 1 +#X1 2 2 # plot X1 (defined in kin_func.f) +#XYZA1 2 2 +#XYZA1 4 1 +#XYZA1 5 1 +# End PlotDefs # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Put here the plot ranges +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotRange # This is TAG. Do not modify this line +pt 10 0 500 # bin size, min value, max value +et 10 0 500 # bin size, min value, max value +etmiss 10 0 500 # bin size, min value, max value +ht 20 0 1500 +y 0.2 -5 5 # etc. +mij 20 0 1500 +dRij 0.1 0 5 +#delta_phi 0.1 0 3.1 +#X1 1 0 100 +#XYZA1 1 0 100 +# End PlotRange # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Output for plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotOutput # This is TAG. Do not modify this line +output topdrawer # set to topdrawer or gnuplot +plot_decayed no # plot (and cut) dec. res.? (Only for LHE events) +# End PlotOutput # This is TAG. Do not modify this line +#************************************************************************** +# +# diff --git a/epochX/cudacpp/gg_ttg.mad/Cards/run_card.dat b/epochX/cudacpp/gg_ttg.mad/Cards/run_card.dat index a9fbb5a212..1464f610ba 100644 --- a/epochX/cudacpp/gg_ttg.mad/Cards/run_card.dat +++ b/epochX/cudacpp/gg_ttg.mad/Cards/run_card.dat @@ -77,7 +77,7 @@ #********************************************************************* 0 = nhel ! using helicities importance sampling or not. ! 0: sum over helicity, 1: importance sampling - 1 = sde_strategy ! default integration strategy (hep-ph/2021.00773) + 2 = sde_strategy ! default integration strategy (hep-ph/2021.00773) ! 1 is old strategy (using amp square) ! 2 is new strategy (using only the denominator) # To see advanced option for Phase-Space optimization: type "update psoptim" @@ -142,13 +142,3 @@ # systematics = systematics_program ! none, systematics [python], SysCalc [depreceted, C++] ['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule - -#********************************************************************* -# Options for the cudacpp plugin -#********************************************************************* - -# Set cudacpp-specific values of non-cudacpp-specific options --O3 -ffast-math -fbounds-check = global_flag ! build flags for Fortran code (for a fair comparison to cudacpp) - -# New cudacpp-specific options (default values are defined in banner.py) -CPP = cudacpp_backend ! valid backends are FORTRAN, CPP, CUDA diff --git a/epochX/cudacpp/gg_ttg.mad/Source/DHELAS/aloha_file.inc b/epochX/cudacpp/gg_ttg.mad/Source/DHELAS/aloha_file.inc index 7639734c1c..9d01a65cec 100644 --- a/epochX/cudacpp/gg_ttg.mad/Source/DHELAS/aloha_file.inc +++ b/epochX/cudacpp/gg_ttg.mad/Source/DHELAS/aloha_file.inc @@ -1 +1 @@ -ALOHARoutine = FFV1P0_3.o FFV1_0.o FFV1_1.o FFV1_2.o VVV1P0_1.o VVV1_0.o VVVV1P0_1.o VVVV3P0_1.o VVVV4P0_1.o +ALOHARoutine = VVV1_0.o VVV1P0_1.o FFV1_0.o FFV1_1.o FFV1_2.o FFV1P0_3.o VVVV1P0_1.o VVVV3P0_1.o VVVV4P0_1.o diff --git a/epochX/cudacpp/gg_ttg.mad/Source/PDF/pdfwrap_lhapdf.f b/epochX/cudacpp/gg_ttg.mad/Source/PDF/pdfwrap_lhapdf.f index 0be926e6cd..3f36905346 100644 --- a/epochX/cudacpp/gg_ttg.mad/Source/PDF/pdfwrap_lhapdf.f +++ b/epochX/cudacpp/gg_ttg.mad/Source/PDF/pdfwrap_lhapdf.f @@ -5,6 +5,7 @@ SUBROUTINE PDFWRAP C INCLUDE 'pdf.inc' INCLUDE '../alfas.inc' + INCLUDE '../vector.inc' INCLUDE '../coupl.inc' REAL*8 ZMASS DATA ZMASS/91.188D0/ diff --git a/epochX/cudacpp/gg_ttg.mad/Source/make_opts b/epochX/cudacpp/gg_ttg.mad/Source/make_opts index bd3c24228d..2607530b78 100644 --- a/epochX/cudacpp/gg_ttg.mad/Source/make_opts +++ b/epochX/cudacpp/gg_ttg.mad/Source/make_opts @@ -1,17 +1,11 @@ -pdlabel1= -pdlabel2= -lhapdf= -PYTHIA8_PATH=NotInstalled -MG5AMC_VERSION=3.5.0_lo_vect -GLOBAL_FLAG=-O3 -ffast-math -fbounds-check -ALOHA_FLAG= -MATRIX_FLAG= DEFAULT_CPP_COMPILER=g++ MACFLAG= STDLIB=-lstdc++ STDLIB_FLAG= DEFAULT_F_COMPILER=gfortran -DEFAULT_F2PY_COMPILER=f2py3 +DEFAULT_F2PY_COMPILER=f2py3.9 +MG5AMC_VERSION=SpecifiedByMG5aMCAtRunTime +PYTHIA8_PATH=NotInstalled #end_of_make_opts_variables BIASLIBDIR=../../../lib/ diff --git a/epochX/cudacpp/gg_ttg.mad/Source/makefile b/epochX/cudacpp/gg_ttg.mad/Source/makefile index dbe08b846e..00c73099a0 100644 --- a/epochX/cudacpp/gg_ttg.mad/Source/makefile +++ b/epochX/cudacpp/gg_ttg.mad/Source/makefile @@ -136,5 +136,7 @@ cleanSource: clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; -cleanall: cleanSource +cleanavx: + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; +cleanall: cleanSource # THIS IS THE ONE for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/gg_ttg.mad/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_ttg.mad/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_ttg.mad/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_ttg.mad/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc b/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc index 8cc007dff8..8d5864c1d8 100644 --- a/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc +++ b/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc @@ -248,11 +248,11 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - VVV1_0( w_fp[5], w_fp[6], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[6], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -265,10 +265,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 16 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[7] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[7], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[7], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -279,10 +279,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 16 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[8], w_fp[2], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -293,11 +293,11 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 16 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[9], w_fp[5], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[5], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -307,10 +307,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 16 *** // Wavefunction(s) for diagram number 5 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[3], w_fp[5], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -324,7 +324,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[8], w_fp[5], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[5], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -334,11 +334,11 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 16 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[5], w_fp[11], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[11], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -351,7 +351,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[5], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -365,7 +365,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[5], w_fp[7], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[7], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -375,10 +375,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 16 *** // Wavefunction(s) for diagram number 10 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[5] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[3], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -392,7 +392,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[9], w_fp[2], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[2], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -406,7 +406,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 12 - VVV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -422,7 +422,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[8], w_fp[11], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[11], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -435,7 +435,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[9], w_fp[7], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[7], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -448,7 +448,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -461,22 +461,22 @@ namespace mg5amcCpu // *** DIAGRAM 16 OF 16 *** // Wavefunction(s) for diagram number 16 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[10] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[6] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[9] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[10] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[6] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[3], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -1020,8 +1020,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f b/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f index 668cc26192..b8615bc68f 100644 --- a/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f +++ b/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -126,11 +127,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/matrix1.f b/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/matrix1.f index 7188daef76..2fc7bcdb89 100644 --- a/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/matrix1.f +++ b/epochX/cudacpp/gg_ttg.mad/SubProcesses/P1_gg_ttxg/matrix1.f @@ -359,7 +359,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(10) + COMPLEX*16 ZTEMP, TMP_JAMP(9) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -508,33 +508,30 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(15) + AMP(16) ! used 4 times TMP_JAMP(2) = AMP(1) + AMP(18) ! used 4 times TMP_JAMP(1) = AMP(12) - AMP(17) ! used 4 times - TMP_JAMP(10) = TMP_JAMP(3) - TMP_JAMP(2) ! used 2 times - TMP_JAMP(9) = TMP_JAMP(1) + ((-0.000000000000000D+00 + TMP_JAMP(9) = TMP_JAMP(3) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(8) ! used 2 times + TMP_JAMP(8) = TMP_JAMP(3) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(5) ! used 2 times + TMP_JAMP(7) = TMP_JAMP(2) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(2) ! used 2 times + TMP_JAMP(6) = TMP_JAMP(2) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(3) ! used 2 times + TMP_JAMP(5) = TMP_JAMP(1) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(11) ! used 2 times - TMP_JAMP(8) = TMP_JAMP(2) - TMP_JAMP(1) ! used 2 times - TMP_JAMP(7) = TMP_JAMP(1) + ((0.000000000000000D+00, + TMP_JAMP(4) = TMP_JAMP(1) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(10) ! used 2 times - TMP_JAMP(6) = TMP_JAMP(3) - TMP_JAMP(1) ! used 2 times - TMP_JAMP(5) = TMP_JAMP(2) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(3) ! used 2 times - TMP_JAMP(4) = TMP_JAMP(3) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(5) ! used 2 times - JAMP(1,1) = (-1.000000000000000D+00)*AMP(6)+TMP_JAMP(4)+( - $ -1.000000000000000D+00)*TMP_JAMP(5) - JAMP(2,1) = (-1.000000000000000D+00)*AMP(4)+(-1.000000000000000D - $ +00)*TMP_JAMP(4)+TMP_JAMP(9) - JAMP(3,1) = (-1.000000000000000D+00)*AMP(13)+TMP_JAMP(5)+( - $ -1.000000000000000D+00)*TMP_JAMP(7) - JAMP(4,1) = (-1.000000000000000D+00)*AMP(7)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(8)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(10)+(-1.000000000000000D+00) - $ *TMP_JAMP(6) - JAMP(5,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(2)+((0.000000000000000D+00,-1.000000000000000D+00))*AMP(11) - $ +(-1.000000000000000D+00)*AMP(14)+TMP_JAMP(8) - JAMP(6,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(2)+((0.000000000000000D+00,-1.000000000000000D+00))*AMP(8) - $ +(-1.000000000000000D+00)*AMP(9)+TMP_JAMP(10) + JAMP(1,1) = (-1.000000000000000D+00)*AMP(6)+(-1.000000000000000D + $ +00)*TMP_JAMP(6)+TMP_JAMP(8) + JAMP(2,1) = (-1.000000000000000D+00)*AMP(4)+TMP_JAMP(5)+( + $ -1.000000000000000D+00)*TMP_JAMP(8) + JAMP(3,1) = (-1.000000000000000D+00)*AMP(13)+( + $ -1.000000000000000D+00)*TMP_JAMP(4)+TMP_JAMP(6) + JAMP(4,1) = (-1.000000000000000D+00)*AMP(7)+TMP_JAMP(4)+( + $ -1.000000000000000D+00)*TMP_JAMP(9) + JAMP(5,1) = (-1.000000000000000D+00)*AMP(14)+( + $ -1.000000000000000D+00)*TMP_JAMP(5)+TMP_JAMP(7) + JAMP(6,1) = (-1.000000000000000D+00)*AMP(9)+(-1.000000000000000D + $ +00)*TMP_JAMP(7)+TMP_JAMP(9) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/gg_ttg.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_ttg.mad/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gg_ttg.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_ttg.mad/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gg_ttg.mad/SubProcesses/dummy_fct.f b/epochX/cudacpp/gg_ttg.mad/SubProcesses/dummy_fct.f index 076cf29d67..4f7a204b8f 100644 --- a/epochX/cudacpp/gg_ttg.mad/SubProcesses/dummy_fct.f +++ b/epochX/cudacpp/gg_ttg.mad/SubProcesses/dummy_fct.f @@ -32,7 +32,7 @@ logical FUNCTION dummy_cuts(P) LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL) logical do_cuts(nexternal) COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY, - . IS_A_ONIUM, do_cuts + & IS_A_ONIUM, do_cuts dummy_cuts=.true. @@ -118,15 +118,16 @@ double precision function user_dynamical_scale(P) C ************************************************************ -C default for the library implementing a dummt bias function +C default for the library implementing a dummy bias function C ************************************************************ subroutine bias_wgt_custom(p, original_weight, bias_weight) - implicit none + implicit none C C Parameters C include 'nexternal.inc' -C + +C C Arguments C double precision p(0:3, nexternal) @@ -161,3 +162,4 @@ subroutine bias_wgt_custom(p, original_weight, bias_weight) return end subroutine bias_wgt_custom + diff --git a/epochX/cudacpp/gg_ttg.mad/SubProcesses/makefile b/epochX/cudacpp/gg_ttg.mad/SubProcesses/makefile index 74db44d848..093bc84271 100644 --- a/epochX/cudacpp/gg_ttg.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_ttg.mad/SubProcesses/makefile @@ -9,6 +9,33 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra +# Sets correct target based on MAKECMDGOALS +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) + else + TARGET := $(MAKECMDGOALS) + endif +endif + +# Sets correct cppavx target as dependency when compiling Fortran +ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) + ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) + endif +endif + +# Default goal +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -48,10 +75,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -89,7 +116,7 @@ SYMMETRY = symmetry.o idenparts.o # Binaries -LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 +#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) @@ -115,10 +142,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.cudacpplibs: - $(MAKE) -f $(CUDACPP_MAKEFILE) - touch $@ - # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary @@ -130,26 +153,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +# Only used for testing, should be removed in the future madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -215,49 +259,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else ifeq ($(UNAME_P),arm) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z endif -avxnone: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=none +ALL: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z + $(MAKE) USEBUILDDIR=1 cuda -avxsse4: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 +cppnone: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -avxavx2: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 +cppsse4: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -avx512y: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y +cppavx2: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -avx512z: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z +cpp512y: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -###endif +cpp512z: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z + +cuda: + $(MAKE) -f $(CUDACPP_MAKEFILE) cuda # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +BUILD_DIRS := $(wildcard build.*) +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + +clean: +ifeq ($(USEBUILDDIR),1) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only cleaning build dir.) + $(RM) -r $(BUILD_DIRS) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + $(info USEBUILDDIR=0 only cleaning build with no dir.) + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* + $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir + $(RM) $(CUDACPP_BUILDDIR)/.*libs +endif + +cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone + +cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 + +cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 + +clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y + +clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z + +cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda + $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs - rm -f .libs + $(RM) $(CUDACPP_BUILDDIR)/.*libs + $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall - rm -rf $(LIBDIR)libbias.$(libext) - rm -f ../../Source/*.mod ../../Source/*/*.mod + $(RM) -r $(LIBDIR)libbias.$(libext) + $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git a/epochX/cudacpp/gg_ttg.mad/bin/generate_events b/epochX/cudacpp/gg_ttg.mad/bin/generate_events index 107313b25d..5577cc66a0 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/generate_events +++ b/epochX/cudacpp/gg_ttg.mad/bin/generate_events @@ -46,7 +46,7 @@ if __debug__ and (not os.path.exists(pjoin(root_path,'../..', 'bin','create_rele sys.path.append(pjoin(root_path,'bin','internal')) import madevent_interface as ME - +import misc as misc import logging import logging.config @@ -160,17 +160,31 @@ if '__main__' == __name__: # Check that python version is valid set_configuration() - argument = sys.argv + argument = sys.argv + + # check for plugin customization of the launch command + launch_interface = ME.MadEventCmdShell + if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + + try: if '-h' in argument or '--help' in argument: - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.exec_cmd('help generate_events') sys.exit() elif len(argument) > 1 and argument[1] in ['0', '1', '2']: argument = treat_old_argument(argument) with ME.MadEventCmdShell.RunWebHandling(root_path, ): - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.run_cmd('generate_events %s' % ' '.join(argument[1:])) launch.run_cmd('quit') except ME.MadEventAlreadyRunning as message: diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/banner.py b/epochX/cudacpp/gg_ttg.mad/bin/internal/banner.py index 7624b9f557..824815f47b 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/internal/banner.py +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/banner.py @@ -537,7 +537,7 @@ def charge_card(self, tag): self.param_card = param_card_reader.ParamCard(param_card) return self.param_card elif tag == 'mgruncard': - self.run_card = RunCard(self[tag]) + self.run_card = RunCard(self[tag], unknown_warning=False) return self.run_card elif tag == 'mg5proccard': proc_card = self[tag].split('\n') @@ -1002,13 +1002,14 @@ def __init__(self, finput=None, **opt): self.allowed_value = {} self.default_setup() + self.plugin_input(finput) # if input is define read that input if isinstance(finput, (file, str, StringIO.StringIO)): self.read(finput, **opt) - self.plugin_input(finput) + def plugin_input(self, finput=None): @@ -2624,6 +2625,7 @@ class RunCard(ConfigFile): default_include_file = 'run_card.inc' default_autodef_file = 'run.inc' donewarning = [] + include_as_parameter = [] def plugin_input(self, finput): @@ -2670,18 +2672,40 @@ def __new__(cls, finput=None, **opt): elif isinstance(finput, cls): target_class = finput.__class__ elif isinstance(finput, str): + path = finput if '\n' not in finput: finput = open(finput).read() if 'req_acc_FO' in finput: target_class = RunCardNLO else: target_class = RunCardLO + if MADEVENT and os.path.exists(pjoin(MEDIR, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(MEDIR, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + elif not MADEVENT and os.path.exists(path.replace('run_card.dat', '../bin/internal/launch_plugin.py')): + misc.sprint('try to use plugin class') + pydir = path.replace('run_card.dat', '../bin/internal/') + with misc.TMP_variable(sys, 'path', sys.path + [pydir]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + else: return None target_class.fill_post_set_from_blocks() - - return super(RunCard, cls).__new__(target_class, finput, **opt) + out = super(RunCard, cls).__new__(target_class, finput, **opt) + if not isinstance(out, RunCard): #should not happen but in presence of missmatch of library loaded. + out.__init__(finput, **opt) + return out else: return super(RunCard, cls).__new__(cls, finput, **opt) @@ -2709,7 +2733,7 @@ def __init__(self, *args, **opts): self.system_default = {} self.display_block = [] # set some block to be displayed - + self.fct_mod = {} # {param: (fct_pointer, *argument, **opts)} self.cut_class = {} self.warned=False @@ -2746,7 +2770,7 @@ def get_lepton_densities(cls): def add_param(self, name, value, fortran_name=None, include=True, hidden=False, legacy=False, cut=False, system=False, sys_default=None, - autodef=False, + autodef=False, fct_mod=None, **opts): """ add a parameter to the card. value is the default value and defines the type (int/float/bool/str) of the input. @@ -2760,6 +2784,7 @@ def add_param(self, name, value, fortran_name=None, include=True, If a path (Source/PDF/pdf.inc) the definition will be added within that file Default is False (does not add the definition) entry added in the run_card will automatically have this on True. + fct_mod: defines a function to run if the parameter is modify in the include file options of **opts: - allowed: list of valid options. '*' means anything else should be allowed. empty list means anything possible as well. @@ -2784,8 +2809,12 @@ def add_param(self, name, value, fortran_name=None, include=True, if autodef: self.definition_path[autodef].append(name) self.user_set.add(name) + # function to trigger if a value is modified in the include file + # main target is action to force correct recompilation (like for compilation flag/...) + if fct_mod: + self.fct_mod[name] = fct_mod - def read(self, finput, consistency=True): + def read(self, finput, consistency=True, unknown_warning=True): """Read the input file, this can be a path to a file, a file object, a str with the content of the file.""" @@ -2793,6 +2822,7 @@ def read(self, finput, consistency=True): if "\n" in finput: finput = finput.split('\n') elif os.path.isfile(finput): + self.path = finput finput = open(finput) else: raise Exception("No such file %s" % finput) @@ -2807,7 +2837,7 @@ def read(self, finput, consistency=True): name = name.lower().strip() if name not in self: #looks like an entry added by a user -> add it nicely - self.add_unknown_entry(name, value) + self.add_unknown_entry(name, value, unknown_warning) else: self.set( name, value, user=True) # parameter not set in the run_card can be set to compatiblity value @@ -2819,7 +2849,7 @@ def read(self, finput, consistency=True): logger.warning(str(error)) else: raise - def add_unknown_entry(self, name, value): + def add_unknown_entry(self, name, value, unknow_warning): """function to add an entry to the run_card when the associated parameter does not exists. This is based on the guess_entry_fromname for the various syntax providing input. This then call add_param accordingly. @@ -2858,7 +2888,7 @@ def add_unknown_entry(self, name, value): raise Exception("dictionary need to have at least one entry") default['dict']['__type__'] = default[self.guess_type_from_value(default_value[0])] - if name not in RunCard.donewarning: + if name not in RunCard.donewarning and unknow_warning: logger.warning("Found unexpected entry in run_card: \"%s\" with value \"%s\".\n"+\ " The type was assigned to %s. \n"+\ " The definition of that variable will %sbe automatically added to fortran file %s\n"+\ @@ -2896,7 +2926,16 @@ def valid_line(self, line, tmp): return False else: return True - + + + def reset_simd(self, old_value, new_value, name, *args, **opts): + raise Exception('pass in reset simd') + + def make_clean(self,old_value, new_value, name, dir): + raise Exception('pass make clean for ', dir) + + def make_Ptouch(self,old_value, new_value, name, reset): + raise Exception('pass Ptouch for ', reset) def write(self, output_file, template=None, python_template=False, write_hidden=False, template_options=None, **opt): @@ -3071,6 +3110,77 @@ def write(self, output_file, template=None, python_template=False, else: output_file.write(text) + def get_last_value_include(self, output_dir): + """For paraeter in self.fct_mod + parse the associate inc file to get the value of the previous run. + We return a dictionary {name: old_value} + if inc file does not exist we will return the current value (i.e. set has no change) + """ + + #remember that + # default_include_file is a class variable + # self.includepath is on the form include_path : [list of param ] + out = {} + + # setup inc_to_parse to be like self.includepath (include_path : [list of param ]) + # BUT only containing the parameter that need to be tracked for the fct_mod option + inc_to_parse = {} + for inc_file, params in self.includepath.items(): + if not inc_file: + continue + if any(p in params for p in self.fct_mod): + inc_to_parse[inc_file] = [name for name in self.includepath[inc_file] if name in self.fct_mod] + + # now loop over the files and ask the associate function + for inc_file, params in inc_to_parse.items(): + if inc_file is True: + inc_file = self.default_include_file + out.update(self.get_value_from_include(inc_file, params, output_dir)) + + return out + + def get_value_from_include(self, path, list_of_params, output_dir): + """for a given include file return the current value of the requested parameter + return a dictionary {name: value} + if path does not exists return the current value in self for all parameter""" + + #WARNING DOES NOT HANDLE LIST/DICT so far + + # handle case where file is missing + if not os.path.exists(pjoin(output_dir,path)): + misc.sprint("include file not existing", pjoin(output_dir,path)) + out = {name: self[name] for name in list_of_params} + + with open(pjoin(output_dir,path), 'r') as fsock: + text = fsock.read() + + for name in list_of_params: + misc.sprint(name, name in self.fortran_name) + misc.sprint(self.fortran_name[name] if name in self.fortran_name[name] else name) + to_track = [self.fortran_name[name] if name in self.fortran_name else name for name in list_of_params] + pattern = re.compile(r"\(?(%(names)s)\s?=\s?([^)]*)\)?" % {'names':'|'.join(to_track)}, re.I) + out = dict(pattern.findall(text)) + misc.sprint(out) + for name in list_of_params: + if name in self.fortran_name: + value = out[self.fortran_name[name]] + del out[self.fortran_name[name]] + out[name] = value + + for name, value in out.items(): + try: + out[name] = self.format_variable(value, type(self[name])) + except Exception: + continue + + if len(out) != len(list_of_params): + misc.sprint(list_of_params) + misc.sprint(to_track) + misc.sprint(self.fortran_name) + misc.sprint(text) + raise Exception + return out + def get_default(self, name, default=None, log_level=None): """return self[name] if exist otherwise default. log control if we @@ -3361,71 +3471,93 @@ def write_include_file(self, output_dir, output_file=None): #ensusre that system only parameter are correctly set self.update_system_parameter_for_include() + value_in_old_include = self.get_last_value_include(output_dir) + + if output_dir: self.write_autodef(output_dir, output_file=None) # check/fix status of customised functions self.edit_dummy_fct_from_file(self["custom_fcts"], os.path.dirname(output_dir)) for incname in self.includepath: - if incname is True: - pathinc = self.default_include_file - elif incname is False: - continue - else: - pathinc = incname + self.write_one_include_file(output_dir, incname, output_file) + + for name,value in value_in_old_include.items(): + if value != self[name]: + self.fct_mod[name][0](value, self[name], name, *self.fct_mod[name][1],**self.fct_mod[name][2]) - if output_file: - fsock = output_file + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + misc.sprint(incname) + if incname is True: + pathinc = self.default_include_file + elif incname is False: + return + else: + pathinc = incname + + if output_file: + fsock = output_file + else: + fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) + + + for key in self.includepath[incname]: + #define the fortran name + if key in self.fortran_name: + fortran_name = self.fortran_name[key] else: - fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) - for key in self.includepath[incname]: - #define the fortran name - if key in self.fortran_name: - fortran_name = self.fortran_name[key] + fortran_name = key + + if incname in self.include_as_parameter: + fsock.writelines('INTEGER %s\n' % fortran_name) + #get the value with warning if the user didn't set it + value = self.get_default(key) + if hasattr(self, 'mod_inc_%s' % key): + value = getattr(self, 'mod_inc_%s' % key)(value) + # Special treatment for strings containing a list of + # strings. Convert it to a list of strings + if isinstance(value, list): + # in case of a list, add the length of the list as 0th + # element in fortran. Only in case of integer or float + # list (not for bool nor string) + targettype = self.list_parameter[key] + if targettype is bool: + pass + elif targettype is int: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) + fsock.writelines(line) + elif targettype is float: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) + fsock.writelines(line) + # output the rest of the list in fortran + for i,v in enumerate(value): + line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) + fsock.writelines(line) + elif isinstance(value, dict): + for fortran_name, onevalue in value.items(): + line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) + fsock.writelines(line) + elif isinstance(incname,str) and 'compile' in incname: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, value) else: - fortran_name = key - - #get the value with warning if the user didn't set it - value = self.get_default(key) - if hasattr(self, 'mod_inc_%s' % key): - value = getattr(self, 'mod_inc_%s' % key)(value) - # Special treatment for strings containing a list of - # strings. Convert it to a list of strings - if isinstance(value, list): - # in case of a list, add the length of the list as 0th - # element in fortran. Only in case of integer or float - # list (not for bool nor string) - targettype = self.list_parameter[key] - if targettype is bool: - pass - elif targettype is int: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) - fsock.writelines(line) - elif targettype is float: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) - fsock.writelines(line) - # output the rest of the list in fortran - for i,v in enumerate(value): - line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) - fsock.writelines(line) - elif isinstance(value, dict): - for fortran_name, onevalue in value.items(): - line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) - fsock.writelines(line) - elif isinstance(incname,str) and 'compile' in incname: line = '%s = %s \n' % (fortran_name, value) - fsock.write(line) + fsock.write(line) + else: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, self.f77_formatting(value)) else: line = '%s = %s \n' % (fortran_name, self.f77_formatting(value)) - fsock.writelines(line) - if not output_file: - fsock.close() - path = pjoin(output_dir,pathinc) - if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): - files.mv(path+'.tmp', path) - else: - os.remove(path+'.tmp') - + fsock.writelines(line) + if not output_file: + fsock.close() + path = pjoin(output_dir,pathinc) + if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): + files.mv(path+'.tmp', path) + else: + os.remove(path+'.tmp') def write_autodef(self, output_dir, output_file=None): """ Add the definition of variable to run.inc if the variable is set with autodef. @@ -3764,13 +3896,14 @@ def remove_all_cut(self): %(tmin_for_channel)s = tmin_for_channel ! limit the non-singular reach of --some-- channel of integration related to T-channel diagram (value between -1 and 0), -1 is no impact %(survey_splitting)s = survey_splitting ! for loop-induced control how many core are used at survey for the computation of a single iteration. %(survey_nchannel_per_job)s = survey_nchannel_per_job ! control how many Channel are integrated inside a single job on cluster/multicore - %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) + %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) #********************************************************************* -# Compilation flag. No automatic re-compilation (need manual "make clean" in Source) +# Compilation flag. #********************************************************************* %(global_flag)s = global_flag ! fortran optimization flag use for the all code. %(aloha_flag)s = aloha_flag ! fortran optimization flag for aloha function. Suggestions: '-ffast-math' %(matrix_flag)s = matrix_flag ! fortran optimization flag for matrix.f function. Suggestions: '-O3' + %(vector_size)s = vector_size ! size designed for SIMD/OpenMP/GPU (number of events in lockstep) """ template_off = '# To see advanced option for Phase-Space optimization: type "update psoptim"' @@ -3926,9 +4059,12 @@ class RunCardLO(RunCard): "get_dummy_x1_x2": pjoin("SubProcesses","dummy_fct.f"), "dummy_boostframe": pjoin("SubProcesses","dummy_fct.f"), "user_dynamical_scale": pjoin("SubProcesses","dummy_fct.f"), + "bias_wgt_custom": pjoin("SubProcesses","dummy_fct.f"), "user_": pjoin("SubProcesses","dummy_fct.f") # all function starting by user will be added to that file } + include_as_parameter = ['vector.inc'] + if MG5DIR: default_run_card = pjoin(MG5DIR, "internal", "default_run_card_lo.dat") @@ -4162,10 +4298,15 @@ def default_setup(self): self.add_param('hel_splitamp', True, hidden=True, include=False, comment='decide if amplitude aloha call can be splitted in two or not when doing helicity per helicity optimization.') self.add_param('hel_zeroamp', True, hidden=True, include=False, comment='decide if zero amplitude can be removed from the computation when doing helicity per helicity optimization.') self.add_param('SDE_strategy', 1, allowed=[1,2], fortran_name="sde_strat", comment="decide how Multi-channel should behaves \"1\" means full single diagram enhanced (hep-ph/0208156), \"2\" use the product of the denominator") - self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check') - self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math') - self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3') - + self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check', + fct_mod=(self.make_clean, ('Source'),{})) + self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math', + fct_mod=(self.make_clean, ('Source/DHELAS'),{})) + self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3', + fct_mod=(self.make_Ptouch, ('matrix'),{})) + self.add_param('vector_size', 1, include='vector.inc', hidden=True, comment='lockstep size for parralelism run', + fortran_name='VECSIZE_MEMMAX', fct_mod=(self.reset_simd,(),{})) + # parameter allowing to define simple cut via the pdg # Special syntax are related to those. (can not be edit directly) self.add_param('pt_min_pdg',{'__type__':0.}, include=False, cut=True) @@ -4187,8 +4328,7 @@ def default_setup(self): self.add_param('mxxmin4pdg',[-1.], system=True) self.add_param('mxxpart_antipart', [False], system=True) - # CUDACPP parameters - self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + def check_validity(self): """ """ diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/check_param_card.py b/epochX/cudacpp/gg_ttg.mad/bin/internal/check_param_card.py index fe874a06a4..71089d7480 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/internal/check_param_card.py +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/check_param_card.py @@ -85,7 +85,7 @@ def load_str(self, text): self.value= ' '.join(data[len(self.lhacode):]) # check that lhacode are the first entry otherwise return invalid param. if ' '.join([str(i) for i in self.lhacode]) != ' '.join(data[:len(self.lhacode)]): - raise InvalidParam + raise InvalidParam("line was %s" % str(data)) else: self.value = data[-1] diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/common_run_interface.py b/epochX/cudacpp/gg_ttg.mad/bin/internal/common_run_interface.py index 5d0187e3fa..14c7f310dc 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/internal/common_run_interface.py +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/common_run_interface.py @@ -749,13 +749,15 @@ def writeRunWeb(me_dir): class RunWebHandling(object): - def __init__(self, me_dir, crashifpresent=True, warnifpresent=True): + def __init__(self, me_dir, crashifpresent=True, warnifpresent=True, force_run=False): """raise error if RunWeb already exists me_dir is the directory where the write RunWeb""" self.remove_run_web = True self.me_dir = me_dir - + if force_run: + self.remove_run_web = False + return if crashifpresent or warnifpresent: if os.path.exists(pjoin(me_dir, 'RunWeb')): pid = open(pjoin(me_dir, 'RunWeb')).read() @@ -6574,7 +6576,7 @@ def reask(self, *args, **opt): fail_due_to_format = 0 #parameter to avoid infinite loop def postcmd(self, stop, line): - if line not in [None, '0', 'done', '']: + if line not in [None, '0', 'done', '',0]: ending_question = cmd.OneLinePathCompletion.postcmd(self,stop,line) else: ending_question = True @@ -7533,7 +7535,8 @@ def open_file(self, answer): else: raise if time.time() - start < .5: - self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y') + self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y', + timeout=False) self.reload_card(path) def reload_card(self, path): diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/extended_cmd.py b/epochX/cudacpp/gg_ttg.mad/bin/internal/extended_cmd.py index a6a8609dce..2f37070580 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/internal/extended_cmd.py +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/extended_cmd.py @@ -1108,9 +1108,12 @@ def ask(self, question, default, choices=[], path_msg=None, if alias: choices += list(alias.keys()) + + question_instance = obj(question, allow_arg=choices, default=default, mother_interface=self, **opt) - + if fct_timeout is None: + fct_timeout = lambda x: question_instance.postcmd(x, default) if x and default else False if first_cmd: if isinstance(first_cmd, str): question_instance.onecmd(first_cmd) @@ -2271,6 +2274,9 @@ def postcmd(self, stop, line): if n: self.default(line) return self.postcmd(stop, line) + elif self.value is None and line: + self.default(line) + return self.postcmd(stop, line) if not self.casesensitive: for ans in self.allow_arg: if ans.lower() == self.value.lower(): diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/gen_ximprove.py b/epochX/cudacpp/gg_ttg.mad/bin/internal/gen_ximprove.py index 3b8ec31215..a88d60b282 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/internal/gen_ximprove.py +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/gen_ximprove.py @@ -154,10 +154,15 @@ def get_helicity(self, to_submit=True, clean=True): p = misc.Popen(['./gensym'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=Pdir) #sym_input = "%(points)d %(iterations)d %(accuracy)f \n" % self.opts + (stdout, _) = p.communicate(''.encode()) stdout = stdout.decode('ascii',errors='ignore') - nb_channel = max([math.floor(float(d)) for d in stdout.split()]) - + try: + nb_channel = max([math.floor(float(d)) for d in stdout.split()]) + except Exception as error: + misc.sprint(stdout, 'no channel or error for %s' % Pdir) + continue + self.cmd.compile(['madevent_forhel'], cwd=Pdir) if not os.path.exists(pjoin(Pdir, 'madevent_forhel')): raise Exception('Error make madevent_forhel not successful') diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/launch_plugin.py b/epochX/cudacpp/gg_ttg.mad/bin/internal/launch_plugin.py new file mode 100644 index 0000000000..23271b846e --- /dev/null +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/launch_plugin.py @@ -0,0 +1,100 @@ + +import logging +import os +import subprocess +pjoin = os.path.join +logger = logging.getLogger('cmdprint') # for stdout + +try: + import madgraph +except ImportError: + import internal.madevent_interface as madevent_interface + import internal.misc as misc + import internal.extended_cmd as extended_cmd + import internal.banner as banner_mod +else: + import madgraph.interface.madevent_interface as madevent_interface + import madgraph.various.misc as misc + import madgraph.interface.extended_cmd as extended_cmd + import madgraph.various.banner as banner_mod + +class CPPMEInterface(madevent_interface.MadEventCmdShell): + + def compile(self, *args, **opts): + """ """ + + import multiprocessing + if not self.options['nb_core'] or self.options['nb_core'] == 'None': + self.options['nb_core'] = multiprocessing.cpu_count() + + if args and args[0][0] == 'madevent' and hasattr(self, 'run_card'): + import pathlib + import os + pjoin = os.path.join + + + + + cudacpp_backend = self.run_card['cudacpp_backend'].upper() # the default value is defined in banner.py + logger.info("Building madevent in madevent_interface.py with '%s' matrix elements"%cudacpp_backend) + if cudacpp_backend == 'FORTRAN': + args[0][0] = 'madevent_fortran_link' + elif cudacpp_backend == 'CPP': + args[0][0] = 'madevent_cpp_link' + elif cudacpp_backend == 'CUDA': + args[0][0] = 'madevent_cuda_link' + else: + raise Exception("Invalid cudacpp_backend='%s': only 'FORTRAN', 'CPP', 'CUDA' are supported") + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + else: + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + +class CPPRunCard(banner_mod.RunCardLO): + + def reset_simd(self, old_value, new_value, name): + if not hasattr(self, 'path'): + raise Exception + + if name == "vector_size" and new_value <= int(old_value): + # code can handle the new size -> do not recompile + return + + Sourcedir = pjoin(os.path.dirname(os.path.dirname(self.path)), 'Source') + subprocess.call(['make', 'cleanavx'], cwd=Sourcedir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + def plugin_input(self, finput): + return + + def default_setup(self): + super().default_setup() + self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + + + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + if incname == "vector.inc" and 'vector_size' not in self.user_set: + return + super().write_one_include_file(output_dir, incname, output_file) + + + def check_validity(self): + """ensure that PLUGIN information are consistent""" + + super().check_validity() + + if self['SDE_strategy'] != 1: + logger.warning('SDE_strategy different of 1 is not supported with SMD/GPU mode') + self['sde_strategy'] = 1 + + if self['hel_recycling']: + self['hel_recycling'] = False + +class GPURunCard(CPPRunCard): + + def default_setup(self): + super(CPPRunCard, self).default_setup() + self.add_param('cudacpp_backend', 'CUDA', include=False, hidden=False) + +MEINTERFACE = CPPMEInterface +RunCard = CPPRunCard diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/madevent_interface.py b/epochX/cudacpp/gg_ttg.mad/bin/internal/madevent_interface.py index 920e07a926..d722702891 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/internal/madevent_interface.py +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/madevent_interface.py @@ -3796,9 +3796,11 @@ def do_combine_events(self, line): if self.run_card['bias_module'].lower() not in ['dummy', 'none'] and nb_event: self.correct_bias() - + elif self.run_card['custom_fcts']: + self.correct_bias() + logger.info("combine events done in %s", time.time()-start) - + self.to_store.append('event') diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot new file mode 100755 index 0000000000..7deee7ac88 --- /dev/null +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_unweighted_events.lhe.gz ]];then + gunzip -c ${run}_unweighted_events.lhe.gz > unweighted_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e unweighted_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir $run + cd $run + echo "../unweighted_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl $run parton + mv plots.html ${run}_plots.html +fi + diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_delphes b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_delphes new file mode 100755 index 0000000000..975f410d0e --- /dev/null +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_delphes @@ -0,0 +1,46 @@ +#!/bin/bash +# +# This runs MadAnalysis on the delphes_events.lhco +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_delphes_events.lhco.gz ]];then + gunzip -c ${run}_delphes_events.lhco.gz > delphes_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e delphes_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_delphes + cd ${run}_delphes + echo "../delphes_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_delphes Delphes + mv plots.html ${run}_plots_delphes.html +fi diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pgs b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pgs new file mode 100755 index 0000000000..e7a36ef344 --- /dev/null +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pgs @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_pgs_events.lhco.gz ]];then + gunzip -c ${run}_pgs_events.lhco.gz > pgs_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e pgs_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pgs + cd ${run}_pgs + echo "../pgs_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pgs PGS + mv plots.html ${run}_plots_pgs.html +fi + diff --git a/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pythia b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pythia new file mode 100755 index 0000000000..532bfb4b7b --- /dev/null +++ b/epochX/cudacpp/gg_ttg.mad/bin/internal/run_plot_pythia @@ -0,0 +1,50 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin/internal + +if [[ $run != "" && -e ${run}_pythia_events.lhe.gz ]];then + gunzip -c ${run}_pythia_events.lhe.gz > pythia_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e pythia_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pythia + cd ${run}_pythia + echo "../pythia_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pythia Pythia + mv plots.html ${run}_plots_pythia.html + $dirbin/gen_crossxhtml-pl $run +else + echo "Not creating plots" +fi + diff --git a/epochX/cudacpp/gg_ttg.mad/bin/madevent b/epochX/cudacpp/gg_ttg.mad/bin/madevent index c944aa1faf..dff9711b73 100755 --- a/epochX/cudacpp/gg_ttg.mad/bin/madevent +++ b/epochX/cudacpp/gg_ttg.mad/bin/madevent @@ -32,6 +32,7 @@ except ImportError: import os +pjoin = os.path.join import optparse # Get the directory of the script real path (bin) @@ -160,13 +161,30 @@ except: pass import internal.madevent_interface as cmd_interface +# check for plugin customization of the launch command +launch_interface = cmd_interface.MadEventCmdShell +if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + +#Source use this executable for compilation always allow it +force_run = False +if (args and args[0] == 'treatcards'): + force_run=True + # Call the cmd interface main loop try: if '-h' in args or '--help' in args: - launch = ME.MadEventCmdShell(me_dir=os.path.dirname(root_path), force_run=True) + launch = launch_interface(me_dir=os.path.dirname(root_path), force_run=True) launch.exec_cmd('help generate_events') sys.exit(0) - with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), ): + with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), force_run=force_run): if (args and os.path.isfile(args[0])): # They are an input file input_file = args[0] @@ -178,7 +196,7 @@ try: cmd_line.run_cmd('import command ' + input_file) cmd_line.run_cmd('quit') else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) cmd_line.use_rawinput = False cmd_line.haspiping = False cmd_line.run_cmd('import command ' + input_file) @@ -188,7 +206,7 @@ try: if options.web: cmd_line = cmd_interface.MadEventCmd(force_run=True) else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) if not hasattr(cmd_line, 'do_%s' % args[0]): if parser_error: print( parser_error) diff --git a/epochX/cudacpp/gg_ttg.mad/src/HelAmps_sm.h b/epochX/cudacpp/gg_ttg.mad/src/HelAmps_sm.h index 4a326fae62..8995b15c82 100644 --- a/epochX/cudacpp/gg_ttg.mad/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_ttg.mad/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -908,6 +912,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -920,6 +925,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -933,6 +939,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -946,6 +953,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -959,6 +967,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -972,6 +981,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1006,6 +1016,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1044,6 +1055,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1067,6 +1079,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1098,6 +1111,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1129,6 +1143,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1160,6 +1175,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1194,6 +1210,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1228,6 +1245,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) diff --git a/epochX/cudacpp/gg_ttg.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_ttg.mad/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gg_ttg.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_ttg.mad/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_ttg.sa/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_ttg.sa/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_ttg.sa/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_ttg.sa/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_ttg.sa/SubProcesses/P1_Sigma_sm_gg_ttxg/CPPProcess.cc b/epochX/cudacpp/gg_ttg.sa/SubProcesses/P1_Sigma_sm_gg_ttxg/CPPProcess.cc index 6f71af24b1..644126163b 100644 --- a/epochX/cudacpp/gg_ttg.sa/SubProcesses/P1_Sigma_sm_gg_ttxg/CPPProcess.cc +++ b/epochX/cudacpp/gg_ttg.sa/SubProcesses/P1_Sigma_sm_gg_ttxg/CPPProcess.cc @@ -248,11 +248,11 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - VVV1_0( w_fp[5], w_fp[6], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[6], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -264,10 +264,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 16 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[7] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[7], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[7], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -277,10 +277,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 16 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[8], w_fp[2], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -290,11 +290,11 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 16 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[9], w_fp[5], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[5], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -303,10 +303,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 16 *** // Wavefunction(s) for diagram number 5 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[3], w_fp[5], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -319,7 +319,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[8], w_fp[5], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[5], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -328,11 +328,11 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 16 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[5], w_fp[11], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[11], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -344,7 +344,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[5], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -357,7 +357,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[5], w_fp[7], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[7], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -366,10 +366,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 16 *** // Wavefunction(s) for diagram number 10 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[5] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[3], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -382,7 +382,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[9], w_fp[2], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[2], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -395,7 +395,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 12 - VVV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -410,7 +410,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[8], w_fp[11], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[11], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -422,7 +422,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[9], w_fp[7], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[7], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -434,7 +434,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -446,12 +446,12 @@ namespace mg5amcCpu // *** DIAGRAM 16 OF 16 *** // Wavefunction(s) for diagram number 16 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[10] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[6] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[9] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[10] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[6] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[3], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -459,7 +459,7 @@ namespace mg5amcCpu jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -467,7 +467,7 @@ namespace mg5amcCpu jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1014,8 +1014,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: standalone_cudacpp static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_ttg.sa/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_ttg.sa/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gg_ttg.sa/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_ttg.sa/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gg_ttg.sa/src/HelAmps_sm.h b/epochX/cudacpp/gg_ttg.sa/src/HelAmps_sm.h index 4a326fae62..8995b15c82 100644 --- a/epochX/cudacpp/gg_ttg.sa/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_ttg.sa/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -908,6 +912,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -920,6 +925,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -933,6 +939,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -946,6 +953,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -959,6 +967,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -972,6 +981,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1006,6 +1016,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1044,6 +1055,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1067,6 +1079,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1098,6 +1111,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1129,6 +1143,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1160,6 +1175,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1194,6 +1210,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1228,6 +1245,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) diff --git a/epochX/cudacpp/gg_ttg.sa/src/cudacpp_src.mk b/epochX/cudacpp/gg_ttg.sa/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gg_ttg.sa/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_ttg.sa/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_ttgg.mad/Cards/delphes_trigger.dat b/epochX/cudacpp/gg_ttgg.mad/Cards/delphes_trigger.dat new file mode 100644 index 0000000000..0aab0677aa --- /dev/null +++ b/epochX/cudacpp/gg_ttgg.mad/Cards/delphes_trigger.dat @@ -0,0 +1,20 @@ +#TRIGGER CARD # DO NOT REMOVE THIS IS A TAG! + +# list of trigger algorithms +# trigger_name >> algorithm #comments +Inclusive electron >> ELEC1_PT: '29' +di-electron >> ELEC1_PT: '17' && ELEC2_PT: '17' +Inclusive Photon >> GAMMA1_PT: '80' +di-Photon >> GAMMA1_PT: '40' && GAMMA2_PT: '25' +Inclusive muon >> MUON1_PT: '19' +di-muon >> MUON1_PT: '7' && MUON2_PT: '7' +Taujet and ETmis >> TAU1_PT: '86' && ETMIS_PT: '65' +di-Taujets >> TAU1_PT: '59' && TAU2_PT: '59' +Jet and ETmis >> JET1_PT: '180' && ETMIS_PT: '123' +Taujet and electron >> TAU1_PT: '45' && ELEC1_PT: '19' +Taujet and muon >> TAU1_PT: '40' && ELEC1_PT: '15' +Inclusive b-jet >> Bjet1_PT: '237' +Inclusive 1 jet >> JET1_PT: '657' +Inclusive 3 jets >> JET1_PT: '247' && JET2_PT: '247' && JET3_PT: '247' +Inclusive 4 jets >> JET1_PT: '113' && JET2_PT: '113' && JET3_PT: '113' && JET4_PT: '113' + diff --git a/epochX/cudacpp/gg_ttgg.mad/Cards/me5_configuration.txt b/epochX/cudacpp/gg_ttgg.mad/Cards/me5_configuration.txt index 27acb12a1e..8a0c1e6345 100644 --- a/epochX/cudacpp/gg_ttgg.mad/Cards/me5_configuration.txt +++ b/epochX/cudacpp/gg_ttgg.mad/Cards/me5_configuration.txt @@ -234,7 +234,7 @@ # pineappl = pineappl -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo # MG5 MAIN DIRECTORY -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo diff --git a/epochX/cudacpp/gg_ttgg.mad/Cards/plot_card.dat b/epochX/cudacpp/gg_ttgg.mad/Cards/plot_card.dat new file mode 100644 index 0000000000..9abe1cc05e --- /dev/null +++ b/epochX/cudacpp/gg_ttgg.mad/Cards/plot_card.dat @@ -0,0 +1,203 @@ +#************************************************************************** +# Card for MadAnalysis * +# * +# This file is used to set the classes and options for * +# the MadAnalysis program. * +# * +# * +# Some comments about the classes * +# 1. Plots are for classes of particles. * +# 2. Each particle is identified by its PDG code. * +# 3. Classes names are arbitrary (4 symbols max, no spaces allowed). * +# 4. Particles in the same class will be ordered with the 'ordering * +# function' in the file in_func.f. * +# 5. Classes can be added/edited/removed at will, and given a name * +# that will then appear in the plots. * +# 6. A particle can be put in one class only. Putting a particle in * +# two or more classes can lead to double counting of events. * +# 7. The class name mET is missing Energy and its name is reserved. * +# If used, it must be put last in the classes list below. * +# 8. If events contain particles not belonging to an existing class, * +# a new class will automatically be generated. * +# 9. For LHCO events the PDG code 21 is assigned to a jet (not * +# b-tagged), 5 to a b-tagged jet and 12 to missing ET. * +# * +# * +# Some comments about the cuts * +# 1. In the file kin_func.f the functions on which cuts can be applied * +# are given. * +# 2. The syntax is as follows. * +# etmin 1 3 30d0 * +# means that from the first class the Et of the first three particles * +# has to be greater than 30 GeV. * +# * +# etmissmin 20d0 * +# means that there must be at least 20 GeV of missing Et * +# * +# dRmin 2 1 4 3 3d0 * +# means that the distance between the first particle in the second * +# class and the first three particles in the fourth class has to be * +# greater than 3. * +# * +# ptmax 1 3 10d0 * +# ptmax 1 2 15d0 * +# means that the maximum pt of the third particle in the first class * +# has to smaller than 10 GeV, and the first two particles of this * +# class has to be smaller than 15 GeV * +# 3. The ordering of the particles within a class can be set with the * +# 'ordering function' in the file kin_func.f. * +# 4. For all the 'min' cuts, an event will be thrown away if the particle * +# does not exist. On the other hand, for all the 'max' cuts the cut * +# will be ignored if the particle does not exist * +# (Only dRij is an exception, for which it is the other way around) * +# * +# * +# * +# Some comments about the plotting options * +# 1. In the file kin_func.f the functions can be found that can be * +# plotted. (only for off-line usage) * +# 2. With the plotting options one can set the number of plots for each * +# of these functions. * +# 3. One has to specify for each variable which particles from which * +# class are used to set the plots. Syntax: * +# et 2 4 * +# means that the transverse energy of the first four particles in the * +# second class will be plotted. * +# mij 1 3 * +# mij 2 2 * +# means that for the invariant mass plots the first three particles * +# from the first class and the first two from the second class will be * +# used to plot the invariant mass of two particles. (10 plots) * +# 4. The ordering of the particles in a class can be set with the * +# 'ordering_function'. pt, e and et are valid functions. (For off-line * +# users X1, X2 and X3 can also be used, if defined in kin_func.f.) * +# 5. Max number of plots is 200. * +# * +# * +#************************************************************************** +# Put here your list of classes +#************************************************************************** +# Do NOT put spaces before class names! +# Begin Classes # This is TAG. Do not modify this line +jet 1 -1 2 -2 3 -3 4 -4 21 # Class number 1 +b 5 -5 # Class number 2 +mET 12 -12 14 -14 16 -16 1000022 # Missing ET class, name is reserved +# End Classes # This is TAG. Do not modify this line +#************************************************************************** +ordering_function pt # orders particles in classes according to their pt +normalization xsec # histogram normalization, xsec or number (e.g. 1) +#************************************************************************** +# Put here list of minimum pt for the classes +#************************************************************************** +# Begin Minpts # This is TAG. Do not modify this line +#1 30 +#2 40 +#3 10 +# End Minpts # This is TAG. Do not modify this line +#************************************************************************** +# Cuts on plotted events +#************************************************************************** +# Modify the cuts and remove the pounds/hashes to apply those cuts +# Do NOT put spaces at the beginning of the following lines! +# Begin Cuts # This is TAG. Do not modify this line +#etmin 2 2 40d0 +#etmin 2 1 80d0 +#etmin 1 3 20d0 +#etmax 2 1 200d0 +#ptmin 3 1 0d0 +#etmissmin 20d0 +#etmissmax 80d0 +#etamax 1 1 1d0 +#etamax 2 1 2d0 +#etamin 2 2 1.5d0 +#etamin 2 1 2d0 +#mijmax 2 1 2 2 200d0 +#mijmin 2 1 2 2 100d0 +#X1min 2 1 40d0 +#X1max 2 2 50d0 +#dRijmin 2 1 2 2 0.7d0 +#dRijmax 1 3 2 2 0.7d0 +#XY1min 2 2 2 2 20d0 +#XYZA2max 2 2 2 2 4 1 5 1 40d0 +# End Cuts # This is TAG. Do not modify this line +#************************************************************************** +# Put here the required plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotDefs # This is TAG. Do not modify this line +pt 1 4 # plot pt for the first four particles in class 1 +pt 2 4 # plot pt for the first four particles in class 2 +pt 3 4 # plot pt for the first four particles in class 3 +pt 4 4 # plot pt for the first four particles in class 4 +pt 5 4 # etc. +pt 6 4 +pt 7 4 +#e 2 2 +y 1 4 # plot rapidity for the first four particles in class 1 +y 2 4 +y 3 4 +y 4 4 +y 5 4 +y 6 4 +y 7 4 +#eta 2 2 # plot pseudo-rapidity for the first two part in the 2nd class +#mom 4 1 +#costh 5 1 +#phi 2 2 +#delta_eta 2 2 +#delta_eta 4 1 +mij 1 4 # use the first four particles in the 1st class to plot inv. mass +mij 2 2 # use the first two particles from the second class as well +mij 3 1 # etc. +mij 4 1 +mij 5 1 +mij 6 1 +mij 7 1 +#cosij 1 2 +#cosij 2 2 +#cosij 3 1 +#cosij 4 1 +dRij 1 4 +dRij 2 2 +dRij 3 1 +dRij 4 1 +dRij 5 1 +dRij 6 1 +dRij 7 1 +#delta_phi 2 2 +#delta_phi 4 1 +#delta_phi 5 1 +#X1 2 2 # plot X1 (defined in kin_func.f) +#XYZA1 2 2 +#XYZA1 4 1 +#XYZA1 5 1 +# End PlotDefs # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Put here the plot ranges +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotRange # This is TAG. Do not modify this line +pt 10 0 500 # bin size, min value, max value +et 10 0 500 # bin size, min value, max value +etmiss 10 0 500 # bin size, min value, max value +ht 20 0 1500 +y 0.2 -5 5 # etc. +mij 20 0 1500 +dRij 0.1 0 5 +#delta_phi 0.1 0 3.1 +#X1 1 0 100 +#XYZA1 1 0 100 +# End PlotRange # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Output for plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotOutput # This is TAG. Do not modify this line +output topdrawer # set to topdrawer or gnuplot +plot_decayed no # plot (and cut) dec. res.? (Only for LHE events) +# End PlotOutput # This is TAG. Do not modify this line +#************************************************************************** +# +# diff --git a/epochX/cudacpp/gg_ttgg.mad/Cards/run_card.dat b/epochX/cudacpp/gg_ttgg.mad/Cards/run_card.dat index 88d4377d71..26fa7f39dd 100644 --- a/epochX/cudacpp/gg_ttgg.mad/Cards/run_card.dat +++ b/epochX/cudacpp/gg_ttgg.mad/Cards/run_card.dat @@ -77,7 +77,7 @@ #********************************************************************* 0 = nhel ! using helicities importance sampling or not. ! 0: sum over helicity, 1: importance sampling - 1 = sde_strategy ! default integration strategy (hep-ph/2021.00773) + 2 = sde_strategy ! default integration strategy (hep-ph/2021.00773) ! 1 is old strategy (using amp square) ! 2 is new strategy (using only the denominator) # To see advanced option for Phase-Space optimization: type "update psoptim" @@ -167,13 +167,3 @@ # systematics = systematics_program ! none, systematics [python], SysCalc [depreceted, C++] ['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule - -#********************************************************************* -# Options for the cudacpp plugin -#********************************************************************* - -# Set cudacpp-specific values of non-cudacpp-specific options --O3 -ffast-math -fbounds-check = global_flag ! build flags for Fortran code (for a fair comparison to cudacpp) - -# New cudacpp-specific options (default values are defined in banner.py) -CPP = cudacpp_backend ! valid backends are FORTRAN, CPP, CUDA diff --git a/epochX/cudacpp/gg_ttgg.mad/Source/DHELAS/aloha_file.inc b/epochX/cudacpp/gg_ttgg.mad/Source/DHELAS/aloha_file.inc index fa0f3d86f5..1b5bf6ec54 100644 --- a/epochX/cudacpp/gg_ttgg.mad/Source/DHELAS/aloha_file.inc +++ b/epochX/cudacpp/gg_ttgg.mad/Source/DHELAS/aloha_file.inc @@ -1 +1 @@ -ALOHARoutine = FFV1P0_3.o FFV1_0.o FFV1_1.o FFV1_2.o VVV1P0_1.o VVV1_0.o VVVV1P0_1.o VVVV1_0.o VVVV3P0_1.o VVVV3_0.o VVVV4P0_1.o VVVV4_0.o +ALOHARoutine = VVV1_0.o VVV1P0_1.o FFV1_0.o FFV1_1.o FFV1_2.o FFV1P0_3.o VVVV1_0.o VVVV1P0_1.o VVVV3_0.o VVVV3P0_1.o VVVV4_0.o VVVV4P0_1.o diff --git a/epochX/cudacpp/gg_ttgg.mad/Source/PDF/pdfwrap_lhapdf.f b/epochX/cudacpp/gg_ttgg.mad/Source/PDF/pdfwrap_lhapdf.f index 0be926e6cd..3f36905346 100644 --- a/epochX/cudacpp/gg_ttgg.mad/Source/PDF/pdfwrap_lhapdf.f +++ b/epochX/cudacpp/gg_ttgg.mad/Source/PDF/pdfwrap_lhapdf.f @@ -5,6 +5,7 @@ SUBROUTINE PDFWRAP C INCLUDE 'pdf.inc' INCLUDE '../alfas.inc' + INCLUDE '../vector.inc' INCLUDE '../coupl.inc' REAL*8 ZMASS DATA ZMASS/91.188D0/ diff --git a/epochX/cudacpp/gg_ttgg.mad/Source/make_opts b/epochX/cudacpp/gg_ttgg.mad/Source/make_opts index bd3c24228d..2607530b78 100644 --- a/epochX/cudacpp/gg_ttgg.mad/Source/make_opts +++ b/epochX/cudacpp/gg_ttgg.mad/Source/make_opts @@ -1,17 +1,11 @@ -pdlabel1= -pdlabel2= -lhapdf= -PYTHIA8_PATH=NotInstalled -MG5AMC_VERSION=3.5.0_lo_vect -GLOBAL_FLAG=-O3 -ffast-math -fbounds-check -ALOHA_FLAG= -MATRIX_FLAG= DEFAULT_CPP_COMPILER=g++ MACFLAG= STDLIB=-lstdc++ STDLIB_FLAG= DEFAULT_F_COMPILER=gfortran -DEFAULT_F2PY_COMPILER=f2py3 +DEFAULT_F2PY_COMPILER=f2py3.9 +MG5AMC_VERSION=SpecifiedByMG5aMCAtRunTime +PYTHIA8_PATH=NotInstalled #end_of_make_opts_variables BIASLIBDIR=../../../lib/ diff --git a/epochX/cudacpp/gg_ttgg.mad/Source/makefile b/epochX/cudacpp/gg_ttgg.mad/Source/makefile index dbe08b846e..00c73099a0 100644 --- a/epochX/cudacpp/gg_ttgg.mad/Source/makefile +++ b/epochX/cudacpp/gg_ttgg.mad/Source/makefile @@ -136,5 +136,7 @@ cleanSource: clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; -cleanall: cleanSource +cleanavx: + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; +cleanall: cleanSource # THIS IS THE ONE for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/CPPProcess.cc b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/CPPProcess.cc index 442d769ae3..f4be685ba8 100644 --- a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/CPPProcess.cc +++ b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/CPPProcess.cc @@ -250,11 +250,11 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][5], +1, w_fp[5], 5 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[7] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 1 - VVVV1_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -263,7 +263,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -272,7 +272,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -285,10 +285,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 123 *** // Wavefunction(s) for diagram number 2 - VVV1P0_1( w_fp[6], w_fp[4], COUPs[0], 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[6], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 2 - VVV1_0( w_fp[7], w_fp[5], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -305,10 +305,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 123 *** // Wavefunction(s) for diagram number 3 - VVV1P0_1( w_fp[6], w_fp[5], COUPs[0], 0., 0., w_fp[9] ); + VVV1P0_1( w_fp[6], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[7], w_fp[4], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -325,10 +325,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 123 *** // Wavefunction(s) for diagram number 4 - VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 4 - VVV1_0( w_fp[6], w_fp[7], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -345,11 +345,11 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 123 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[12], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -363,7 +363,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[11], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -376,10 +376,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 123 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[3], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[13], w_fp[11], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[11], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -390,10 +390,10 @@ namespace mg5amcCpu // *** DIAGRAM 8 OF 123 *** // Wavefunction(s) for diagram number 8 - FFV1_1( w_fp[2], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_1( w_fp[2], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[12], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -407,7 +407,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[3], w_fp[14], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -420,10 +420,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 123 *** // Wavefunction(s) for diagram number 10 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[15] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[15] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[15], w_fp[14], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[14], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -434,10 +434,10 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 123 *** // Wavefunction(s) for diagram number 11 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[15], w_fp[16], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[16], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -451,7 +451,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[15], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -467,7 +467,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[13], w_fp[16], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[16], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -481,7 +481,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -497,7 +497,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - FFV1_0( w_fp[3], w_fp[16], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[16], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -513,7 +513,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[12], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 16 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -526,12 +526,12 @@ namespace mg5amcCpu // *** DIAGRAM 17 OF 123 *** // Wavefunction(s) for diagram number 17 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_1( w_fp[12], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[12], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 17 - FFV1_0( w_fp[16], w_fp[8], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[8], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 17 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -541,10 +541,10 @@ namespace mg5amcCpu // *** DIAGRAM 18 OF 123 *** // Wavefunction(s) for diagram number 18 - FFV1_1( w_fp[12], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[12], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 18 - FFV1_0( w_fp[16], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 18 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -557,7 +557,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 19 - FFV1_0( w_fp[16], w_fp[12], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[12], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 19 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -568,11 +568,11 @@ namespace mg5amcCpu // *** DIAGRAM 20 OF 123 *** // Wavefunction(s) for diagram number 20 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[12], COUPs[1], 0., 0., w_fp[17] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[12], COUPs[1], 1.0, 0., 0., w_fp[17] ); // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[6], w_fp[5], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 20 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -588,7 +588,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 21 - FFV1_0( w_fp[3], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 21 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -602,7 +602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - FFV1_0( w_fp[13], w_fp[12], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[12], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 22 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -613,10 +613,10 @@ namespace mg5amcCpu // *** DIAGRAM 23 OF 123 *** // Wavefunction(s) for diagram number 23 - VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 0., 0., w_fp[18] ); + VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[18] ); // Amplitude(s) for diagram number 23 - VVV1_0( w_fp[18], w_fp[4], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 23 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -632,7 +632,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 24 - FFV1_0( w_fp[3], w_fp[8], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 24 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -646,7 +646,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 25 - FFV1_0( w_fp[15], w_fp[12], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[12], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 25 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -657,10 +657,10 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 123 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[12], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[19] ); + FFV1_1( w_fp[12], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[19] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[15], w_fp[19], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[19], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 26 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -673,7 +673,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[15], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 27 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -686,7 +686,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 28 - FFV1_0( w_fp[13], w_fp[19], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[19], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 28 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -699,7 +699,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[13], w_fp[8], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[8], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 29 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -712,7 +712,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 30 - FFV1_0( w_fp[3], w_fp[19], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[19], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 30 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -726,7 +726,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 31 - VVV1_0( w_fp[1], w_fp[10], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 31 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -739,22 +739,22 @@ namespace mg5amcCpu // *** DIAGRAM 32 OF 123 *** // Wavefunction(s) for diagram number 32 - VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[17] ); - VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[19] ); - VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[8] ); + VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[17] ); + VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[19] ); + VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[3], w_fp[12], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[12], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[19], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[12], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[8], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -763,12 +763,12 @@ namespace mg5amcCpu // *** DIAGRAM 33 OF 123 *** // Wavefunction(s) for diagram number 33 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[12], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[12], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[20], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 33 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -778,10 +778,10 @@ namespace mg5amcCpu // *** DIAGRAM 34 OF 123 *** // Wavefunction(s) for diagram number 34 - FFV1_2( w_fp[12], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[12], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 34 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 34 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -794,7 +794,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - FFV1_0( w_fp[12], w_fp[9], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 35 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -805,10 +805,10 @@ namespace mg5amcCpu // *** DIAGRAM 36 OF 123 *** // Wavefunction(s) for diagram number 36 - FFV1P0_3( w_fp[12], w_fp[2], COUPs[1], 0., 0., w_fp[22] ); + FFV1P0_3( w_fp[12], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 36 - VVV1_0( w_fp[6], w_fp[5], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 36 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -824,7 +824,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 37 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 37 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -838,7 +838,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 38 - FFV1_0( w_fp[12], w_fp[14], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 38 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -852,7 +852,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 39 - VVV1_0( w_fp[18], w_fp[4], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 39 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -868,7 +868,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 40 - FFV1_0( w_fp[20], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 40 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -882,7 +882,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 41 - FFV1_0( w_fp[12], w_fp[11], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[11], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 41 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -893,10 +893,10 @@ namespace mg5amcCpu // *** DIAGRAM 42 OF 123 *** // Wavefunction(s) for diagram number 42 - FFV1_2( w_fp[12], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_2( w_fp[12], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 42 - FFV1_0( w_fp[23], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 42 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -909,7 +909,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 43 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 43 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -922,7 +922,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 44 - FFV1_0( w_fp[23], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 44 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -935,7 +935,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 45 - FFV1_0( w_fp[20], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 45 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -948,7 +948,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 46 - FFV1_0( w_fp[23], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 46 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -962,7 +962,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 47 - VVV1_0( w_fp[1], w_fp[10], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 47 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -978,17 +978,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 48 - FFV1_0( w_fp[12], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[11] -= amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[12], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; - FFV1_0( w_fp[12], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -997,11 +997,11 @@ namespace mg5amcCpu // *** DIAGRAM 49 OF 123 *** // Wavefunction(s) for diagram number 49 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[12] ); - FFV1_2( w_fp[3], w_fp[12], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[12] ); + FFV1_2( w_fp[3], w_fp[12], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 49 - FFV1_0( w_fp[22], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 49 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1012,10 +1012,10 @@ namespace mg5amcCpu // *** DIAGRAM 50 OF 123 *** // Wavefunction(s) for diagram number 50 - VVV1P0_1( w_fp[12], w_fp[5], COUPs[0], 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[12], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 50 - FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 50 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1031,7 +1031,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 51 - FFV1_0( w_fp[13], w_fp[9], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[9], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 51 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1042,10 +1042,10 @@ namespace mg5amcCpu // *** DIAGRAM 52 OF 123 *** // Wavefunction(s) for diagram number 52 - FFV1_1( w_fp[2], w_fp[12], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_1( w_fp[2], w_fp[12], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 52 - FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 52 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1059,7 +1059,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 53 - FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 53 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1075,7 +1075,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 54 - FFV1_0( w_fp[16], w_fp[14], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[14], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 54 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1089,7 +1089,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 55 - FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 55 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1105,7 +1105,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 56 - FFV1_0( w_fp[22], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 56 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1121,7 +1121,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 57 - VVV1_0( w_fp[12], w_fp[18], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[18], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 57 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1141,7 +1141,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 58 - VVVV1_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1150,7 +1150,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1159,7 +1159,7 @@ namespace mg5amcCpu jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1172,10 +1172,10 @@ namespace mg5amcCpu // *** DIAGRAM 59 OF 123 *** // Wavefunction(s) for diagram number 59 - VVV1P0_1( w_fp[12], w_fp[1], COUPs[0], 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[12], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 59 - VVV1_0( w_fp[7], w_fp[5], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 59 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1195,7 +1195,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 60 - VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 60 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1215,7 +1215,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 61 - FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 61 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1231,7 +1231,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 62 - FFV1_0( w_fp[22], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 62 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1245,7 +1245,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 63 - FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 63 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1261,7 +1261,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 64 - FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 64 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1272,11 +1272,11 @@ namespace mg5amcCpu // *** DIAGRAM 65 OF 123 *** // Wavefunction(s) for diagram number 65 - VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 0., 0., w_fp[20] ); - FFV1_2( w_fp[3], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[20] ); + FFV1_2( w_fp[3], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 65 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 65 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1287,10 +1287,10 @@ namespace mg5amcCpu // *** DIAGRAM 66 OF 123 *** // Wavefunction(s) for diagram number 66 - VVV1P0_1( w_fp[20], w_fp[4], COUPs[0], 0., 0., w_fp[22] ); + VVV1P0_1( w_fp[20], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 66 - FFV1_0( w_fp[3], w_fp[9], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 66 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1306,7 +1306,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 67 - FFV1_0( w_fp[15], w_fp[9], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[9], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 67 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1317,10 +1317,10 @@ namespace mg5amcCpu // *** DIAGRAM 68 OF 123 *** // Wavefunction(s) for diagram number 68 - FFV1_1( w_fp[2], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 68 - FFV1_0( w_fp[16], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 68 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1334,7 +1334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 69 - FFV1_0( w_fp[16], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 69 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1350,7 +1350,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 70 - FFV1_0( w_fp[16], w_fp[11], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[11], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 70 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1364,7 +1364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 71 - FFV1_0( w_fp[3], w_fp[23], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 71 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1380,7 +1380,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 72 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 72 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1396,7 +1396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 73 - VVV1_0( w_fp[20], w_fp[6], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[20], w_fp[6], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 73 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1416,7 +1416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 74 - VVVV1_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1425,7 +1425,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1434,7 +1434,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1447,10 +1447,10 @@ namespace mg5amcCpu // *** DIAGRAM 75 OF 123 *** // Wavefunction(s) for diagram number 75 - VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 0., 0., w_fp[12] ); + VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[12] ); // Amplitude(s) for diagram number 75 - VVV1_0( w_fp[7], w_fp[4], w_fp[12], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[12], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 75 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1470,7 +1470,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 76 - VVV1_0( w_fp[1], w_fp[7], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 76 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1490,7 +1490,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 77 - FFV1_0( w_fp[3], w_fp[11], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 77 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1506,7 +1506,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 78 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 78 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1520,7 +1520,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 79 - FFV1_0( w_fp[15], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 79 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1536,7 +1536,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 80 - FFV1_0( w_fp[15], w_fp[23], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[23], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 80 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1547,10 +1547,10 @@ namespace mg5amcCpu // *** DIAGRAM 81 OF 123 *** // Wavefunction(s) for diagram number 81 - FFV1_1( w_fp[9], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[9], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 81 - FFV1_0( w_fp[15], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 81 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1560,10 +1560,10 @@ namespace mg5amcCpu // *** DIAGRAM 82 OF 123 *** // Wavefunction(s) for diagram number 82 - FFV1_2( w_fp[15], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[15], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 82 - FFV1_0( w_fp[12], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 82 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1576,7 +1576,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 83 - FFV1_0( w_fp[13], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 83 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1586,10 +1586,10 @@ namespace mg5amcCpu // *** DIAGRAM 84 OF 123 *** // Wavefunction(s) for diagram number 84 - FFV1_2( w_fp[13], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[13], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 84 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 84 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1602,7 +1602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 85 - FFV1_0( w_fp[3], w_fp[23], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 85 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1613,10 +1613,10 @@ namespace mg5amcCpu // *** DIAGRAM 86 OF 123 *** // Wavefunction(s) for diagram number 86 - VVV1P0_1( w_fp[0], w_fp[10], COUPs[0], 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[0], w_fp[10], COUPs[0], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 86 - FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 86 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1629,10 +1629,10 @@ namespace mg5amcCpu // *** DIAGRAM 87 OF 123 *** // Wavefunction(s) for diagram number 87 - FFV1_2( w_fp[16], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + FFV1_2( w_fp[16], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 87 - FFV1_0( w_fp[22], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 87 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1642,10 +1642,10 @@ namespace mg5amcCpu // *** DIAGRAM 88 OF 123 *** // Wavefunction(s) for diagram number 88 - FFV1_1( w_fp[11], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_1( w_fp[11], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 88 - FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 88 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1658,7 +1658,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 89 - FFV1_0( w_fp[22], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 89 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1668,10 +1668,10 @@ namespace mg5amcCpu // *** DIAGRAM 90 OF 123 *** // Wavefunction(s) for diagram number 90 - FFV1_1( w_fp[14], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[24] ); + FFV1_1( w_fp[14], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[24] ); // Amplitude(s) for diagram number 90 - FFV1_0( w_fp[16], w_fp[24], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[24], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 90 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1684,7 +1684,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 91 - FFV1_0( w_fp[22], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 91 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1698,7 +1698,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 92 - FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 92 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1714,7 +1714,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 93 - VVVV1_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1723,7 +1723,7 @@ namespace mg5amcCpu jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1732,7 +1732,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1745,10 +1745,10 @@ namespace mg5amcCpu // *** DIAGRAM 94 OF 123 *** // Wavefunction(s) for diagram number 94 - VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 0., 0., w_fp[22] ); + VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 94 - VVV1_0( w_fp[7], w_fp[5], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 94 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1765,10 +1765,10 @@ namespace mg5amcCpu // *** DIAGRAM 95 OF 123 *** // Wavefunction(s) for diagram number 95 - VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 0., 0., w_fp[25] ); + VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 1.0, 0., 0., w_fp[25] ); // Amplitude(s) for diagram number 95 - VVV1_0( w_fp[6], w_fp[5], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 95 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1788,7 +1788,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 96 - FFV1_0( w_fp[3], w_fp[14], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 96 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1804,7 +1804,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 97 - FFV1_0( w_fp[3], w_fp[24], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[24], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 97 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1818,7 +1818,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 98 - FFV1_0( w_fp[13], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 98 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1834,7 +1834,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 99 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 99 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1848,7 +1848,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 100 - VVVV1_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1857,7 +1857,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1866,7 +1866,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1879,10 +1879,10 @@ namespace mg5amcCpu // *** DIAGRAM 101 OF 123 *** // Wavefunction(s) for diagram number 101 - VVV1P0_1( w_fp[0], w_fp[18], COUPs[0], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[18], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 101 - VVV1_0( w_fp[7], w_fp[4], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 101 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1902,7 +1902,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 102 - VVV1_0( w_fp[18], w_fp[4], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 102 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1922,7 +1922,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 103 - FFV1_0( w_fp[3], w_fp[11], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 103 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1938,7 +1938,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 104 - FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 104 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1952,7 +1952,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 105 - FFV1_0( w_fp[15], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 105 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1968,7 +1968,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 106 - FFV1_0( w_fp[12], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 106 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1982,7 +1982,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 107 - VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1991,7 +1991,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2000,7 +2000,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2016,7 +2016,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 108 - VVV1_0( w_fp[1], w_fp[10], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 108 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2036,7 +2036,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 109 - VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 109 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2056,7 +2056,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 110 - FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 110 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2069,7 +2069,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 111 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 111 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2082,7 +2082,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 112 - FFV1_0( w_fp[15], w_fp[24], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[24], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 112 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2095,7 +2095,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 113 - FFV1_0( w_fp[12], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 113 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2105,12 +2105,12 @@ namespace mg5amcCpu // *** DIAGRAM 114 OF 123 *** // Wavefunction(s) for diagram number 114 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[12] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[24] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[12] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 114 - VVV1_0( w_fp[12], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2119,7 +2119,7 @@ namespace mg5amcCpu jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[24], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2128,7 +2128,7 @@ namespace mg5amcCpu jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[21], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2144,17 +2144,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 115 - FFV1_0( w_fp[3], w_fp[14], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[12], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[14], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[22] += amp_sv[0]; @@ -2166,17 +2166,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 116 - FFV1_0( w_fp[13], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; - FFV1_0( w_fp[13], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[12] += amp_sv[0]; - FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -2185,12 +2185,12 @@ namespace mg5amcCpu // *** DIAGRAM 117 OF 123 *** // Wavefunction(s) for diagram number 117 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[13] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[13] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 117 - VVV1_0( w_fp[21], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2199,7 +2199,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[13], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[13], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2208,7 +2208,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[24], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2224,17 +2224,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 118 - FFV1_0( w_fp[3], w_fp[11], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[11], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[16] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[11], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[16] += amp_sv[0]; @@ -2246,17 +2246,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 119 - FFV1_0( w_fp[15], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; - FFV1_0( w_fp[15], w_fp[2], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[18] += amp_sv[0]; - FFV1_0( w_fp[15], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[18] += amp_sv[0]; @@ -2265,22 +2265,22 @@ namespace mg5amcCpu // *** DIAGRAM 120 OF 123 *** // Wavefunction(s) for diagram number 120 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[15] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[13] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[15] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[13] ); // Amplitude(s) for diagram number 120 - FFV1_0( w_fp[3], w_fp[9], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[15], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -2292,17 +2292,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 121 - FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[16], w_fp[2], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[15], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; - FFV1_0( w_fp[16], w_fp[2], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[19] += amp_sv[0]; @@ -2314,7 +2314,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 122 - VVV1_0( w_fp[24], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2323,7 +2323,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[15], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[15], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2332,7 +2332,7 @@ namespace mg5amcCpu jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[13], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[13], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2348,7 +2348,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 123 - VVV1_0( w_fp[0], w_fp[17], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[17], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2357,7 +2357,7 @@ namespace mg5amcCpu jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[0], w_fp[19], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[19], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2366,7 +2366,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2966,8 +2966,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/auto_dsig1.f b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/auto_dsig1.f index d12d34daf6..0fa6436690 100644 --- a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/auto_dsig1.f +++ b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -126,11 +127,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/matrix1.f b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/matrix1.f index cdf77037f6..4a821fd44d 100644 --- a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/matrix1.f +++ b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/P1_gg_ttxgg/matrix1.f @@ -391,7 +391,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(163) + COMPLEX*16 ZTEMP, TMP_JAMP(155) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -1218,362 +1218,318 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(84) + AMP(86) ! used 8 times TMP_JAMP(2) = AMP(81) - AMP(83) ! used 8 times TMP_JAMP(1) = AMP(82) + AMP(85) ! used 8 times - TMP_JAMP(30) = TMP_JAMP(11) + AMP(121) ! used 8 times - TMP_JAMP(29) = TMP_JAMP(12) - AMP(132) ! used 8 times + TMP_JAMP(30) = TMP_JAMP(15) - AMP(157) ! used 8 times + TMP_JAMP(29) = TMP_JAMP(14) + AMP(159) ! used 8 times TMP_JAMP(28) = TMP_JAMP(13) + AMP(130) ! used 8 times - TMP_JAMP(27) = TMP_JAMP(14) + AMP(159) ! used 8 times - TMP_JAMP(26) = TMP_JAMP(15) - AMP(157) ! used 8 times - TMP_JAMP(25) = TMP_JAMP(8) - AMP(131) ! used 8 times + TMP_JAMP(27) = TMP_JAMP(12) - AMP(132) ! used 8 times + TMP_JAMP(26) = TMP_JAMP(11) + AMP(121) ! used 8 times + TMP_JAMP(25) = TMP_JAMP(10) + AMP(154) ! used 8 times TMP_JAMP(24) = TMP_JAMP(9) - AMP(156) ! used 8 times - TMP_JAMP(23) = TMP_JAMP(10) + AMP(154) ! used 8 times - TMP_JAMP(22) = TMP_JAMP(6) + AMP(114) ! used 8 times - TMP_JAMP(21) = TMP_JAMP(7) + AMP(158) ! used 8 times - TMP_JAMP(20) = TMP_JAMP(4) - AMP(141) ! used 8 times - TMP_JAMP(19) = TMP_JAMP(5) + AMP(139) ! used 8 times - TMP_JAMP(18) = TMP_JAMP(2) + AMP(105) ! used 8 times - TMP_JAMP(17) = TMP_JAMP(3) - AMP(155) ! used 8 times + TMP_JAMP(23) = TMP_JAMP(8) - AMP(131) ! used 8 times + TMP_JAMP(22) = TMP_JAMP(7) + AMP(158) ! used 8 times + TMP_JAMP(21) = TMP_JAMP(6) + AMP(114) ! used 8 times + TMP_JAMP(20) = TMP_JAMP(5) + AMP(139) ! used 8 times + TMP_JAMP(19) = TMP_JAMP(4) - AMP(141) ! used 8 times + TMP_JAMP(18) = TMP_JAMP(3) - AMP(155) ! used 8 times + TMP_JAMP(17) = TMP_JAMP(2) + AMP(105) ! used 8 times TMP_JAMP(16) = TMP_JAMP(1) - AMP(140) ! used 8 times - TMP_JAMP(90) = AMP(108) + AMP(133) ! used 4 times - TMP_JAMP(89) = AMP(51) + AMP(52) ! used 4 times - TMP_JAMP(88) = AMP(40) - AMP(54) ! used 4 times - TMP_JAMP(87) = AMP(11) - AMP(135) ! used 4 times - TMP_JAMP(86) = TMP_JAMP(26) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(51) ! used 4 times - TMP_JAMP(85) = TMP_JAMP(28) + TMP_JAMP(27) ! used 4 times - TMP_JAMP(84) = TMP_JAMP(29) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(11) ! used 4 times - TMP_JAMP(83) = TMP_JAMP(30) + TMP_JAMP(29) ! used 4 times - TMP_JAMP(82) = AMP(102) + AMP(151) ! used 4 times - TMP_JAMP(81) = AMP(69) - AMP(134) ! used 4 times - TMP_JAMP(80) = AMP(59) - AMP(153) ! used 4 times - TMP_JAMP(79) = TMP_JAMP(23) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(102) ! used 4 times - TMP_JAMP(78) = TMP_JAMP(24) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(59) ! used 4 times - TMP_JAMP(77) = TMP_JAMP(25) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(69) ! used 4 times - TMP_JAMP(76) = TMP_JAMP(29) + TMP_JAMP(25) ! used 4 times - TMP_JAMP(75) = TMP_JAMP(30) - TMP_JAMP(23) ! used 4 times - TMP_JAMP(74) = AMP(43) - AMP(53) ! used 4 times - TMP_JAMP(73) = TMP_JAMP(21) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(43) ! used 4 times - TMP_JAMP(72) = TMP_JAMP(22) + ((0.000000000000000D+00, + TMP_JAMP(80) = TMP_JAMP(30) + TMP_JAMP(29) ! used 4 times + TMP_JAMP(79) = TMP_JAMP(30) - TMP_JAMP(22) ! used 4 times + TMP_JAMP(78) = TMP_JAMP(29) + TMP_JAMP(22) ! used 4 times + TMP_JAMP(77) = TMP_JAMP(28) + TMP_JAMP(27) ! used 4 times + TMP_JAMP(76) = TMP_JAMP(28) - TMP_JAMP(23) ! used 4 times + TMP_JAMP(75) = TMP_JAMP(27) + TMP_JAMP(23) ! used 4 times + TMP_JAMP(74) = TMP_JAMP(27) + TMP_JAMP(19) ! used 4 times + TMP_JAMP(73) = TMP_JAMP(26) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(18) ! used 4 times + TMP_JAMP(72) = TMP_JAMP(26) - TMP_JAMP(25) ! used 4 times + TMP_JAMP(71) = TMP_JAMP(26) - TMP_JAMP(19) ! used 4 times + TMP_JAMP(70) = TMP_JAMP(26) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(17) ! used 4 times + TMP_JAMP(69) = TMP_JAMP(25) + TMP_JAMP(24) ! used 4 times + TMP_JAMP(68) = TMP_JAMP(25) - TMP_JAMP(18) ! used 4 times + TMP_JAMP(67) = TMP_JAMP(24) - TMP_JAMP(23) ! used 4 times + TMP_JAMP(66) = TMP_JAMP(24) + TMP_JAMP(18) ! used 4 times + TMP_JAMP(65) = TMP_JAMP(22) + TMP_JAMP(20) ! used 4 times + TMP_JAMP(64) = TMP_JAMP(21) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(62) ! used 4 times - TMP_JAMP(71) = TMP_JAMP(22) + TMP_JAMP(21) ! used 4 times - TMP_JAMP(70) = TMP_JAMP(27) + TMP_JAMP(21) ! used 4 times - TMP_JAMP(69) = TMP_JAMP(28) - TMP_JAMP(25) ! used 4 times - TMP_JAMP(68) = AMP(119) + AMP(145) ! used 4 times - TMP_JAMP(67) = AMP(14) - AMP(147) ! used 4 times - TMP_JAMP(66) = TMP_JAMP(20) + TMP_JAMP(19) ! used 4 times - TMP_JAMP(65) = TMP_JAMP(22) - TMP_JAMP(19) ! used 4 times - TMP_JAMP(64) = TMP_JAMP(29) + TMP_JAMP(20) ! used 4 times - TMP_JAMP(63) = AMP(77) - AMP(152) ! used 4 times - TMP_JAMP(62) = TMP_JAMP(17) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(77) ! used 4 times - TMP_JAMP(61) = TMP_JAMP(18) + ((-0.000000000000000D+00 + TMP_JAMP(63) = TMP_JAMP(21) - TMP_JAMP(20) ! used 4 times + TMP_JAMP(62) = TMP_JAMP(21) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(61) ! used 4 times + TMP_JAMP(61) = TMP_JAMP(20) + TMP_JAMP(19) ! used 4 times + TMP_JAMP(60) = TMP_JAMP(20) - TMP_JAMP(16) ! used 4 times + TMP_JAMP(59) = TMP_JAMP(19) + TMP_JAMP(16) ! used 4 times + TMP_JAMP(58) = TMP_JAMP(18) - TMP_JAMP(16) ! used 4 times + TMP_JAMP(57) = TMP_JAMP(17) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(79) ! used 4 times - TMP_JAMP(60) = TMP_JAMP(24) + TMP_JAMP(17) ! used 4 times - TMP_JAMP(59) = TMP_JAMP(28) - TMP_JAMP(18) ! used 4 times - TMP_JAMP(58) = AMP(89) - AMP(146) ! used 4 times - TMP_JAMP(57) = TMP_JAMP(20) + TMP_JAMP(16) ! used 4 times - TMP_JAMP(56) = AMP(117) + AMP(142) ! used 4 times - TMP_JAMP(55) = AMP(8) - AMP(144) ! used 4 times - TMP_JAMP(54) = TMP_JAMP(19) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(117) ! used 4 times - TMP_JAMP(53) = TMP_JAMP(20) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(8) ! used 4 times - TMP_JAMP(52) = TMP_JAMP(26) - TMP_JAMP(21) ! used 4 times - TMP_JAMP(51) = TMP_JAMP(30) - TMP_JAMP(20) ! used 4 times - TMP_JAMP(50) = AMP(87) - AMP(143) ! used 4 times - TMP_JAMP(49) = TMP_JAMP(16) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(87) ! used 4 times - TMP_JAMP(48) = TMP_JAMP(23) - TMP_JAMP(17) ! used 4 times - TMP_JAMP(47) = TMP_JAMP(18) + ((0.000000000000000D+00, + TMP_JAMP(56) = TMP_JAMP(17) - TMP_JAMP(16) ! used 4 times + TMP_JAMP(55) = TMP_JAMP(17) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(80) ! used 4 times - TMP_JAMP(46) = TMP_JAMP(19) - TMP_JAMP(16) ! used 4 times - TMP_JAMP(45) = TMP_JAMP(27) + TMP_JAMP(18) ! used 4 times - TMP_JAMP(44) = TMP_JAMP(28) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(110) ! used 4 times - TMP_JAMP(43) = TMP_JAMP(29) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(16) ! used 4 times - TMP_JAMP(42) = TMP_JAMP(22) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(61) ! used 4 times - TMP_JAMP(41) = TMP_JAMP(24) - TMP_JAMP(22) ! used 4 times - TMP_JAMP(40) = TMP_JAMP(25) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(71) ! used 4 times - TMP_JAMP(39) = AMP(96) + AMP(148) ! used 4 times - TMP_JAMP(38) = TMP_JAMP(23) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(96) ! used 4 times - TMP_JAMP(37) = TMP_JAMP(24) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(56) ! used 4 times - TMP_JAMP(36) = TMP_JAMP(26) + TMP_JAMP(23) ! used 4 times - TMP_JAMP(35) = TMP_JAMP(17) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(74) ! used 4 times - TMP_JAMP(34) = TMP_JAMP(30) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(17) ! used 4 times - TMP_JAMP(33) = TMP_JAMP(26) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(33) ! used 4 times - TMP_JAMP(32) = TMP_JAMP(27) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(22) ! used 4 times - TMP_JAMP(31) = TMP_JAMP(21) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(25) ! used 4 times - TMP_JAMP(98) = TMP_JAMP(43) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(138) ! used 4 times - TMP_JAMP(97) = TMP_JAMP(44) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(136) ! used 4 times - TMP_JAMP(96) = TMP_JAMP(40) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(137) ! used 4 times - TMP_JAMP(95) = TMP_JAMP(37) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(150) ! used 4 times - TMP_JAMP(94) = TMP_JAMP(35) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(149) ! used 4 times - TMP_JAMP(93) = TMP_JAMP(32) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(36) ! used 4 times - TMP_JAMP(92) = TMP_JAMP(33) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(34) ! used 4 times - TMP_JAMP(91) = TMP_JAMP(31) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(35) ! used 4 times - TMP_JAMP(151) = AMP(18) + ((0.000000000000000D+00, + TMP_JAMP(54) = AMP(108) + AMP(133) ! used 4 times + TMP_JAMP(53) = AMP(51) + AMP(52) ! used 4 times + TMP_JAMP(52) = AMP(40) - AMP(54) ! used 4 times + TMP_JAMP(51) = AMP(11) - AMP(135) ! used 4 times + TMP_JAMP(50) = AMP(102) + AMP(151) ! used 4 times + TMP_JAMP(49) = AMP(69) - AMP(134) ! used 4 times + TMP_JAMP(48) = AMP(59) - AMP(153) ! used 4 times + TMP_JAMP(47) = AMP(43) - AMP(53) ! used 4 times + TMP_JAMP(46) = AMP(119) + AMP(145) ! used 4 times + TMP_JAMP(45) = AMP(14) - AMP(147) ! used 4 times + TMP_JAMP(44) = AMP(77) - AMP(152) ! used 4 times + TMP_JAMP(43) = AMP(89) - AMP(146) ! used 4 times + TMP_JAMP(42) = AMP(117) + AMP(142) ! used 4 times + TMP_JAMP(41) = AMP(8) - AMP(144) ! used 4 times + TMP_JAMP(40) = AMP(87) - AMP(143) ! used 4 times + TMP_JAMP(39) = AMP(110) + AMP(136) ! used 4 times + TMP_JAMP(38) = AMP(16) - AMP(138) ! used 4 times + TMP_JAMP(37) = AMP(71) - AMP(137) ! used 4 times + TMP_JAMP(36) = AMP(96) + AMP(148) ! used 4 times + TMP_JAMP(35) = AMP(56) - AMP(150) ! used 4 times + TMP_JAMP(34) = AMP(74) - AMP(149) ! used 4 times + TMP_JAMP(33) = AMP(33) + AMP(34) ! used 4 times + TMP_JAMP(32) = AMP(22) - AMP(36) ! used 4 times + TMP_JAMP(31) = AMP(25) - AMP(35) ! used 4 times + TMP_JAMP(142) = TMP_JAMP(80) + TMP_JAMP(77) ! used 2 times + TMP_JAMP(141) = TMP_JAMP(80) + TMP_JAMP(68) ! used 2 times + TMP_JAMP(140) = TMP_JAMP(79) - TMP_JAMP(61) ! used 2 times + TMP_JAMP(139) = TMP_JAMP(79) + TMP_JAMP(69) ! used 2 times + TMP_JAMP(138) = TMP_JAMP(78) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(47) ! used 2 times + TMP_JAMP(137) = TMP_JAMP(77) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(39) ! used 2 times + TMP_JAMP(136) = TMP_JAMP(76) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(54) ! used 2 times + TMP_JAMP(135) = TMP_JAMP(76) + TMP_JAMP(66) ! used 2 times + TMP_JAMP(134) = TMP_JAMP(76) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(39) ! used 2 times + TMP_JAMP(133) = TMP_JAMP(75) + TMP_JAMP(61) ! used 2 times + TMP_JAMP(132) = TMP_JAMP(73) + AMP(50) ! used 2 times + TMP_JAMP(131) = TMP_JAMP(70) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(36) ! used 2 times + TMP_JAMP(130) = TMP_JAMP(67) - TMP_JAMP(27) ! used 2 times + TMP_JAMP(129) = TMP_JAMP(61) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(46) ! used 2 times + TMP_JAMP(128) = TMP_JAMP(61) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(41) ! used 2 times + TMP_JAMP(127) = TMP_JAMP(58) - TMP_JAMP(25) ! used 2 times + TMP_JAMP(126) = TMP_JAMP(58) + TMP_JAMP(24) ! used 2 times + TMP_JAMP(125) = TMP_JAMP(58) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(43) ! used 2 times + TMP_JAMP(124) = TMP_JAMP(55) + AMP(111) ! used 2 times + TMP_JAMP(123) = TMP_JAMP(54) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(109) ! used 2 times + TMP_JAMP(122) = TMP_JAMP(53) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(50) ! used 2 times - TMP_JAMP(150) = TMP_JAMP(87) + ((0.000000000000000D+00, + TMP_JAMP(121) = TMP_JAMP(53) - TMP_JAMP(47) ! used 2 times + TMP_JAMP(120) = TMP_JAMP(52) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(42) ! used 2 times + TMP_JAMP(119) = TMP_JAMP(52) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(41) ! used 2 times + TMP_JAMP(118) = TMP_JAMP(51) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(10) ! used 2 times - TMP_JAMP(149) = TMP_JAMP(90) + TMP_JAMP(88) ! used 2 times - TMP_JAMP(148) = TMP_JAMP(82) - AMP(18) ! used 2 times - TMP_JAMP(147) = TMP_JAMP(74) + ((-0.000000000000000D+00 + TMP_JAMP(117) = TMP_JAMP(51) + TMP_JAMP(49) ! used 2 times + TMP_JAMP(116) = TMP_JAMP(51) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(12) ! used 2 times + TMP_JAMP(115) = TMP_JAMP(50) - TMP_JAMP(44) ! used 2 times + TMP_JAMP(114) = TMP_JAMP(49) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(70) ! used 2 times + TMP_JAMP(113) = TMP_JAMP(48) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(60) ! used 2 times + TMP_JAMP(112) = TMP_JAMP(48) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(58) ! used 2 times + TMP_JAMP(111) = TMP_JAMP(47) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(44) ! used 2 times - TMP_JAMP(146) = TMP_JAMP(68) + TMP_JAMP(67) ! used 2 times - TMP_JAMP(145) = TMP_JAMP(77) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(134) ! used 2 times - TMP_JAMP(144) = AMP(79) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(109) ! used 2 times - TMP_JAMP(143) = TMP_JAMP(63) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(76) ! used 2 times - TMP_JAMP(142) = TMP_JAMP(90) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(59) ! used 2 times - TMP_JAMP(141) = TMP_JAMP(67) + TMP_JAMP(58) ! used 2 times - TMP_JAMP(140) = AMP(7) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(18) ! used 2 times - TMP_JAMP(139) = TMP_JAMP(54) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(142) ! used 2 times - TMP_JAMP(138) = TMP_JAMP(55) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(51) ! used 2 times - TMP_JAMP(137) = TMP_JAMP(89) - TMP_JAMP(74) ! used 2 times - TMP_JAMP(136) = TMP_JAMP(49) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(143) ! used 2 times - TMP_JAMP(135) = TMP_JAMP(82) - TMP_JAMP(63) ! used 2 times - TMP_JAMP(134) = AMP(41) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(80) ! used 2 times - TMP_JAMP(133) = TMP_JAMP(56) - TMP_JAMP(50) ! used 2 times - TMP_JAMP(132) = TMP_JAMP(88) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(45) ! used 2 times - TMP_JAMP(131) = TMP_JAMP(47) + AMP(111) ! used 2 times - TMP_JAMP(130) = TMP_JAMP(53) - AMP(9) ! used 2 times - TMP_JAMP(129) = TMP_JAMP(98) + TMP_JAMP(97) ! used 2 times - TMP_JAMP(128) = AMP(58) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(61) ! used 2 times - TMP_JAMP(127) = TMP_JAMP(80) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(41) ! used 2 times - TMP_JAMP(126) = TMP_JAMP(42) - AMP(72) ! used 2 times - TMP_JAMP(125) = TMP_JAMP(96) - TMP_JAMP(42) ! used 2 times - TMP_JAMP(124) = TMP_JAMP(98) + TMP_JAMP(96) ! used 2 times - TMP_JAMP(123) = TMP_JAMP(36) - AMP(39) ! used 2 times - TMP_JAMP(122) = TMP_JAMP(89) - TMP_JAMP(39) ! used 2 times - TMP_JAMP(121) = TMP_JAMP(95) - AMP(55) ! used 2 times - TMP_JAMP(120) = TMP_JAMP(58) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(46) ! used 2 times - TMP_JAMP(119) = TMP_JAMP(68) - TMP_JAMP(58) ! used 2 times - TMP_JAMP(118) = TMP_JAMP(94) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(58) ! used 2 times - TMP_JAMP(117) = TMP_JAMP(95) + TMP_JAMP(94) ! used 2 times - TMP_JAMP(116) = TMP_JAMP(94) - AMP(73) ! used 2 times - TMP_JAMP(115) = TMP_JAMP(95) + AMP(57) ! used 2 times - TMP_JAMP(114) = TMP_JAMP(96) - TMP_JAMP(95) ! used 2 times - TMP_JAMP(113) = TMP_JAMP(97) - TMP_JAMP(96) ! used 2 times - TMP_JAMP(112) = TMP_JAMP(38) + AMP(95) ! used 2 times - TMP_JAMP(111) = TMP_JAMP(67) + ((-0.000000000000000D+00 + TMP_JAMP(110) = TMP_JAMP(46) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(120) ! used 2 times + TMP_JAMP(109) = TMP_JAMP(46) - TMP_JAMP(43) ! used 2 times + TMP_JAMP(108) = TMP_JAMP(45) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(12) ! used 2 times + TMP_JAMP(107) = TMP_JAMP(45) + TMP_JAMP(43) ! used 2 times + TMP_JAMP(106) = TMP_JAMP(45) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(13) ! used 2 times - TMP_JAMP(110) = TMP_JAMP(67) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(34) ! used 2 times - TMP_JAMP(109) = TMP_JAMP(98) + AMP(15) ! used 2 times - TMP_JAMP(108) = TMP_JAMP(98) + TMP_JAMP(34) ! used 2 times - TMP_JAMP(107) = TMP_JAMP(61) - AMP(23) ! used 2 times - TMP_JAMP(106) = TMP_JAMP(93) + TMP_JAMP(92) ! used 2 times - TMP_JAMP(105) = TMP_JAMP(68) + ((-0.000000000000000D+00 + TMP_JAMP(105) = TMP_JAMP(44) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(76) ! used 2 times + TMP_JAMP(104) = TMP_JAMP(42) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(45) ! used 2 times + TMP_JAMP(103) = TMP_JAMP(42) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(118) ! used 2 times + TMP_JAMP(102) = TMP_JAMP(41) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(7) ! used 2 times + TMP_JAMP(101) = TMP_JAMP(40) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(78) ! used 2 times + TMP_JAMP(100) = TMP_JAMP(40) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(88) ! used 2 times + TMP_JAMP(99) = TMP_JAMP(39) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(111) ! used 2 times + TMP_JAMP(98) = TMP_JAMP(39) - TMP_JAMP(37) ! used 2 times + TMP_JAMP(97) = TMP_JAMP(38) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(9) ! used 2 times + TMP_JAMP(96) = TMP_JAMP(38) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(15) ! used 2 times + TMP_JAMP(95) = TMP_JAMP(37) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(72) ! used 2 times + TMP_JAMP(94) = TMP_JAMP(36) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(39) ! used 2 times + TMP_JAMP(93) = TMP_JAMP(35) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(55) ! used 2 times + TMP_JAMP(92) = TMP_JAMP(35) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(57) ! used 2 times + TMP_JAMP(91) = TMP_JAMP(34) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(75) ! used 2 times + TMP_JAMP(90) = TMP_JAMP(34) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(73) ! used 2 times + TMP_JAMP(89) = TMP_JAMP(33) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(21) ! used 2 times + TMP_JAMP(88) = TMP_JAMP(33) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(32) ! used 2 times + TMP_JAMP(87) = TMP_JAMP(32) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(23) ! used 2 times + TMP_JAMP(86) = TMP_JAMP(32) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(24) ! used 2 times + TMP_JAMP(85) = TMP_JAMP(31) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(27) ! used 2 times - TMP_JAMP(104) = TMP_JAMP(91) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(68) ! used 2 times - TMP_JAMP(103) = TMP_JAMP(93) + TMP_JAMP(91) ! used 2 times - TMP_JAMP(102) = TMP_JAMP(91) - AMP(26) ! used 2 times - TMP_JAMP(101) = TMP_JAMP(92) - TMP_JAMP(91) ! used 2 times - TMP_JAMP(100) = TMP_JAMP(97) + TMP_JAMP(93) ! used 2 times - TMP_JAMP(99) = TMP_JAMP(92) + TMP_JAMP(34) ! used 2 times - TMP_JAMP(163) = TMP_JAMP(149) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(42) ! used 2 times - TMP_JAMP(162) = TMP_JAMP(144) - TMP_JAMP(142) ! used 2 times - TMP_JAMP(161) = TMP_JAMP(140) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(138) ! used 2 times - TMP_JAMP(160) = TMP_JAMP(135) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(48) ! used 2 times - TMP_JAMP(159) = TMP_JAMP(133) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(46) ! used 2 times - TMP_JAMP(158) = TMP_JAMP(134) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(132) ! used 2 times - TMP_JAMP(157) = TMP_JAMP(130) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(144) ! used 2 times - TMP_JAMP(156) = TMP_JAMP(128) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(127) ! used 2 times - TMP_JAMP(155) = TMP_JAMP(123) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(122) ! used 2 times - TMP_JAMP(154) = TMP_JAMP(112) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(148) ! used 2 times - TMP_JAMP(153) = TMP_JAMP(100) + AMP(24) ! used 2 times - TMP_JAMP(152) = TMP_JAMP(99) + AMP(32) ! used 2 times + TMP_JAMP(84) = TMP_JAMP(31) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(26) ! used 2 times + TMP_JAMP(83) = TMP_JAMP(25) + AMP(95) ! used 2 times + TMP_JAMP(82) = AMP(18) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(101) ! used 2 times + TMP_JAMP(81) = AMP(79) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(90) ! used 2 times + TMP_JAMP(155) = TMP_JAMP(131) - TMP_JAMP(83) ! used 2 times + TMP_JAMP(154) = TMP_JAMP(119) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(55) ! used 2 times + TMP_JAMP(153) = TMP_JAMP(114) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(64) ! used 2 times + TMP_JAMP(152) = TMP_JAMP(111) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(64) ! used 2 times + TMP_JAMP(151) = TMP_JAMP(105) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(57) ! used 2 times + TMP_JAMP(150) = TMP_JAMP(103) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(62) ! used 2 times + TMP_JAMP(149) = TMP_JAMP(100) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(55) ! used 2 times + TMP_JAMP(148) = TMP_JAMP(95) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(62) ! used 2 times + TMP_JAMP(147) = TMP_JAMP(94) - TMP_JAMP(53) ! used 2 times + TMP_JAMP(146) = TMP_JAMP(89) - TMP_JAMP(50) ! used 2 times + TMP_JAMP(145) = TMP_JAMP(88) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(70) ! used 2 times + TMP_JAMP(144) = TMP_JAMP(84) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(62) ! used 2 times + TMP_JAMP(143) = TMP_JAMP(81) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(56) ! used 2 times JAMP(1,1) = (-1.000000000000000D+00)*AMP(30) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(109) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(152) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(153) - JAMP(2,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(27)+(-1.000000000000000D+00)*AMP(28)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(66)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(104)+TMP_JAMP(111) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(152) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(80) + $ +TMP_JAMP(86)+TMP_JAMP(96)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(137)+TMP_JAMP(145) + JAMP(2,1) = (-1.000000000000000D+00)*AMP(28) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(79) + $ +TMP_JAMP(85)+TMP_JAMP(106)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(129)+(-1.000000000000000D+00) + $ *TMP_JAMP(145) JAMP(3,1) = (-1.000000000000000D+00)*AMP(31) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(72) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(102) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(125) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(153) - JAMP(4,1) = (-1.000000000000000D+00)*AMP(19) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(21) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(26) - $ +AMP(151)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(79)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(101)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(156) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(78) + $ +(-1.000000000000000D+00)*TMP_JAMP(86)+TMP_JAMP(95) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(134) + $ +(-1.000000000000000D+00)*TMP_JAMP(144) + JAMP(4,1) = (-1.000000000000000D+00)*AMP(19)+TMP_JAMP(112) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(139) + $ +TMP_JAMP(144)+(-1.000000000000000D+00)*TMP_JAMP(146) JAMP(5,1) = (-1.000000000000000D+00)*AMP(29) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(90) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(103) - $ +(-1.000000000000000D+00)*TMP_JAMP(105)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(107)+TMP_JAMP(120) - JAMP(6,1) = (-1.000000000000000D+00)*AMP(20) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(21) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(76) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(106) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(107) - $ +(-1.000000000000000D+00)*TMP_JAMP(160) - JAMP(7,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(15)+((0.000000000000000D+00,1.000000000000000D+00))*AMP(57) - $ +(-1.000000000000000D+00)*AMP(93)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(108)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(114)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(154) - JAMP(8,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(13)+((0.000000000000000D+00,1.000000000000000D+00))*AMP(75) - $ +(-1.000000000000000D+00)*AMP(91)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(57)+(-1.000000000000000D+00) - $ *TMP_JAMP(110)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(118)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(154) - JAMP(9,1) = (-1.000000000000000D+00)*AMP(94) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(113) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(115) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(116) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(131) - JAMP(10,1) = (-1.000000000000000D+00)*AMP(38) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(116) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(155) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(158) - JAMP(11,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(55)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(75)+(-1.000000000000000D+00)*AMP(92)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(120)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(46)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(72)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(117)+(-1.000000000000000D+00) - $ *TMP_JAMP(119) - JAMP(12,1) = (-1.000000000000000D+00)*AMP(37)+( - $ -1.000000000000000D+00)*AMP(62)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(71)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(121)+TMP_JAMP(147) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(29) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(65) + $ +(-1.000000000000000D+00)*TMP_JAMP(85)+(-1.000000000000000D+00) + $ *TMP_JAMP(87)+(-1.000000000000000D+00)*TMP_JAMP(109) + $ +TMP_JAMP(143) + JAMP(6,1) = (-1.000000000000000D+00)*AMP(20)+TMP_JAMP(87) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(141) + $ +TMP_JAMP(146)+TMP_JAMP(151) + JAMP(7,1) = (-1.000000000000000D+00)*AMP(93)+( + $ -1.000000000000000D+00)*TMP_JAMP(37)+TMP_JAMP(92)+( + $ -1.000000000000000D+00)*TMP_JAMP(96)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(130)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(155) + JAMP(8,1) = (-1.000000000000000D+00)*AMP(91) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(19) + $ +TMP_JAMP(91)+(-1.000000000000000D+00)*TMP_JAMP(106) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(125) $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(155) - JAMP(13,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(118)+(-1.000000000000000D+00)*AMP(126) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(124) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(126) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(139) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(157) - JAMP(14,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(78)+(-1.000000000000000D+00)*AMP(98)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*AMP(118)+AMP(152) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(62) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(156) - $ +(-1.000000000000000D+00)*TMP_JAMP(159) - JAMP(15,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(88)+(-1.000000000000000D+00)*AMP(127)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(129)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(131)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(136)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(157) - JAMP(16,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(45)+(-1.000000000000000D+00)*AMP(47)+AMP(53) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(88) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(73) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(158) - $ +(-1.000000000000000D+00)*TMP_JAMP(159) - JAMP(17,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(78)+(-1.000000000000000D+00)*AMP(97)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(101)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(136)+(-1.000000000000000D+00) - $ *TMP_JAMP(160)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(161) - JAMP(18,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(45)+(-1.000000000000000D+00)*AMP(46)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(50)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(52)+(-1.000000000000000D+00) - $ *TMP_JAMP(137)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(139)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(161) - JAMP(19,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(12)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(90)+(-1.000000000000000D+00)*AMP(128)+(-1.000000000000000D - $ +00)*AMP(135)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(57)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(84)+(-1.000000000000000D+00)*TMP_JAMP(141)+( - $ -1.000000000000000D+00)*TMP_JAMP(162) - JAMP(20,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(60)+(-1.000000000000000D+00)*AMP(100)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(60)+(-1.000000000000000D - $ +00)*TMP_JAMP(80)+(-1.000000000000000D+00)*TMP_JAMP(143) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(145) - $ +TMP_JAMP(162) - JAMP(21,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(12)+(-1.000000000000000D+00)*AMP(62)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(70)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(120)+(-1.000000000000000D+00) - $ *AMP(129)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(64)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(65)+(-1.000000000000000D+00)*TMP_JAMP(87) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(145) - $ +TMP_JAMP(146) + JAMP(9,1) = (-1.000000000000000D+00)*AMP(94)+( + $ -1.000000000000000D+00)*TMP_JAMP(90)+(-1.000000000000000D+00) + $ *TMP_JAMP(92)+(-1.000000000000000D+00)*TMP_JAMP(98) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(124) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(135) + JAMP(10,1) = (-1.000000000000000D+00)*AMP(38)+TMP_JAMP(90) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(141) + $ +(-1.000000000000000D+00)*TMP_JAMP(147)+TMP_JAMP(154) + JAMP(11,1) = AMP(62)+(-1.000000000000000D+00)*AMP(92) + $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(120) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(63)+( + $ -1.000000000000000D+00)*TMP_JAMP(91)+(-1.000000000000000D+00) + $ *TMP_JAMP(93)+(-1.000000000000000D+00)*TMP_JAMP(109) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(126) + JAMP(12,1) = (-1.000000000000000D+00)*AMP(37)+TMP_JAMP(93) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(139) + $ +TMP_JAMP(147)+TMP_JAMP(152) + JAMP(13,1) = (-1.000000000000000D+00)*AMP(126) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(75) + $ +(-1.000000000000000D+00)*TMP_JAMP(97)+TMP_JAMP(103) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(128) + $ +(-1.000000000000000D+00)*TMP_JAMP(148) + JAMP(14,1) = (-1.000000000000000D+00)*AMP(98) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(20)+( + $ -1.000000000000000D+00)*TMP_JAMP(44)+TMP_JAMP(101)+( + $ -1.000000000000000D+00)*TMP_JAMP(112)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(126)+(-1.000000000000000D+00) + $ *TMP_JAMP(150) + JAMP(15,1) = (-1.000000000000000D+00)*AMP(127)+( + $ -1.000000000000000D+00)*TMP_JAMP(41)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(59)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(77)+TMP_JAMP(97)+TMP_JAMP(99) + $ +(-1.000000000000000D+00)*TMP_JAMP(149) + JAMP(16,1) = (-1.000000000000000D+00)*AMP(47) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(60)+( + $ -1.000000000000000D+00)*TMP_JAMP(104)+(-1.000000000000000D+00) + $ *TMP_JAMP(119)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(138)+TMP_JAMP(149) + JAMP(17,1) = (-1.000000000000000D+00)*AMP(97) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(71) + $ +TMP_JAMP(82)+(-1.000000000000000D+00)*TMP_JAMP(101)+( + $ -1.000000000000000D+00)*TMP_JAMP(102)+(-1.000000000000000D+00) + $ *TMP_JAMP(115)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(127) + JAMP(18,1) = (-1.000000000000000D+00)*AMP(46)+TMP_JAMP(102) + $ +TMP_JAMP(104)+(-1.000000000000000D+00)*TMP_JAMP(121) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(132) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(140) + JAMP(19,1) = (-1.000000000000000D+00)*AMP(128) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(28) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(74) + $ +(-1.000000000000000D+00)*TMP_JAMP(107)+TMP_JAMP(116) + $ +TMP_JAMP(123)+(-1.000000000000000D+00)*TMP_JAMP(143) + JAMP(20,1) = (-1.000000000000000D+00)*AMP(100)+TMP_JAMP(49)+( + $ -1.000000000000000D+00)*TMP_JAMP(113)+(-1.000000000000000D+00) + $ *TMP_JAMP(123)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(135)+(-1.000000000000000D+00)*TMP_JAMP(151) + JAMP(21,1) = (-1.000000000000000D+00)*AMP(129)+( + $ -1.000000000000000D+00)*TMP_JAMP(51)+TMP_JAMP(108)+TMP_JAMP(110) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(133) + $ +(-1.000000000000000D+00)*TMP_JAMP(153) JAMP(22,1) = (-1.000000000000000D+00)*AMP(49) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(70) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(69) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(70) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(72) - $ +TMP_JAMP(81)+(-1.000000000000000D+00)*TMP_JAMP(147)+( - $ -1.000000000000000D+00)*TMP_JAMP(163) - JAMP(23,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(60)+(-1.000000000000000D+00)*AMP(99)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*AMP(101)+(-1.000000000000000D+00) - $ *AMP(153)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(75)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(76)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(78)+(-1.000000000000000D+00)*TMP_JAMP(81) - $ +TMP_JAMP(148)+(-1.000000000000000D+00)*TMP_JAMP(150) - JAMP(24,1) = (-1.000000000000000D+00)*AMP(48)+AMP(52) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(83) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(85) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(86) - $ +TMP_JAMP(150)+TMP_JAMP(151)+TMP_JAMP(163) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(78) + $ +TMP_JAMP(114)+(-1.000000000000000D+00)*TMP_JAMP(120) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(136) + $ +(-1.000000000000000D+00)*TMP_JAMP(152) + JAMP(23,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *AMP(10)+(-1.000000000000000D+00)*AMP(99)+TMP_JAMP(50) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(72)+( + $ -1.000000000000000D+00)*TMP_JAMP(82)+TMP_JAMP(113)+( + $ -1.000000000000000D+00)*TMP_JAMP(117)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(130) + JAMP(24,1) = (-1.000000000000000D+00)*AMP(48)+TMP_JAMP(54) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(73) + $ +TMP_JAMP(118)+TMP_JAMP(120)+TMP_JAMP(122)+((0.000000000000000D + $ +00,-1.000000000000000D+00))*TMP_JAMP(142) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/dummy_fct.f b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/dummy_fct.f index 076cf29d67..4f7a204b8f 100644 --- a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/dummy_fct.f +++ b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/dummy_fct.f @@ -32,7 +32,7 @@ logical FUNCTION dummy_cuts(P) LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL) logical do_cuts(nexternal) COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY, - . IS_A_ONIUM, do_cuts + & IS_A_ONIUM, do_cuts dummy_cuts=.true. @@ -118,15 +118,16 @@ double precision function user_dynamical_scale(P) C ************************************************************ -C default for the library implementing a dummt bias function +C default for the library implementing a dummy bias function C ************************************************************ subroutine bias_wgt_custom(p, original_weight, bias_weight) - implicit none + implicit none C C Parameters C include 'nexternal.inc' -C + +C C Arguments C double precision p(0:3, nexternal) @@ -161,3 +162,4 @@ subroutine bias_wgt_custom(p, original_weight, bias_weight) return end subroutine bias_wgt_custom + diff --git a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/makefile b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/makefile index 74db44d848..093bc84271 100644 --- a/epochX/cudacpp/gg_ttgg.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_ttgg.mad/SubProcesses/makefile @@ -9,6 +9,33 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra +# Sets correct target based on MAKECMDGOALS +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) + else + TARGET := $(MAKECMDGOALS) + endif +endif + +# Sets correct cppavx target as dependency when compiling Fortran +ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) + ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) + endif +endif + +# Default goal +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -48,10 +75,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -89,7 +116,7 @@ SYMMETRY = symmetry.o idenparts.o # Binaries -LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 +#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) @@ -115,10 +142,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.cudacpplibs: - $(MAKE) -f $(CUDACPP_MAKEFILE) - touch $@ - # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary @@ -130,26 +153,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +# Only used for testing, should be removed in the future madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -215,49 +259,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else ifeq ($(UNAME_P),arm) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z endif -avxnone: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=none +ALL: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z + $(MAKE) USEBUILDDIR=1 cuda -avxsse4: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 +cppnone: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -avxavx2: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 +cppsse4: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -avx512y: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y +cppavx2: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -avx512z: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z +cpp512y: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -###endif +cpp512z: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z + +cuda: + $(MAKE) -f $(CUDACPP_MAKEFILE) cuda # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +BUILD_DIRS := $(wildcard build.*) +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + +clean: +ifeq ($(USEBUILDDIR),1) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only cleaning build dir.) + $(RM) -r $(BUILD_DIRS) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + $(info USEBUILDDIR=0 only cleaning build with no dir.) + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* + $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir + $(RM) $(CUDACPP_BUILDDIR)/.*libs +endif + +cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone + +cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 + +cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 + +clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y + +clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z + +cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda + $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs - rm -f .libs + $(RM) $(CUDACPP_BUILDDIR)/.*libs + $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall - rm -rf $(LIBDIR)libbias.$(libext) - rm -f ../../Source/*.mod ../../Source/*/*.mod + $(RM) -r $(LIBDIR)libbias.$(libext) + $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/generate_events b/epochX/cudacpp/gg_ttgg.mad/bin/generate_events index 107313b25d..5577cc66a0 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/generate_events +++ b/epochX/cudacpp/gg_ttgg.mad/bin/generate_events @@ -46,7 +46,7 @@ if __debug__ and (not os.path.exists(pjoin(root_path,'../..', 'bin','create_rele sys.path.append(pjoin(root_path,'bin','internal')) import madevent_interface as ME - +import misc as misc import logging import logging.config @@ -160,17 +160,31 @@ if '__main__' == __name__: # Check that python version is valid set_configuration() - argument = sys.argv + argument = sys.argv + + # check for plugin customization of the launch command + launch_interface = ME.MadEventCmdShell + if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + + try: if '-h' in argument or '--help' in argument: - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.exec_cmd('help generate_events') sys.exit() elif len(argument) > 1 and argument[1] in ['0', '1', '2']: argument = treat_old_argument(argument) with ME.MadEventCmdShell.RunWebHandling(root_path, ): - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.run_cmd('generate_events %s' % ' '.join(argument[1:])) launch.run_cmd('quit') except ME.MadEventAlreadyRunning as message: diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/banner.py b/epochX/cudacpp/gg_ttgg.mad/bin/internal/banner.py index 7624b9f557..824815f47b 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/internal/banner.py +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/banner.py @@ -537,7 +537,7 @@ def charge_card(self, tag): self.param_card = param_card_reader.ParamCard(param_card) return self.param_card elif tag == 'mgruncard': - self.run_card = RunCard(self[tag]) + self.run_card = RunCard(self[tag], unknown_warning=False) return self.run_card elif tag == 'mg5proccard': proc_card = self[tag].split('\n') @@ -1002,13 +1002,14 @@ def __init__(self, finput=None, **opt): self.allowed_value = {} self.default_setup() + self.plugin_input(finput) # if input is define read that input if isinstance(finput, (file, str, StringIO.StringIO)): self.read(finput, **opt) - self.plugin_input(finput) + def plugin_input(self, finput=None): @@ -2624,6 +2625,7 @@ class RunCard(ConfigFile): default_include_file = 'run_card.inc' default_autodef_file = 'run.inc' donewarning = [] + include_as_parameter = [] def plugin_input(self, finput): @@ -2670,18 +2672,40 @@ def __new__(cls, finput=None, **opt): elif isinstance(finput, cls): target_class = finput.__class__ elif isinstance(finput, str): + path = finput if '\n' not in finput: finput = open(finput).read() if 'req_acc_FO' in finput: target_class = RunCardNLO else: target_class = RunCardLO + if MADEVENT and os.path.exists(pjoin(MEDIR, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(MEDIR, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + elif not MADEVENT and os.path.exists(path.replace('run_card.dat', '../bin/internal/launch_plugin.py')): + misc.sprint('try to use plugin class') + pydir = path.replace('run_card.dat', '../bin/internal/') + with misc.TMP_variable(sys, 'path', sys.path + [pydir]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + else: return None target_class.fill_post_set_from_blocks() - - return super(RunCard, cls).__new__(target_class, finput, **opt) + out = super(RunCard, cls).__new__(target_class, finput, **opt) + if not isinstance(out, RunCard): #should not happen but in presence of missmatch of library loaded. + out.__init__(finput, **opt) + return out else: return super(RunCard, cls).__new__(cls, finput, **opt) @@ -2709,7 +2733,7 @@ def __init__(self, *args, **opts): self.system_default = {} self.display_block = [] # set some block to be displayed - + self.fct_mod = {} # {param: (fct_pointer, *argument, **opts)} self.cut_class = {} self.warned=False @@ -2746,7 +2770,7 @@ def get_lepton_densities(cls): def add_param(self, name, value, fortran_name=None, include=True, hidden=False, legacy=False, cut=False, system=False, sys_default=None, - autodef=False, + autodef=False, fct_mod=None, **opts): """ add a parameter to the card. value is the default value and defines the type (int/float/bool/str) of the input. @@ -2760,6 +2784,7 @@ def add_param(self, name, value, fortran_name=None, include=True, If a path (Source/PDF/pdf.inc) the definition will be added within that file Default is False (does not add the definition) entry added in the run_card will automatically have this on True. + fct_mod: defines a function to run if the parameter is modify in the include file options of **opts: - allowed: list of valid options. '*' means anything else should be allowed. empty list means anything possible as well. @@ -2784,8 +2809,12 @@ def add_param(self, name, value, fortran_name=None, include=True, if autodef: self.definition_path[autodef].append(name) self.user_set.add(name) + # function to trigger if a value is modified in the include file + # main target is action to force correct recompilation (like for compilation flag/...) + if fct_mod: + self.fct_mod[name] = fct_mod - def read(self, finput, consistency=True): + def read(self, finput, consistency=True, unknown_warning=True): """Read the input file, this can be a path to a file, a file object, a str with the content of the file.""" @@ -2793,6 +2822,7 @@ def read(self, finput, consistency=True): if "\n" in finput: finput = finput.split('\n') elif os.path.isfile(finput): + self.path = finput finput = open(finput) else: raise Exception("No such file %s" % finput) @@ -2807,7 +2837,7 @@ def read(self, finput, consistency=True): name = name.lower().strip() if name not in self: #looks like an entry added by a user -> add it nicely - self.add_unknown_entry(name, value) + self.add_unknown_entry(name, value, unknown_warning) else: self.set( name, value, user=True) # parameter not set in the run_card can be set to compatiblity value @@ -2819,7 +2849,7 @@ def read(self, finput, consistency=True): logger.warning(str(error)) else: raise - def add_unknown_entry(self, name, value): + def add_unknown_entry(self, name, value, unknow_warning): """function to add an entry to the run_card when the associated parameter does not exists. This is based on the guess_entry_fromname for the various syntax providing input. This then call add_param accordingly. @@ -2858,7 +2888,7 @@ def add_unknown_entry(self, name, value): raise Exception("dictionary need to have at least one entry") default['dict']['__type__'] = default[self.guess_type_from_value(default_value[0])] - if name not in RunCard.donewarning: + if name not in RunCard.donewarning and unknow_warning: logger.warning("Found unexpected entry in run_card: \"%s\" with value \"%s\".\n"+\ " The type was assigned to %s. \n"+\ " The definition of that variable will %sbe automatically added to fortran file %s\n"+\ @@ -2896,7 +2926,16 @@ def valid_line(self, line, tmp): return False else: return True - + + + def reset_simd(self, old_value, new_value, name, *args, **opts): + raise Exception('pass in reset simd') + + def make_clean(self,old_value, new_value, name, dir): + raise Exception('pass make clean for ', dir) + + def make_Ptouch(self,old_value, new_value, name, reset): + raise Exception('pass Ptouch for ', reset) def write(self, output_file, template=None, python_template=False, write_hidden=False, template_options=None, **opt): @@ -3071,6 +3110,77 @@ def write(self, output_file, template=None, python_template=False, else: output_file.write(text) + def get_last_value_include(self, output_dir): + """For paraeter in self.fct_mod + parse the associate inc file to get the value of the previous run. + We return a dictionary {name: old_value} + if inc file does not exist we will return the current value (i.e. set has no change) + """ + + #remember that + # default_include_file is a class variable + # self.includepath is on the form include_path : [list of param ] + out = {} + + # setup inc_to_parse to be like self.includepath (include_path : [list of param ]) + # BUT only containing the parameter that need to be tracked for the fct_mod option + inc_to_parse = {} + for inc_file, params in self.includepath.items(): + if not inc_file: + continue + if any(p in params for p in self.fct_mod): + inc_to_parse[inc_file] = [name for name in self.includepath[inc_file] if name in self.fct_mod] + + # now loop over the files and ask the associate function + for inc_file, params in inc_to_parse.items(): + if inc_file is True: + inc_file = self.default_include_file + out.update(self.get_value_from_include(inc_file, params, output_dir)) + + return out + + def get_value_from_include(self, path, list_of_params, output_dir): + """for a given include file return the current value of the requested parameter + return a dictionary {name: value} + if path does not exists return the current value in self for all parameter""" + + #WARNING DOES NOT HANDLE LIST/DICT so far + + # handle case where file is missing + if not os.path.exists(pjoin(output_dir,path)): + misc.sprint("include file not existing", pjoin(output_dir,path)) + out = {name: self[name] for name in list_of_params} + + with open(pjoin(output_dir,path), 'r') as fsock: + text = fsock.read() + + for name in list_of_params: + misc.sprint(name, name in self.fortran_name) + misc.sprint(self.fortran_name[name] if name in self.fortran_name[name] else name) + to_track = [self.fortran_name[name] if name in self.fortran_name else name for name in list_of_params] + pattern = re.compile(r"\(?(%(names)s)\s?=\s?([^)]*)\)?" % {'names':'|'.join(to_track)}, re.I) + out = dict(pattern.findall(text)) + misc.sprint(out) + for name in list_of_params: + if name in self.fortran_name: + value = out[self.fortran_name[name]] + del out[self.fortran_name[name]] + out[name] = value + + for name, value in out.items(): + try: + out[name] = self.format_variable(value, type(self[name])) + except Exception: + continue + + if len(out) != len(list_of_params): + misc.sprint(list_of_params) + misc.sprint(to_track) + misc.sprint(self.fortran_name) + misc.sprint(text) + raise Exception + return out + def get_default(self, name, default=None, log_level=None): """return self[name] if exist otherwise default. log control if we @@ -3361,71 +3471,93 @@ def write_include_file(self, output_dir, output_file=None): #ensusre that system only parameter are correctly set self.update_system_parameter_for_include() + value_in_old_include = self.get_last_value_include(output_dir) + + if output_dir: self.write_autodef(output_dir, output_file=None) # check/fix status of customised functions self.edit_dummy_fct_from_file(self["custom_fcts"], os.path.dirname(output_dir)) for incname in self.includepath: - if incname is True: - pathinc = self.default_include_file - elif incname is False: - continue - else: - pathinc = incname + self.write_one_include_file(output_dir, incname, output_file) + + for name,value in value_in_old_include.items(): + if value != self[name]: + self.fct_mod[name][0](value, self[name], name, *self.fct_mod[name][1],**self.fct_mod[name][2]) - if output_file: - fsock = output_file + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + misc.sprint(incname) + if incname is True: + pathinc = self.default_include_file + elif incname is False: + return + else: + pathinc = incname + + if output_file: + fsock = output_file + else: + fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) + + + for key in self.includepath[incname]: + #define the fortran name + if key in self.fortran_name: + fortran_name = self.fortran_name[key] else: - fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) - for key in self.includepath[incname]: - #define the fortran name - if key in self.fortran_name: - fortran_name = self.fortran_name[key] + fortran_name = key + + if incname in self.include_as_parameter: + fsock.writelines('INTEGER %s\n' % fortran_name) + #get the value with warning if the user didn't set it + value = self.get_default(key) + if hasattr(self, 'mod_inc_%s' % key): + value = getattr(self, 'mod_inc_%s' % key)(value) + # Special treatment for strings containing a list of + # strings. Convert it to a list of strings + if isinstance(value, list): + # in case of a list, add the length of the list as 0th + # element in fortran. Only in case of integer or float + # list (not for bool nor string) + targettype = self.list_parameter[key] + if targettype is bool: + pass + elif targettype is int: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) + fsock.writelines(line) + elif targettype is float: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) + fsock.writelines(line) + # output the rest of the list in fortran + for i,v in enumerate(value): + line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) + fsock.writelines(line) + elif isinstance(value, dict): + for fortran_name, onevalue in value.items(): + line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) + fsock.writelines(line) + elif isinstance(incname,str) and 'compile' in incname: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, value) else: - fortran_name = key - - #get the value with warning if the user didn't set it - value = self.get_default(key) - if hasattr(self, 'mod_inc_%s' % key): - value = getattr(self, 'mod_inc_%s' % key)(value) - # Special treatment for strings containing a list of - # strings. Convert it to a list of strings - if isinstance(value, list): - # in case of a list, add the length of the list as 0th - # element in fortran. Only in case of integer or float - # list (not for bool nor string) - targettype = self.list_parameter[key] - if targettype is bool: - pass - elif targettype is int: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) - fsock.writelines(line) - elif targettype is float: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) - fsock.writelines(line) - # output the rest of the list in fortran - for i,v in enumerate(value): - line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) - fsock.writelines(line) - elif isinstance(value, dict): - for fortran_name, onevalue in value.items(): - line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) - fsock.writelines(line) - elif isinstance(incname,str) and 'compile' in incname: line = '%s = %s \n' % (fortran_name, value) - fsock.write(line) + fsock.write(line) + else: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, self.f77_formatting(value)) else: line = '%s = %s \n' % (fortran_name, self.f77_formatting(value)) - fsock.writelines(line) - if not output_file: - fsock.close() - path = pjoin(output_dir,pathinc) - if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): - files.mv(path+'.tmp', path) - else: - os.remove(path+'.tmp') - + fsock.writelines(line) + if not output_file: + fsock.close() + path = pjoin(output_dir,pathinc) + if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): + files.mv(path+'.tmp', path) + else: + os.remove(path+'.tmp') def write_autodef(self, output_dir, output_file=None): """ Add the definition of variable to run.inc if the variable is set with autodef. @@ -3764,13 +3896,14 @@ def remove_all_cut(self): %(tmin_for_channel)s = tmin_for_channel ! limit the non-singular reach of --some-- channel of integration related to T-channel diagram (value between -1 and 0), -1 is no impact %(survey_splitting)s = survey_splitting ! for loop-induced control how many core are used at survey for the computation of a single iteration. %(survey_nchannel_per_job)s = survey_nchannel_per_job ! control how many Channel are integrated inside a single job on cluster/multicore - %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) + %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) #********************************************************************* -# Compilation flag. No automatic re-compilation (need manual "make clean" in Source) +# Compilation flag. #********************************************************************* %(global_flag)s = global_flag ! fortran optimization flag use for the all code. %(aloha_flag)s = aloha_flag ! fortran optimization flag for aloha function. Suggestions: '-ffast-math' %(matrix_flag)s = matrix_flag ! fortran optimization flag for matrix.f function. Suggestions: '-O3' + %(vector_size)s = vector_size ! size designed for SIMD/OpenMP/GPU (number of events in lockstep) """ template_off = '# To see advanced option for Phase-Space optimization: type "update psoptim"' @@ -3926,9 +4059,12 @@ class RunCardLO(RunCard): "get_dummy_x1_x2": pjoin("SubProcesses","dummy_fct.f"), "dummy_boostframe": pjoin("SubProcesses","dummy_fct.f"), "user_dynamical_scale": pjoin("SubProcesses","dummy_fct.f"), + "bias_wgt_custom": pjoin("SubProcesses","dummy_fct.f"), "user_": pjoin("SubProcesses","dummy_fct.f") # all function starting by user will be added to that file } + include_as_parameter = ['vector.inc'] + if MG5DIR: default_run_card = pjoin(MG5DIR, "internal", "default_run_card_lo.dat") @@ -4162,10 +4298,15 @@ def default_setup(self): self.add_param('hel_splitamp', True, hidden=True, include=False, comment='decide if amplitude aloha call can be splitted in two or not when doing helicity per helicity optimization.') self.add_param('hel_zeroamp', True, hidden=True, include=False, comment='decide if zero amplitude can be removed from the computation when doing helicity per helicity optimization.') self.add_param('SDE_strategy', 1, allowed=[1,2], fortran_name="sde_strat", comment="decide how Multi-channel should behaves \"1\" means full single diagram enhanced (hep-ph/0208156), \"2\" use the product of the denominator") - self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check') - self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math') - self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3') - + self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check', + fct_mod=(self.make_clean, ('Source'),{})) + self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math', + fct_mod=(self.make_clean, ('Source/DHELAS'),{})) + self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3', + fct_mod=(self.make_Ptouch, ('matrix'),{})) + self.add_param('vector_size', 1, include='vector.inc', hidden=True, comment='lockstep size for parralelism run', + fortran_name='VECSIZE_MEMMAX', fct_mod=(self.reset_simd,(),{})) + # parameter allowing to define simple cut via the pdg # Special syntax are related to those. (can not be edit directly) self.add_param('pt_min_pdg',{'__type__':0.}, include=False, cut=True) @@ -4187,8 +4328,7 @@ def default_setup(self): self.add_param('mxxmin4pdg',[-1.], system=True) self.add_param('mxxpart_antipart', [False], system=True) - # CUDACPP parameters - self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + def check_validity(self): """ """ diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/check_param_card.py b/epochX/cudacpp/gg_ttgg.mad/bin/internal/check_param_card.py index fe874a06a4..71089d7480 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/internal/check_param_card.py +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/check_param_card.py @@ -85,7 +85,7 @@ def load_str(self, text): self.value= ' '.join(data[len(self.lhacode):]) # check that lhacode are the first entry otherwise return invalid param. if ' '.join([str(i) for i in self.lhacode]) != ' '.join(data[:len(self.lhacode)]): - raise InvalidParam + raise InvalidParam("line was %s" % str(data)) else: self.value = data[-1] diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/common_run_interface.py b/epochX/cudacpp/gg_ttgg.mad/bin/internal/common_run_interface.py index 5d0187e3fa..14c7f310dc 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/internal/common_run_interface.py +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/common_run_interface.py @@ -749,13 +749,15 @@ def writeRunWeb(me_dir): class RunWebHandling(object): - def __init__(self, me_dir, crashifpresent=True, warnifpresent=True): + def __init__(self, me_dir, crashifpresent=True, warnifpresent=True, force_run=False): """raise error if RunWeb already exists me_dir is the directory where the write RunWeb""" self.remove_run_web = True self.me_dir = me_dir - + if force_run: + self.remove_run_web = False + return if crashifpresent or warnifpresent: if os.path.exists(pjoin(me_dir, 'RunWeb')): pid = open(pjoin(me_dir, 'RunWeb')).read() @@ -6574,7 +6576,7 @@ def reask(self, *args, **opt): fail_due_to_format = 0 #parameter to avoid infinite loop def postcmd(self, stop, line): - if line not in [None, '0', 'done', '']: + if line not in [None, '0', 'done', '',0]: ending_question = cmd.OneLinePathCompletion.postcmd(self,stop,line) else: ending_question = True @@ -7533,7 +7535,8 @@ def open_file(self, answer): else: raise if time.time() - start < .5: - self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y') + self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y', + timeout=False) self.reload_card(path) def reload_card(self, path): diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/extended_cmd.py b/epochX/cudacpp/gg_ttgg.mad/bin/internal/extended_cmd.py index a6a8609dce..2f37070580 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/internal/extended_cmd.py +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/extended_cmd.py @@ -1108,9 +1108,12 @@ def ask(self, question, default, choices=[], path_msg=None, if alias: choices += list(alias.keys()) + + question_instance = obj(question, allow_arg=choices, default=default, mother_interface=self, **opt) - + if fct_timeout is None: + fct_timeout = lambda x: question_instance.postcmd(x, default) if x and default else False if first_cmd: if isinstance(first_cmd, str): question_instance.onecmd(first_cmd) @@ -2271,6 +2274,9 @@ def postcmd(self, stop, line): if n: self.default(line) return self.postcmd(stop, line) + elif self.value is None and line: + self.default(line) + return self.postcmd(stop, line) if not self.casesensitive: for ans in self.allow_arg: if ans.lower() == self.value.lower(): diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/gen_ximprove.py b/epochX/cudacpp/gg_ttgg.mad/bin/internal/gen_ximprove.py index 3b8ec31215..a88d60b282 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/internal/gen_ximprove.py +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/gen_ximprove.py @@ -154,10 +154,15 @@ def get_helicity(self, to_submit=True, clean=True): p = misc.Popen(['./gensym'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=Pdir) #sym_input = "%(points)d %(iterations)d %(accuracy)f \n" % self.opts + (stdout, _) = p.communicate(''.encode()) stdout = stdout.decode('ascii',errors='ignore') - nb_channel = max([math.floor(float(d)) for d in stdout.split()]) - + try: + nb_channel = max([math.floor(float(d)) for d in stdout.split()]) + except Exception as error: + misc.sprint(stdout, 'no channel or error for %s' % Pdir) + continue + self.cmd.compile(['madevent_forhel'], cwd=Pdir) if not os.path.exists(pjoin(Pdir, 'madevent_forhel')): raise Exception('Error make madevent_forhel not successful') diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/launch_plugin.py b/epochX/cudacpp/gg_ttgg.mad/bin/internal/launch_plugin.py new file mode 100644 index 0000000000..23271b846e --- /dev/null +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/launch_plugin.py @@ -0,0 +1,100 @@ + +import logging +import os +import subprocess +pjoin = os.path.join +logger = logging.getLogger('cmdprint') # for stdout + +try: + import madgraph +except ImportError: + import internal.madevent_interface as madevent_interface + import internal.misc as misc + import internal.extended_cmd as extended_cmd + import internal.banner as banner_mod +else: + import madgraph.interface.madevent_interface as madevent_interface + import madgraph.various.misc as misc + import madgraph.interface.extended_cmd as extended_cmd + import madgraph.various.banner as banner_mod + +class CPPMEInterface(madevent_interface.MadEventCmdShell): + + def compile(self, *args, **opts): + """ """ + + import multiprocessing + if not self.options['nb_core'] or self.options['nb_core'] == 'None': + self.options['nb_core'] = multiprocessing.cpu_count() + + if args and args[0][0] == 'madevent' and hasattr(self, 'run_card'): + import pathlib + import os + pjoin = os.path.join + + + + + cudacpp_backend = self.run_card['cudacpp_backend'].upper() # the default value is defined in banner.py + logger.info("Building madevent in madevent_interface.py with '%s' matrix elements"%cudacpp_backend) + if cudacpp_backend == 'FORTRAN': + args[0][0] = 'madevent_fortran_link' + elif cudacpp_backend == 'CPP': + args[0][0] = 'madevent_cpp_link' + elif cudacpp_backend == 'CUDA': + args[0][0] = 'madevent_cuda_link' + else: + raise Exception("Invalid cudacpp_backend='%s': only 'FORTRAN', 'CPP', 'CUDA' are supported") + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + else: + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + +class CPPRunCard(banner_mod.RunCardLO): + + def reset_simd(self, old_value, new_value, name): + if not hasattr(self, 'path'): + raise Exception + + if name == "vector_size" and new_value <= int(old_value): + # code can handle the new size -> do not recompile + return + + Sourcedir = pjoin(os.path.dirname(os.path.dirname(self.path)), 'Source') + subprocess.call(['make', 'cleanavx'], cwd=Sourcedir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + def plugin_input(self, finput): + return + + def default_setup(self): + super().default_setup() + self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + + + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + if incname == "vector.inc" and 'vector_size' not in self.user_set: + return + super().write_one_include_file(output_dir, incname, output_file) + + + def check_validity(self): + """ensure that PLUGIN information are consistent""" + + super().check_validity() + + if self['SDE_strategy'] != 1: + logger.warning('SDE_strategy different of 1 is not supported with SMD/GPU mode') + self['sde_strategy'] = 1 + + if self['hel_recycling']: + self['hel_recycling'] = False + +class GPURunCard(CPPRunCard): + + def default_setup(self): + super(CPPRunCard, self).default_setup() + self.add_param('cudacpp_backend', 'CUDA', include=False, hidden=False) + +MEINTERFACE = CPPMEInterface +RunCard = CPPRunCard diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/madevent_interface.py b/epochX/cudacpp/gg_ttgg.mad/bin/internal/madevent_interface.py index 920e07a926..d722702891 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/internal/madevent_interface.py +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/madevent_interface.py @@ -3796,9 +3796,11 @@ def do_combine_events(self, line): if self.run_card['bias_module'].lower() not in ['dummy', 'none'] and nb_event: self.correct_bias() - + elif self.run_card['custom_fcts']: + self.correct_bias() + logger.info("combine events done in %s", time.time()-start) - + self.to_store.append('event') diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot new file mode 100755 index 0000000000..7deee7ac88 --- /dev/null +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_unweighted_events.lhe.gz ]];then + gunzip -c ${run}_unweighted_events.lhe.gz > unweighted_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e unweighted_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir $run + cd $run + echo "../unweighted_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl $run parton + mv plots.html ${run}_plots.html +fi + diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_delphes b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_delphes new file mode 100755 index 0000000000..975f410d0e --- /dev/null +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_delphes @@ -0,0 +1,46 @@ +#!/bin/bash +# +# This runs MadAnalysis on the delphes_events.lhco +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_delphes_events.lhco.gz ]];then + gunzip -c ${run}_delphes_events.lhco.gz > delphes_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e delphes_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_delphes + cd ${run}_delphes + echo "../delphes_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_delphes Delphes + mv plots.html ${run}_plots_delphes.html +fi diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pgs b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pgs new file mode 100755 index 0000000000..e7a36ef344 --- /dev/null +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pgs @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_pgs_events.lhco.gz ]];then + gunzip -c ${run}_pgs_events.lhco.gz > pgs_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e pgs_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pgs + cd ${run}_pgs + echo "../pgs_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pgs PGS + mv plots.html ${run}_plots_pgs.html +fi + diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pythia b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pythia new file mode 100755 index 0000000000..532bfb4b7b --- /dev/null +++ b/epochX/cudacpp/gg_ttgg.mad/bin/internal/run_plot_pythia @@ -0,0 +1,50 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin/internal + +if [[ $run != "" && -e ${run}_pythia_events.lhe.gz ]];then + gunzip -c ${run}_pythia_events.lhe.gz > pythia_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e pythia_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pythia + cd ${run}_pythia + echo "../pythia_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pythia Pythia + mv plots.html ${run}_plots_pythia.html + $dirbin/gen_crossxhtml-pl $run +else + echo "Not creating plots" +fi + diff --git a/epochX/cudacpp/gg_ttgg.mad/bin/madevent b/epochX/cudacpp/gg_ttgg.mad/bin/madevent index c944aa1faf..dff9711b73 100755 --- a/epochX/cudacpp/gg_ttgg.mad/bin/madevent +++ b/epochX/cudacpp/gg_ttgg.mad/bin/madevent @@ -32,6 +32,7 @@ except ImportError: import os +pjoin = os.path.join import optparse # Get the directory of the script real path (bin) @@ -160,13 +161,30 @@ except: pass import internal.madevent_interface as cmd_interface +# check for plugin customization of the launch command +launch_interface = cmd_interface.MadEventCmdShell +if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + +#Source use this executable for compilation always allow it +force_run = False +if (args and args[0] == 'treatcards'): + force_run=True + # Call the cmd interface main loop try: if '-h' in args or '--help' in args: - launch = ME.MadEventCmdShell(me_dir=os.path.dirname(root_path), force_run=True) + launch = launch_interface(me_dir=os.path.dirname(root_path), force_run=True) launch.exec_cmd('help generate_events') sys.exit(0) - with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), ): + with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), force_run=force_run): if (args and os.path.isfile(args[0])): # They are an input file input_file = args[0] @@ -178,7 +196,7 @@ try: cmd_line.run_cmd('import command ' + input_file) cmd_line.run_cmd('quit') else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) cmd_line.use_rawinput = False cmd_line.haspiping = False cmd_line.run_cmd('import command ' + input_file) @@ -188,7 +206,7 @@ try: if options.web: cmd_line = cmd_interface.MadEventCmd(force_run=True) else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) if not hasattr(cmd_line, 'do_%s' % args[0]): if parser_error: print( parser_error) diff --git a/epochX/cudacpp/gg_ttgg.mad/src/HelAmps_sm.h b/epochX/cudacpp/gg_ttgg.mad/src/HelAmps_sm.h index 9cea8bcbe7..9b946c21e1 100644 --- a/epochX/cudacpp/gg_ttgg.mad/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_ttgg.mad/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -908,6 +912,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -920,6 +925,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -934,6 +940,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -945,6 +952,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -959,6 +967,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -970,6 +979,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -984,6 +994,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -995,6 +1006,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -1008,6 +1020,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1042,6 +1055,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1080,6 +1094,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1103,6 +1118,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1134,6 +1150,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1165,6 +1182,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1197,6 +1215,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1225,6 +1244,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1260,6 +1280,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1288,6 +1309,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1323,6 +1345,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1351,6 +1374,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) diff --git a/epochX/cudacpp/gg_ttgg.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_ttgg.mad/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gg_ttgg.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_ttgg.mad/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_ttgg.sa/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_ttgg.sa/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_ttgg.sa/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_ttgg.sa/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_ttgg.sa/SubProcesses/P1_Sigma_sm_gg_ttxgg/CPPProcess.cc b/epochX/cudacpp/gg_ttgg.sa/SubProcesses/P1_Sigma_sm_gg_ttxgg/CPPProcess.cc index 25f123c774..1af74d48ae 100644 --- a/epochX/cudacpp/gg_ttgg.sa/SubProcesses/P1_Sigma_sm_gg_ttxgg/CPPProcess.cc +++ b/epochX/cudacpp/gg_ttgg.sa/SubProcesses/P1_Sigma_sm_gg_ttxgg/CPPProcess.cc @@ -250,11 +250,11 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][5], +1, w_fp[5], 5 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[7] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 1 - VVVV1_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -266,7 +266,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -278,7 +278,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -294,10 +294,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 123 *** // Wavefunction(s) for diagram number 2 - VVV1P0_1( w_fp[6], w_fp[4], COUPs[0], 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[6], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 2 - VVV1_0( w_fp[7], w_fp[5], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -313,10 +313,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 123 *** // Wavefunction(s) for diagram number 3 - VVV1P0_1( w_fp[6], w_fp[5], COUPs[0], 0., 0., w_fp[9] ); + VVV1P0_1( w_fp[6], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[7], w_fp[4], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -332,10 +332,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 123 *** // Wavefunction(s) for diagram number 4 - VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 4 - VVV1_0( w_fp[6], w_fp[7], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -351,11 +351,11 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 123 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[12], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -368,7 +368,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[11], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -380,10 +380,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 123 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[3], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[13], w_fp[11], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[11], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -393,10 +393,10 @@ namespace mg5amcCpu // *** DIAGRAM 8 OF 123 *** // Wavefunction(s) for diagram number 8 - FFV1_1( w_fp[2], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_1( w_fp[2], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[12], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -409,7 +409,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[3], w_fp[14], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -421,10 +421,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 123 *** // Wavefunction(s) for diagram number 10 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[15] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[15] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[15], w_fp[14], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[14], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -434,10 +434,10 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 123 *** // Wavefunction(s) for diagram number 11 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[15], w_fp[16], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[16], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -450,7 +450,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[15], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -465,7 +465,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[13], w_fp[16], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[16], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -478,7 +478,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -493,7 +493,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - FFV1_0( w_fp[3], w_fp[16], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[16], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -508,7 +508,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[12], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -520,12 +520,12 @@ namespace mg5amcCpu // *** DIAGRAM 17 OF 123 *** // Wavefunction(s) for diagram number 17 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_1( w_fp[12], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[12], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 17 - FFV1_0( w_fp[16], w_fp[8], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[8], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -534,10 +534,10 @@ namespace mg5amcCpu // *** DIAGRAM 18 OF 123 *** // Wavefunction(s) for diagram number 18 - FFV1_1( w_fp[12], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[12], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 18 - FFV1_0( w_fp[16], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -549,7 +549,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 19 - FFV1_0( w_fp[16], w_fp[12], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[12], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -559,11 +559,11 @@ namespace mg5amcCpu // *** DIAGRAM 20 OF 123 *** // Wavefunction(s) for diagram number 20 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[12], COUPs[1], 0., 0., w_fp[17] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[12], COUPs[1], 1.0, 0., 0., w_fp[17] ); // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[6], w_fp[5], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -578,7 +578,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 21 - FFV1_0( w_fp[3], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -591,7 +591,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - FFV1_0( w_fp[13], w_fp[12], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[12], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -601,10 +601,10 @@ namespace mg5amcCpu // *** DIAGRAM 23 OF 123 *** // Wavefunction(s) for diagram number 23 - VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 0., 0., w_fp[18] ); + VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[18] ); // Amplitude(s) for diagram number 23 - VVV1_0( w_fp[18], w_fp[4], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -619,7 +619,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 24 - FFV1_0( w_fp[3], w_fp[8], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -632,7 +632,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 25 - FFV1_0( w_fp[15], w_fp[12], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[12], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -642,10 +642,10 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 123 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[12], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[19] ); + FFV1_1( w_fp[12], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[19] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[15], w_fp[19], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[19], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -657,7 +657,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[15], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -669,7 +669,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 28 - FFV1_0( w_fp[13], w_fp[19], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[19], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -681,7 +681,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[13], w_fp[8], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[8], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -693,7 +693,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 30 - FFV1_0( w_fp[3], w_fp[19], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[19], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -706,7 +706,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 31 - VVV1_0( w_fp[1], w_fp[10], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -718,12 +718,12 @@ namespace mg5amcCpu // *** DIAGRAM 32 OF 123 *** // Wavefunction(s) for diagram number 32 - VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[17] ); - VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[19] ); - VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[8] ); + VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[17] ); + VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[19] ); + VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[3], w_fp[12], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -731,7 +731,7 @@ namespace mg5amcCpu jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[12], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -739,7 +739,7 @@ namespace mg5amcCpu jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[12], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -751,12 +751,12 @@ namespace mg5amcCpu // *** DIAGRAM 33 OF 123 *** // Wavefunction(s) for diagram number 33 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[12], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[12], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[20], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -765,10 +765,10 @@ namespace mg5amcCpu // *** DIAGRAM 34 OF 123 *** // Wavefunction(s) for diagram number 34 - FFV1_2( w_fp[12], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[12], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 34 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -780,7 +780,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - FFV1_0( w_fp[12], w_fp[9], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -790,10 +790,10 @@ namespace mg5amcCpu // *** DIAGRAM 36 OF 123 *** // Wavefunction(s) for diagram number 36 - FFV1P0_3( w_fp[12], w_fp[2], COUPs[1], 0., 0., w_fp[22] ); + FFV1P0_3( w_fp[12], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 36 - VVV1_0( w_fp[6], w_fp[5], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -808,7 +808,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 37 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -821,7 +821,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 38 - FFV1_0( w_fp[12], w_fp[14], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -834,7 +834,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 39 - VVV1_0( w_fp[18], w_fp[4], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -849,7 +849,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 40 - FFV1_0( w_fp[20], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -862,7 +862,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 41 - FFV1_0( w_fp[12], w_fp[11], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[11], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -872,10 +872,10 @@ namespace mg5amcCpu // *** DIAGRAM 42 OF 123 *** // Wavefunction(s) for diagram number 42 - FFV1_2( w_fp[12], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_2( w_fp[12], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 42 - FFV1_0( w_fp[23], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -887,7 +887,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 43 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -899,7 +899,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 44 - FFV1_0( w_fp[23], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -911,7 +911,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 45 - FFV1_0( w_fp[20], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -923,7 +923,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 46 - FFV1_0( w_fp[23], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -936,7 +936,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 47 - VVV1_0( w_fp[1], w_fp[10], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -951,7 +951,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 48 - FFV1_0( w_fp[12], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -959,7 +959,7 @@ namespace mg5amcCpu jamp_sv[11] -= amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[12], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -967,7 +967,7 @@ namespace mg5amcCpu jamp_sv[15] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; - FFV1_0( w_fp[12], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -979,11 +979,11 @@ namespace mg5amcCpu // *** DIAGRAM 49 OF 123 *** // Wavefunction(s) for diagram number 49 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[12] ); - FFV1_2( w_fp[3], w_fp[12], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[12] ); + FFV1_2( w_fp[3], w_fp[12], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 49 - FFV1_0( w_fp[22], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -993,10 +993,10 @@ namespace mg5amcCpu // *** DIAGRAM 50 OF 123 *** // Wavefunction(s) for diagram number 50 - VVV1P0_1( w_fp[12], w_fp[5], COUPs[0], 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[12], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 50 - FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1011,7 +1011,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 51 - FFV1_0( w_fp[13], w_fp[9], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[9], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1021,10 +1021,10 @@ namespace mg5amcCpu // *** DIAGRAM 52 OF 123 *** // Wavefunction(s) for diagram number 52 - FFV1_1( w_fp[2], w_fp[12], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_1( w_fp[2], w_fp[12], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 52 - FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1037,7 +1037,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 53 - FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1052,7 +1052,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 54 - FFV1_0( w_fp[16], w_fp[14], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[14], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1065,7 +1065,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 55 - FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1080,7 +1080,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 56 - FFV1_0( w_fp[22], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1095,7 +1095,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 57 - VVV1_0( w_fp[12], w_fp[18], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[18], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1114,7 +1114,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 58 - VVVV1_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1126,7 +1126,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1138,7 +1138,7 @@ namespace mg5amcCpu jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1154,10 +1154,10 @@ namespace mg5amcCpu // *** DIAGRAM 59 OF 123 *** // Wavefunction(s) for diagram number 59 - VVV1P0_1( w_fp[12], w_fp[1], COUPs[0], 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[12], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 59 - VVV1_0( w_fp[7], w_fp[5], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1176,7 +1176,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 60 - VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1195,7 +1195,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 61 - FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1210,7 +1210,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 62 - FFV1_0( w_fp[22], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1223,7 +1223,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 63 - FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1238,7 +1238,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 64 - FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1248,11 +1248,11 @@ namespace mg5amcCpu // *** DIAGRAM 65 OF 123 *** // Wavefunction(s) for diagram number 65 - VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 0., 0., w_fp[20] ); - FFV1_2( w_fp[3], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[20] ); + FFV1_2( w_fp[3], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 65 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1262,10 +1262,10 @@ namespace mg5amcCpu // *** DIAGRAM 66 OF 123 *** // Wavefunction(s) for diagram number 66 - VVV1P0_1( w_fp[20], w_fp[4], COUPs[0], 0., 0., w_fp[22] ); + VVV1P0_1( w_fp[20], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 66 - FFV1_0( w_fp[3], w_fp[9], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1280,7 +1280,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 67 - FFV1_0( w_fp[15], w_fp[9], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[9], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1290,10 +1290,10 @@ namespace mg5amcCpu // *** DIAGRAM 68 OF 123 *** // Wavefunction(s) for diagram number 68 - FFV1_1( w_fp[2], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 68 - FFV1_0( w_fp[16], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1306,7 +1306,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 69 - FFV1_0( w_fp[16], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1321,7 +1321,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 70 - FFV1_0( w_fp[16], w_fp[11], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[11], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1334,7 +1334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 71 - FFV1_0( w_fp[3], w_fp[23], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1349,7 +1349,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 72 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1364,7 +1364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 73 - VVV1_0( w_fp[20], w_fp[6], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[20], w_fp[6], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1383,7 +1383,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 74 - VVVV1_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1395,7 +1395,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1407,7 +1407,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1423,10 +1423,10 @@ namespace mg5amcCpu // *** DIAGRAM 75 OF 123 *** // Wavefunction(s) for diagram number 75 - VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 0., 0., w_fp[12] ); + VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[12] ); // Amplitude(s) for diagram number 75 - VVV1_0( w_fp[7], w_fp[4], w_fp[12], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[12], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1445,7 +1445,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 76 - VVV1_0( w_fp[1], w_fp[7], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1464,7 +1464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 77 - FFV1_0( w_fp[3], w_fp[11], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1479,7 +1479,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 78 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1492,7 +1492,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 79 - FFV1_0( w_fp[15], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1507,7 +1507,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 80 - FFV1_0( w_fp[15], w_fp[23], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[23], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1517,10 +1517,10 @@ namespace mg5amcCpu // *** DIAGRAM 81 OF 123 *** // Wavefunction(s) for diagram number 81 - FFV1_1( w_fp[9], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[9], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 81 - FFV1_0( w_fp[15], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1529,10 +1529,10 @@ namespace mg5amcCpu // *** DIAGRAM 82 OF 123 *** // Wavefunction(s) for diagram number 82 - FFV1_2( w_fp[15], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[15], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 82 - FFV1_0( w_fp[12], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1544,7 +1544,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 83 - FFV1_0( w_fp[13], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1553,10 +1553,10 @@ namespace mg5amcCpu // *** DIAGRAM 84 OF 123 *** // Wavefunction(s) for diagram number 84 - FFV1_2( w_fp[13], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[13], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 84 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1568,7 +1568,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 85 - FFV1_0( w_fp[3], w_fp[23], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1578,10 +1578,10 @@ namespace mg5amcCpu // *** DIAGRAM 86 OF 123 *** // Wavefunction(s) for diagram number 86 - VVV1P0_1( w_fp[0], w_fp[10], COUPs[0], 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[0], w_fp[10], COUPs[0], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 86 - FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1593,10 +1593,10 @@ namespace mg5amcCpu // *** DIAGRAM 87 OF 123 *** // Wavefunction(s) for diagram number 87 - FFV1_2( w_fp[16], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + FFV1_2( w_fp[16], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 87 - FFV1_0( w_fp[22], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1605,10 +1605,10 @@ namespace mg5amcCpu // *** DIAGRAM 88 OF 123 *** // Wavefunction(s) for diagram number 88 - FFV1_1( w_fp[11], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_1( w_fp[11], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 88 - FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1620,7 +1620,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 89 - FFV1_0( w_fp[22], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1629,10 +1629,10 @@ namespace mg5amcCpu // *** DIAGRAM 90 OF 123 *** // Wavefunction(s) for diagram number 90 - FFV1_1( w_fp[14], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[24] ); + FFV1_1( w_fp[14], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[24] ); // Amplitude(s) for diagram number 90 - FFV1_0( w_fp[16], w_fp[24], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[24], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1644,7 +1644,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 91 - FFV1_0( w_fp[22], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1657,7 +1657,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 92 - FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1672,7 +1672,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 93 - VVVV1_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1684,7 +1684,7 @@ namespace mg5amcCpu jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1696,7 +1696,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1712,10 +1712,10 @@ namespace mg5amcCpu // *** DIAGRAM 94 OF 123 *** // Wavefunction(s) for diagram number 94 - VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 0., 0., w_fp[22] ); + VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 94 - VVV1_0( w_fp[7], w_fp[5], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1731,10 +1731,10 @@ namespace mg5amcCpu // *** DIAGRAM 95 OF 123 *** // Wavefunction(s) for diagram number 95 - VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 0., 0., w_fp[25] ); + VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 1.0, 0., 0., w_fp[25] ); // Amplitude(s) for diagram number 95 - VVV1_0( w_fp[6], w_fp[5], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1753,7 +1753,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 96 - FFV1_0( w_fp[3], w_fp[14], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1768,7 +1768,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 97 - FFV1_0( w_fp[3], w_fp[24], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[24], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1781,7 +1781,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 98 - FFV1_0( w_fp[13], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1796,7 +1796,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 99 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1809,7 +1809,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 100 - VVVV1_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1821,7 +1821,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1833,7 +1833,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1849,10 +1849,10 @@ namespace mg5amcCpu // *** DIAGRAM 101 OF 123 *** // Wavefunction(s) for diagram number 101 - VVV1P0_1( w_fp[0], w_fp[18], COUPs[0], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[18], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 101 - VVV1_0( w_fp[7], w_fp[4], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1871,7 +1871,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 102 - VVV1_0( w_fp[18], w_fp[4], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1890,7 +1890,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 103 - FFV1_0( w_fp[3], w_fp[11], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1905,7 +1905,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 104 - FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1918,7 +1918,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 105 - FFV1_0( w_fp[15], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1933,7 +1933,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 106 - FFV1_0( w_fp[12], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1946,7 +1946,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 107 - VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1958,7 +1958,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1970,7 +1970,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1989,7 +1989,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 108 - VVV1_0( w_fp[1], w_fp[10], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2008,7 +2008,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 109 - VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2027,7 +2027,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 110 - FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2039,7 +2039,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 111 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2051,7 +2051,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 112 - FFV1_0( w_fp[15], w_fp[24], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[24], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2063,7 +2063,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 113 - FFV1_0( w_fp[12], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2072,12 +2072,12 @@ namespace mg5amcCpu // *** DIAGRAM 114 OF 123 *** // Wavefunction(s) for diagram number 114 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[12] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[24] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[12] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 114 - VVV1_0( w_fp[12], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2089,7 +2089,7 @@ namespace mg5amcCpu jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[24], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2101,7 +2101,7 @@ namespace mg5amcCpu jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[21], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2120,7 +2120,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 115 - FFV1_0( w_fp[3], w_fp[14], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2128,7 +2128,7 @@ namespace mg5amcCpu jamp_sv[19] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[14], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2136,7 +2136,7 @@ namespace mg5amcCpu jamp_sv[20] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2151,7 +2151,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 116 - FFV1_0( w_fp[13], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2159,7 +2159,7 @@ namespace mg5amcCpu jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; - FFV1_0( w_fp[13], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2167,7 +2167,7 @@ namespace mg5amcCpu jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[12] += amp_sv[0]; - FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2179,12 +2179,12 @@ namespace mg5amcCpu // *** DIAGRAM 117 OF 123 *** // Wavefunction(s) for diagram number 117 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[13] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[13] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 117 - VVV1_0( w_fp[21], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2196,7 +2196,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[13], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[13], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2208,7 +2208,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[24], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2227,7 +2227,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 118 - FFV1_0( w_fp[3], w_fp[11], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2235,7 +2235,7 @@ namespace mg5amcCpu jamp_sv[13] -= amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[11], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[13], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2243,7 +2243,7 @@ namespace mg5amcCpu jamp_sv[14] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[16] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[11], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2258,7 +2258,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 119 - FFV1_0( w_fp[15], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2266,7 +2266,7 @@ namespace mg5amcCpu jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; - FFV1_0( w_fp[15], w_fp[2], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[13], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2274,7 +2274,7 @@ namespace mg5amcCpu jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[18] += amp_sv[0]; - FFV1_0( w_fp[15], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2286,12 +2286,12 @@ namespace mg5amcCpu // *** DIAGRAM 120 OF 123 *** // Wavefunction(s) for diagram number 120 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[15] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[13] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[15] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[13] ); // Amplitude(s) for diagram number 120 - FFV1_0( w_fp[3], w_fp[9], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2299,7 +2299,7 @@ namespace mg5amcCpu jamp_sv[7] -= amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[15], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2307,7 +2307,7 @@ namespace mg5amcCpu jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[13], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2322,7 +2322,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 121 - FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2330,7 +2330,7 @@ namespace mg5amcCpu jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[16], w_fp[2], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[15], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2338,7 +2338,7 @@ namespace mg5amcCpu jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; - FFV1_0( w_fp[16], w_fp[2], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[13], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2353,7 +2353,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 122 - VVV1_0( w_fp[24], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2365,7 +2365,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[15], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[15], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2377,7 +2377,7 @@ namespace mg5amcCpu jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[13], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[13], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2396,7 +2396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 123 - VVV1_0( w_fp[0], w_fp[17], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[17], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2408,7 +2408,7 @@ namespace mg5amcCpu jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[0], w_fp[19], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[19], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2420,7 +2420,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3023,8 +3023,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: standalone_cudacpp static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_ttgg.sa/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_ttgg.sa/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gg_ttgg.sa/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_ttgg.sa/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gg_ttgg.sa/src/HelAmps_sm.h b/epochX/cudacpp/gg_ttgg.sa/src/HelAmps_sm.h index 9cea8bcbe7..9b946c21e1 100644 --- a/epochX/cudacpp/gg_ttgg.sa/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_ttgg.sa/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -908,6 +912,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -920,6 +925,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -934,6 +940,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -945,6 +952,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -959,6 +967,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -970,6 +979,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -984,6 +994,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -995,6 +1006,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -1008,6 +1020,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1042,6 +1055,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1080,6 +1094,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1103,6 +1118,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1134,6 +1150,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1165,6 +1182,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1197,6 +1215,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1225,6 +1244,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1260,6 +1280,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1288,6 +1309,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1323,6 +1345,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1351,6 +1374,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) diff --git a/epochX/cudacpp/gg_ttgg.sa/src/cudacpp_src.mk b/epochX/cudacpp/gg_ttgg.sa/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gg_ttgg.sa/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_ttgg.sa/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_ttggg.mad/Cards/delphes_trigger.dat b/epochX/cudacpp/gg_ttggg.mad/Cards/delphes_trigger.dat new file mode 100644 index 0000000000..0aab0677aa --- /dev/null +++ b/epochX/cudacpp/gg_ttggg.mad/Cards/delphes_trigger.dat @@ -0,0 +1,20 @@ +#TRIGGER CARD # DO NOT REMOVE THIS IS A TAG! + +# list of trigger algorithms +# trigger_name >> algorithm #comments +Inclusive electron >> ELEC1_PT: '29' +di-electron >> ELEC1_PT: '17' && ELEC2_PT: '17' +Inclusive Photon >> GAMMA1_PT: '80' +di-Photon >> GAMMA1_PT: '40' && GAMMA2_PT: '25' +Inclusive muon >> MUON1_PT: '19' +di-muon >> MUON1_PT: '7' && MUON2_PT: '7' +Taujet and ETmis >> TAU1_PT: '86' && ETMIS_PT: '65' +di-Taujets >> TAU1_PT: '59' && TAU2_PT: '59' +Jet and ETmis >> JET1_PT: '180' && ETMIS_PT: '123' +Taujet and electron >> TAU1_PT: '45' && ELEC1_PT: '19' +Taujet and muon >> TAU1_PT: '40' && ELEC1_PT: '15' +Inclusive b-jet >> Bjet1_PT: '237' +Inclusive 1 jet >> JET1_PT: '657' +Inclusive 3 jets >> JET1_PT: '247' && JET2_PT: '247' && JET3_PT: '247' +Inclusive 4 jets >> JET1_PT: '113' && JET2_PT: '113' && JET3_PT: '113' && JET4_PT: '113' + diff --git a/epochX/cudacpp/gg_ttggg.mad/Cards/me5_configuration.txt b/epochX/cudacpp/gg_ttggg.mad/Cards/me5_configuration.txt index 27acb12a1e..8a0c1e6345 100644 --- a/epochX/cudacpp/gg_ttggg.mad/Cards/me5_configuration.txt +++ b/epochX/cudacpp/gg_ttggg.mad/Cards/me5_configuration.txt @@ -234,7 +234,7 @@ # pineappl = pineappl -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo # MG5 MAIN DIRECTORY -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo diff --git a/epochX/cudacpp/gg_ttggg.mad/Cards/plot_card.dat b/epochX/cudacpp/gg_ttggg.mad/Cards/plot_card.dat new file mode 100644 index 0000000000..9abe1cc05e --- /dev/null +++ b/epochX/cudacpp/gg_ttggg.mad/Cards/plot_card.dat @@ -0,0 +1,203 @@ +#************************************************************************** +# Card for MadAnalysis * +# * +# This file is used to set the classes and options for * +# the MadAnalysis program. * +# * +# * +# Some comments about the classes * +# 1. Plots are for classes of particles. * +# 2. Each particle is identified by its PDG code. * +# 3. Classes names are arbitrary (4 symbols max, no spaces allowed). * +# 4. Particles in the same class will be ordered with the 'ordering * +# function' in the file in_func.f. * +# 5. Classes can be added/edited/removed at will, and given a name * +# that will then appear in the plots. * +# 6. A particle can be put in one class only. Putting a particle in * +# two or more classes can lead to double counting of events. * +# 7. The class name mET is missing Energy and its name is reserved. * +# If used, it must be put last in the classes list below. * +# 8. If events contain particles not belonging to an existing class, * +# a new class will automatically be generated. * +# 9. For LHCO events the PDG code 21 is assigned to a jet (not * +# b-tagged), 5 to a b-tagged jet and 12 to missing ET. * +# * +# * +# Some comments about the cuts * +# 1. In the file kin_func.f the functions on which cuts can be applied * +# are given. * +# 2. The syntax is as follows. * +# etmin 1 3 30d0 * +# means that from the first class the Et of the first three particles * +# has to be greater than 30 GeV. * +# * +# etmissmin 20d0 * +# means that there must be at least 20 GeV of missing Et * +# * +# dRmin 2 1 4 3 3d0 * +# means that the distance between the first particle in the second * +# class and the first three particles in the fourth class has to be * +# greater than 3. * +# * +# ptmax 1 3 10d0 * +# ptmax 1 2 15d0 * +# means that the maximum pt of the third particle in the first class * +# has to smaller than 10 GeV, and the first two particles of this * +# class has to be smaller than 15 GeV * +# 3. The ordering of the particles within a class can be set with the * +# 'ordering function' in the file kin_func.f. * +# 4. For all the 'min' cuts, an event will be thrown away if the particle * +# does not exist. On the other hand, for all the 'max' cuts the cut * +# will be ignored if the particle does not exist * +# (Only dRij is an exception, for which it is the other way around) * +# * +# * +# * +# Some comments about the plotting options * +# 1. In the file kin_func.f the functions can be found that can be * +# plotted. (only for off-line usage) * +# 2. With the plotting options one can set the number of plots for each * +# of these functions. * +# 3. One has to specify for each variable which particles from which * +# class are used to set the plots. Syntax: * +# et 2 4 * +# means that the transverse energy of the first four particles in the * +# second class will be plotted. * +# mij 1 3 * +# mij 2 2 * +# means that for the invariant mass plots the first three particles * +# from the first class and the first two from the second class will be * +# used to plot the invariant mass of two particles. (10 plots) * +# 4. The ordering of the particles in a class can be set with the * +# 'ordering_function'. pt, e and et are valid functions. (For off-line * +# users X1, X2 and X3 can also be used, if defined in kin_func.f.) * +# 5. Max number of plots is 200. * +# * +# * +#************************************************************************** +# Put here your list of classes +#************************************************************************** +# Do NOT put spaces before class names! +# Begin Classes # This is TAG. Do not modify this line +jet 1 -1 2 -2 3 -3 4 -4 21 # Class number 1 +b 5 -5 # Class number 2 +mET 12 -12 14 -14 16 -16 1000022 # Missing ET class, name is reserved +# End Classes # This is TAG. Do not modify this line +#************************************************************************** +ordering_function pt # orders particles in classes according to their pt +normalization xsec # histogram normalization, xsec or number (e.g. 1) +#************************************************************************** +# Put here list of minimum pt for the classes +#************************************************************************** +# Begin Minpts # This is TAG. Do not modify this line +#1 30 +#2 40 +#3 10 +# End Minpts # This is TAG. Do not modify this line +#************************************************************************** +# Cuts on plotted events +#************************************************************************** +# Modify the cuts and remove the pounds/hashes to apply those cuts +# Do NOT put spaces at the beginning of the following lines! +# Begin Cuts # This is TAG. Do not modify this line +#etmin 2 2 40d0 +#etmin 2 1 80d0 +#etmin 1 3 20d0 +#etmax 2 1 200d0 +#ptmin 3 1 0d0 +#etmissmin 20d0 +#etmissmax 80d0 +#etamax 1 1 1d0 +#etamax 2 1 2d0 +#etamin 2 2 1.5d0 +#etamin 2 1 2d0 +#mijmax 2 1 2 2 200d0 +#mijmin 2 1 2 2 100d0 +#X1min 2 1 40d0 +#X1max 2 2 50d0 +#dRijmin 2 1 2 2 0.7d0 +#dRijmax 1 3 2 2 0.7d0 +#XY1min 2 2 2 2 20d0 +#XYZA2max 2 2 2 2 4 1 5 1 40d0 +# End Cuts # This is TAG. Do not modify this line +#************************************************************************** +# Put here the required plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotDefs # This is TAG. Do not modify this line +pt 1 4 # plot pt for the first four particles in class 1 +pt 2 4 # plot pt for the first four particles in class 2 +pt 3 4 # plot pt for the first four particles in class 3 +pt 4 4 # plot pt for the first four particles in class 4 +pt 5 4 # etc. +pt 6 4 +pt 7 4 +#e 2 2 +y 1 4 # plot rapidity for the first four particles in class 1 +y 2 4 +y 3 4 +y 4 4 +y 5 4 +y 6 4 +y 7 4 +#eta 2 2 # plot pseudo-rapidity for the first two part in the 2nd class +#mom 4 1 +#costh 5 1 +#phi 2 2 +#delta_eta 2 2 +#delta_eta 4 1 +mij 1 4 # use the first four particles in the 1st class to plot inv. mass +mij 2 2 # use the first two particles from the second class as well +mij 3 1 # etc. +mij 4 1 +mij 5 1 +mij 6 1 +mij 7 1 +#cosij 1 2 +#cosij 2 2 +#cosij 3 1 +#cosij 4 1 +dRij 1 4 +dRij 2 2 +dRij 3 1 +dRij 4 1 +dRij 5 1 +dRij 6 1 +dRij 7 1 +#delta_phi 2 2 +#delta_phi 4 1 +#delta_phi 5 1 +#X1 2 2 # plot X1 (defined in kin_func.f) +#XYZA1 2 2 +#XYZA1 4 1 +#XYZA1 5 1 +# End PlotDefs # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Put here the plot ranges +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotRange # This is TAG. Do not modify this line +pt 10 0 500 # bin size, min value, max value +et 10 0 500 # bin size, min value, max value +etmiss 10 0 500 # bin size, min value, max value +ht 20 0 1500 +y 0.2 -5 5 # etc. +mij 20 0 1500 +dRij 0.1 0 5 +#delta_phi 0.1 0 3.1 +#X1 1 0 100 +#XYZA1 1 0 100 +# End PlotRange # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Output for plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotOutput # This is TAG. Do not modify this line +output topdrawer # set to topdrawer or gnuplot +plot_decayed no # plot (and cut) dec. res.? (Only for LHE events) +# End PlotOutput # This is TAG. Do not modify this line +#************************************************************************** +# +# diff --git a/epochX/cudacpp/gg_ttggg.mad/Cards/run_card.dat b/epochX/cudacpp/gg_ttggg.mad/Cards/run_card.dat index 0a6bf20eb9..3714e71997 100644 --- a/epochX/cudacpp/gg_ttggg.mad/Cards/run_card.dat +++ b/epochX/cudacpp/gg_ttggg.mad/Cards/run_card.dat @@ -77,7 +77,7 @@ #********************************************************************* 0 = nhel ! using helicities importance sampling or not. ! 0: sum over helicity, 1: importance sampling - 1 = sde_strategy ! default integration strategy (hep-ph/2021.00773) + 2 = sde_strategy ! default integration strategy (hep-ph/2021.00773) ! 1 is old strategy (using amp square) ! 2 is new strategy (using only the denominator) # To see advanced option for Phase-Space optimization: type "update psoptim" @@ -173,13 +173,3 @@ # systematics = systematics_program ! none, systematics [python], SysCalc [depreceted, C++] ['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule - -#********************************************************************* -# Options for the cudacpp plugin -#********************************************************************* - -# Set cudacpp-specific values of non-cudacpp-specific options --O3 -ffast-math -fbounds-check = global_flag ! build flags for Fortran code (for a fair comparison to cudacpp) - -# New cudacpp-specific options (default values are defined in banner.py) -CPP = cudacpp_backend ! valid backends are FORTRAN, CPP, CUDA diff --git a/epochX/cudacpp/gg_ttggg.mad/Source/DHELAS/aloha_file.inc b/epochX/cudacpp/gg_ttggg.mad/Source/DHELAS/aloha_file.inc index fa0f3d86f5..1b5bf6ec54 100644 --- a/epochX/cudacpp/gg_ttggg.mad/Source/DHELAS/aloha_file.inc +++ b/epochX/cudacpp/gg_ttggg.mad/Source/DHELAS/aloha_file.inc @@ -1 +1 @@ -ALOHARoutine = FFV1P0_3.o FFV1_0.o FFV1_1.o FFV1_2.o VVV1P0_1.o VVV1_0.o VVVV1P0_1.o VVVV1_0.o VVVV3P0_1.o VVVV3_0.o VVVV4P0_1.o VVVV4_0.o +ALOHARoutine = VVV1_0.o VVV1P0_1.o FFV1_0.o FFV1_1.o FFV1_2.o FFV1P0_3.o VVVV1_0.o VVVV1P0_1.o VVVV3_0.o VVVV3P0_1.o VVVV4_0.o VVVV4P0_1.o diff --git a/epochX/cudacpp/gg_ttggg.mad/Source/PDF/pdfwrap_lhapdf.f b/epochX/cudacpp/gg_ttggg.mad/Source/PDF/pdfwrap_lhapdf.f index 0be926e6cd..3f36905346 100644 --- a/epochX/cudacpp/gg_ttggg.mad/Source/PDF/pdfwrap_lhapdf.f +++ b/epochX/cudacpp/gg_ttggg.mad/Source/PDF/pdfwrap_lhapdf.f @@ -5,6 +5,7 @@ SUBROUTINE PDFWRAP C INCLUDE 'pdf.inc' INCLUDE '../alfas.inc' + INCLUDE '../vector.inc' INCLUDE '../coupl.inc' REAL*8 ZMASS DATA ZMASS/91.188D0/ diff --git a/epochX/cudacpp/gg_ttggg.mad/Source/make_opts b/epochX/cudacpp/gg_ttggg.mad/Source/make_opts index bd3c24228d..2607530b78 100644 --- a/epochX/cudacpp/gg_ttggg.mad/Source/make_opts +++ b/epochX/cudacpp/gg_ttggg.mad/Source/make_opts @@ -1,17 +1,11 @@ -pdlabel1= -pdlabel2= -lhapdf= -PYTHIA8_PATH=NotInstalled -MG5AMC_VERSION=3.5.0_lo_vect -GLOBAL_FLAG=-O3 -ffast-math -fbounds-check -ALOHA_FLAG= -MATRIX_FLAG= DEFAULT_CPP_COMPILER=g++ MACFLAG= STDLIB=-lstdc++ STDLIB_FLAG= DEFAULT_F_COMPILER=gfortran -DEFAULT_F2PY_COMPILER=f2py3 +DEFAULT_F2PY_COMPILER=f2py3.9 +MG5AMC_VERSION=SpecifiedByMG5aMCAtRunTime +PYTHIA8_PATH=NotInstalled #end_of_make_opts_variables BIASLIBDIR=../../../lib/ diff --git a/epochX/cudacpp/gg_ttggg.mad/Source/makefile b/epochX/cudacpp/gg_ttggg.mad/Source/makefile index dbe08b846e..00c73099a0 100644 --- a/epochX/cudacpp/gg_ttggg.mad/Source/makefile +++ b/epochX/cudacpp/gg_ttggg.mad/Source/makefile @@ -136,5 +136,7 @@ cleanSource: clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; -cleanall: cleanSource +cleanavx: + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; +cleanall: cleanSource # THIS IS THE ONE for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/CPPProcess.cc b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/CPPProcess.cc index 18c4db8539..aa215f3c80 100644 --- a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/CPPProcess.cc +++ b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/CPPProcess.cc @@ -252,13 +252,13 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][6], +1, w_fp[6], 6 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[7] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); - VVV1P0_1( w_fp[7], w_fp[4], COUPs[0], 0., 0., w_fp[9] ); - VVV1P0_1( w_fp[8], w_fp[5], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[7] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[7], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[9] ); + VVV1P0_1( w_fp[8], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 1 - VVV1_0( w_fp[9], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -283,10 +283,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 1240 *** // Wavefunction(s) for diagram number 2 - VVV1P0_1( w_fp[8], w_fp[6], COUPs[0], 0., 0., w_fp[11] ); + VVV1P0_1( w_fp[8], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 2 - VVV1_0( w_fp[9], w_fp[11], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[11], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -314,7 +314,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 3 - VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -331,7 +331,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -348,7 +348,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -369,11 +369,11 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 1240 *** // Wavefunction(s) for diagram number 4 - VVV1P0_1( w_fp[7], w_fp[5], COUPs[0], 0., 0., w_fp[12] ); - VVV1P0_1( w_fp[8], w_fp[4], COUPs[0], 0., 0., w_fp[13] ); + VVV1P0_1( w_fp[7], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[12] ); + VVV1P0_1( w_fp[8], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[13] ); // Amplitude(s) for diagram number 4 - VVV1_0( w_fp[12], w_fp[13], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[13], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -401,7 +401,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 5 - VVV1_0( w_fp[12], w_fp[11], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[11], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -429,7 +429,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -446,7 +446,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -463,7 +463,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[3] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -484,10 +484,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 1240 *** // Wavefunction(s) for diagram number 7 - VVV1P0_1( w_fp[7], w_fp[6], COUPs[0], 0., 0., w_fp[14] ); + VVV1P0_1( w_fp[7], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[14] ); // Amplitude(s) for diagram number 7 - VVV1_0( w_fp[14], w_fp[13], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[13], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -515,7 +515,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - VVV1_0( w_fp[14], w_fp[10], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[10], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -543,7 +543,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -560,7 +560,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[97] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -577,7 +577,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -598,12 +598,12 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 1240 *** // Wavefunction(s) for diagram number 10 - VVVV1P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[15] ); - VVVV3P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[16] ); - VVVV4P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[17] ); + VVVV1P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[15] ); + VVVV3P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[16] ); + VVVV4P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[17] ); // Amplitude(s) for diagram number 10 - VVV1_0( w_fp[8], w_fp[6], w_fp[15], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[15], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -620,7 +620,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -637,7 +637,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[17], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -658,12 +658,12 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 1240 *** // Wavefunction(s) for diagram number 11 - VVVV1P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[18] ); - VVVV3P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[19] ); - VVVV4P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[20] ); + VVVV1P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[18] ); + VVVV3P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[19] ); + VVVV4P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[20] ); // Amplitude(s) for diagram number 11 - VVV1_0( w_fp[8], w_fp[5], w_fp[18], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[18], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[25] -= amp_sv[0]; @@ -680,7 +680,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[108] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[19], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -697,7 +697,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[20], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -718,12 +718,12 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 1240 *** // Wavefunction(s) for diagram number 12 - VVVV1P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[22] ); - VVVV4P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[23] ); + VVVV1P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[22] ); + VVVV4P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 12 - VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; @@ -740,7 +740,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -757,7 +757,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[97] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -778,10 +778,10 @@ namespace mg5amcCpu // *** DIAGRAM 13 OF 1240 *** // Wavefunction(s) for diagram number 13 - VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 0., 0., w_fp[24] ); + VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 13 - VVVV1_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[4] -= amp_sv[0]; @@ -798,7 +798,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -815,7 +815,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[28] -= amp_sv[0]; @@ -836,10 +836,10 @@ namespace mg5amcCpu // *** DIAGRAM 14 OF 1240 *** // Wavefunction(s) for diagram number 14 - VVV1P0_1( w_fp[7], w_fp[8], COUPs[0], 0., 0., w_fp[25] ); + VVV1P0_1( w_fp[7], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[25] ); // Amplitude(s) for diagram number 14 - VVV1_0( w_fp[24], w_fp[6], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -864,10 +864,10 @@ namespace mg5amcCpu // *** DIAGRAM 15 OF 1240 *** // Wavefunction(s) for diagram number 15 - VVV1P0_1( w_fp[7], w_fp[24], COUPs[0], 0., 0., w_fp[26] ); + VVV1P0_1( w_fp[7], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[26] ); // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[8], w_fp[6], w_fp[26], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[26], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -895,7 +895,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 16 - VVV1_0( w_fp[8], w_fp[24], w_fp[14], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[24], w_fp[14], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 16 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -920,10 +920,10 @@ namespace mg5amcCpu // *** DIAGRAM 17 OF 1240 *** // Wavefunction(s) for diagram number 17 - VVV1P0_1( w_fp[4], w_fp[6], COUPs[0], 0., 0., w_fp[27] ); + VVV1P0_1( w_fp[4], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[27] ); // Amplitude(s) for diagram number 17 - VVVV1_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[3] += amp_sv[0]; @@ -940,7 +940,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; - VVVV3_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[25] -= amp_sv[0]; @@ -957,7 +957,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[108] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVVV4_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[26] -= amp_sv[0]; @@ -981,7 +981,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 18 - VVV1_0( w_fp[27], w_fp[5], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 18 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1006,10 +1006,10 @@ namespace mg5amcCpu // *** DIAGRAM 19 OF 1240 *** // Wavefunction(s) for diagram number 19 - VVV1P0_1( w_fp[7], w_fp[27], COUPs[0], 0., 0., w_fp[28] ); + VVV1P0_1( w_fp[7], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[28] ); // Amplitude(s) for diagram number 19 - VVV1_0( w_fp[8], w_fp[5], w_fp[28], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[28], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 19 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1037,7 +1037,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[8], w_fp[27], w_fp[12], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[27], w_fp[12], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 20 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1062,10 +1062,10 @@ namespace mg5amcCpu // *** DIAGRAM 21 OF 1240 *** // Wavefunction(s) for diagram number 21 - VVV1P0_1( w_fp[5], w_fp[6], COUPs[0], 0., 0., w_fp[29] ); + VVV1P0_1( w_fp[5], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[29] ); // Amplitude(s) for diagram number 21 - VVVV1_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -1082,7 +1082,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -1099,7 +1099,7 @@ namespace mg5amcCpu jamp_sv[116] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; @@ -1123,7 +1123,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - VVV1_0( w_fp[4], w_fp[29], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 22 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1151,7 +1151,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 23 - VVV1_0( w_fp[8], w_fp[29], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[29], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 23 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1176,10 +1176,10 @@ namespace mg5amcCpu // *** DIAGRAM 24 OF 1240 *** // Wavefunction(s) for diagram number 24 - VVV1P0_1( w_fp[7], w_fp[29], COUPs[0], 0., 0., w_fp[25] ); + VVV1P0_1( w_fp[7], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[25] ); // Amplitude(s) for diagram number 24 - VVV1_0( w_fp[8], w_fp[4], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 24 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1204,12 +1204,12 @@ namespace mg5amcCpu // *** DIAGRAM 25 OF 1240 *** // Wavefunction(s) for diagram number 25 - VVVV1P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[30] ); - VVVV3P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[31] ); - VVVV4P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[32] ); + VVVV1P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[30] ); + VVVV3P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[31] ); + VVVV4P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[32] ); // Amplitude(s) for diagram number 25 - VVV1_0( w_fp[7], w_fp[8], w_fp[30], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[8], w_fp[30], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -1226,7 +1226,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[7], w_fp[8], w_fp[31], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[8], w_fp[31], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -1243,7 +1243,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[7], w_fp[8], w_fp[32], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[8], w_fp[32], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -1264,12 +1264,12 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 1240 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[33] ); - FFV1_2( w_fp[3], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[34] ); - FFV1_1( w_fp[33], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[35] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[33] ); + FFV1_2( w_fp[3], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[34] ); + FFV1_1( w_fp[33], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[35] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[34], w_fp[35], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[35], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 26 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1280,10 +1280,10 @@ namespace mg5amcCpu // *** DIAGRAM 27 OF 1240 *** // Wavefunction(s) for diagram number 27 - FFV1_1( w_fp[33], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[36] ); + FFV1_1( w_fp[33], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[36] ); // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[34], w_fp[36], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[36], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 27 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1294,10 +1294,10 @@ namespace mg5amcCpu // *** DIAGRAM 28 OF 1240 *** // Wavefunction(s) for diagram number 28 - FFV1P0_3( w_fp[3], w_fp[33], COUPs[1], 0., 0., w_fp[37] ); + FFV1P0_3( w_fp[3], w_fp[33], COUPs[1], 1.0, 0., 0., w_fp[37] ); // Amplitude(s) for diagram number 28 - VVV1_0( w_fp[12], w_fp[37], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[37], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 28 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1317,7 +1317,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[3], w_fp[36], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[36], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 29 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1333,7 +1333,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 30 - VVV1_0( w_fp[14], w_fp[37], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[37], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 30 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1353,7 +1353,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 31 - FFV1_0( w_fp[3], w_fp[35], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[35], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 31 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1369,7 +1369,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1378,7 +1378,7 @@ namespace mg5amcCpu jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1387,7 +1387,7 @@ namespace mg5amcCpu jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1400,11 +1400,11 @@ namespace mg5amcCpu // *** DIAGRAM 33 OF 1240 *** // Wavefunction(s) for diagram number 33 - FFV1_2( w_fp[3], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[38] ); - FFV1_1( w_fp[33], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[39] ); + FFV1_2( w_fp[3], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[38] ); + FFV1_1( w_fp[33], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[39] ); // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[38], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 33 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1415,10 +1415,10 @@ namespace mg5amcCpu // *** DIAGRAM 34 OF 1240 *** // Wavefunction(s) for diagram number 34 - FFV1_2( w_fp[38], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[40] ); + FFV1_2( w_fp[38], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[40] ); // Amplitude(s) for diagram number 34 - FFV1_0( w_fp[40], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 34 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1432,7 +1432,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - FFV1_0( w_fp[38], w_fp[33], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 35 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1445,10 +1445,10 @@ namespace mg5amcCpu // *** DIAGRAM 36 OF 1240 *** // Wavefunction(s) for diagram number 36 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[41] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[41] ); // Amplitude(s) for diagram number 36 - FFV1_0( w_fp[41], w_fp[39], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 36 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1459,10 +1459,10 @@ namespace mg5amcCpu // *** DIAGRAM 37 OF 1240 *** // Wavefunction(s) for diagram number 37 - FFV1_2( w_fp[41], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[42] ); + FFV1_2( w_fp[41], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[42] ); // Amplitude(s) for diagram number 37 - FFV1_0( w_fp[42], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[42], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 37 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1476,7 +1476,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 38 - FFV1_0( w_fp[41], w_fp[33], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 38 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1492,7 +1492,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 39 - FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 39 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1508,7 +1508,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 40 - FFV1_0( w_fp[34], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 40 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1524,7 +1524,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 41 - FFV1_0( w_fp[3], w_fp[33], w_fp[25], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[25], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 41 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1541,11 +1541,11 @@ namespace mg5amcCpu // *** DIAGRAM 42 OF 1240 *** // Wavefunction(s) for diagram number 42 - FFV1_1( w_fp[2], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[39] ); - FFV1_1( w_fp[39], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[43] ); + FFV1_1( w_fp[2], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[39] ); + FFV1_1( w_fp[39], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[43] ); // Amplitude(s) for diagram number 42 - FFV1_0( w_fp[34], w_fp[43], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[43], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 42 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1556,10 +1556,10 @@ namespace mg5amcCpu // *** DIAGRAM 43 OF 1240 *** // Wavefunction(s) for diagram number 43 - FFV1_1( w_fp[39], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[44] ); + FFV1_1( w_fp[39], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[44] ); // Amplitude(s) for diagram number 43 - FFV1_0( w_fp[34], w_fp[44], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[44], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 43 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1570,10 +1570,10 @@ namespace mg5amcCpu // *** DIAGRAM 44 OF 1240 *** // Wavefunction(s) for diagram number 44 - FFV1P0_3( w_fp[3], w_fp[39], COUPs[1], 0., 0., w_fp[45] ); + FFV1P0_3( w_fp[3], w_fp[39], COUPs[1], 1.0, 0., 0., w_fp[45] ); // Amplitude(s) for diagram number 44 - VVV1_0( w_fp[9], w_fp[45], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[45], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 44 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1593,7 +1593,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 45 - FFV1_0( w_fp[3], w_fp[44], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[44], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 45 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1609,7 +1609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 46 - VVV1_0( w_fp[14], w_fp[45], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[45], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 46 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1629,7 +1629,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 47 - FFV1_0( w_fp[3], w_fp[43], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[43], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 47 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1645,7 +1645,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 48 - FFV1_0( w_fp[3], w_fp[39], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[18], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1654,7 +1654,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[19], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1663,7 +1663,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1676,11 +1676,11 @@ namespace mg5amcCpu // *** DIAGRAM 49 OF 1240 *** // Wavefunction(s) for diagram number 49 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[46] ); - FFV1_1( w_fp[39], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[47] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[46] ); + FFV1_1( w_fp[39], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[47] ); // Amplitude(s) for diagram number 49 - FFV1_0( w_fp[46], w_fp[47], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 49 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1691,10 +1691,10 @@ namespace mg5amcCpu // *** DIAGRAM 50 OF 1240 *** // Wavefunction(s) for diagram number 50 - FFV1_2( w_fp[46], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[48] ); + FFV1_2( w_fp[46], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[48] ); // Amplitude(s) for diagram number 50 - FFV1_0( w_fp[48], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 50 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1708,7 +1708,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 51 - FFV1_0( w_fp[46], w_fp[39], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 51 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1724,7 +1724,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 52 - FFV1_0( w_fp[41], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 52 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1738,7 +1738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 53 - FFV1_0( w_fp[42], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[42], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 53 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1752,7 +1752,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 54 - FFV1_0( w_fp[41], w_fp[39], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 54 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1768,7 +1768,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 55 - FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 55 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1784,7 +1784,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 56 - FFV1_0( w_fp[34], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 56 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1800,7 +1800,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 57 - FFV1_0( w_fp[3], w_fp[39], w_fp[28], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[28], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 57 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1817,11 +1817,11 @@ namespace mg5amcCpu // *** DIAGRAM 58 OF 1240 *** // Wavefunction(s) for diagram number 58 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[47] ); - FFV1_1( w_fp[47], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[49] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[47] ); + FFV1_1( w_fp[47], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[49] ); // Amplitude(s) for diagram number 58 - FFV1_0( w_fp[34], w_fp[49], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[49], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 58 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1832,10 +1832,10 @@ namespace mg5amcCpu // *** DIAGRAM 59 OF 1240 *** // Wavefunction(s) for diagram number 59 - FFV1_1( w_fp[47], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[50] ); + FFV1_1( w_fp[47], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[50] ); // Amplitude(s) for diagram number 59 - FFV1_0( w_fp[34], w_fp[50], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[50], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 59 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1846,10 +1846,10 @@ namespace mg5amcCpu // *** DIAGRAM 60 OF 1240 *** // Wavefunction(s) for diagram number 60 - FFV1P0_3( w_fp[3], w_fp[47], COUPs[1], 0., 0., w_fp[51] ); + FFV1P0_3( w_fp[3], w_fp[47], COUPs[1], 1.0, 0., 0., w_fp[51] ); // Amplitude(s) for diagram number 60 - VVV1_0( w_fp[9], w_fp[51], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[51], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 60 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1869,7 +1869,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 61 - FFV1_0( w_fp[3], w_fp[50], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[50], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 61 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1885,7 +1885,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 62 - VVV1_0( w_fp[12], w_fp[51], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[51], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 62 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1905,7 +1905,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 63 - FFV1_0( w_fp[3], w_fp[49], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[49], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 63 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1921,7 +1921,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 64 - FFV1_0( w_fp[3], w_fp[47], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[15], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1930,7 +1930,7 @@ namespace mg5amcCpu jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1939,7 +1939,7 @@ namespace mg5amcCpu jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1952,10 +1952,10 @@ namespace mg5amcCpu // *** DIAGRAM 65 OF 1240 *** // Wavefunction(s) for diagram number 65 - FFV1_1( w_fp[47], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[52] ); + FFV1_1( w_fp[47], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[52] ); // Amplitude(s) for diagram number 65 - FFV1_0( w_fp[46], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 65 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1969,7 +1969,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 66 - FFV1_0( w_fp[48], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 66 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1983,7 +1983,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 67 - FFV1_0( w_fp[46], w_fp[47], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 67 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1999,7 +1999,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 68 - FFV1_0( w_fp[38], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 68 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2013,7 +2013,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 69 - FFV1_0( w_fp[40], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 69 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2027,7 +2027,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 70 - FFV1_0( w_fp[38], w_fp[47], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 70 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2043,7 +2043,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 71 - FFV1_0( w_fp[3], w_fp[52], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 71 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2059,7 +2059,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 72 - FFV1_0( w_fp[34], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 72 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2075,7 +2075,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 73 - FFV1_0( w_fp[3], w_fp[47], w_fp[26], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[26], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 73 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2092,11 +2092,11 @@ namespace mg5amcCpu // *** DIAGRAM 74 OF 1240 *** // Wavefunction(s) for diagram number 74 - FFV1_1( w_fp[2], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[52] ); - FFV1_2( w_fp[46], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[7] ); + FFV1_1( w_fp[2], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[52] ); + FFV1_2( w_fp[46], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[7] ); // Amplitude(s) for diagram number 74 - FFV1_0( w_fp[7], w_fp[52], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[52], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 74 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2107,10 +2107,10 @@ namespace mg5amcCpu // *** DIAGRAM 75 OF 1240 *** // Wavefunction(s) for diagram number 75 - FFV1_2( w_fp[46], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[53] ); + FFV1_2( w_fp[46], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[53] ); // Amplitude(s) for diagram number 75 - FFV1_0( w_fp[53], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 75 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2121,10 +2121,10 @@ namespace mg5amcCpu // *** DIAGRAM 76 OF 1240 *** // Wavefunction(s) for diagram number 76 - FFV1P0_3( w_fp[46], w_fp[2], COUPs[1], 0., 0., w_fp[54] ); + FFV1P0_3( w_fp[46], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[54] ); // Amplitude(s) for diagram number 76 - VVV1_0( w_fp[12], w_fp[54], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[54], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 76 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2144,7 +2144,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 77 - FFV1_0( w_fp[53], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 77 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2160,7 +2160,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 78 - VVV1_0( w_fp[14], w_fp[54], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[54], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 78 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2180,7 +2180,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 79 - FFV1_0( w_fp[7], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 79 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2196,7 +2196,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 80 - FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2205,7 +2205,7 @@ namespace mg5amcCpu jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2214,7 +2214,7 @@ namespace mg5amcCpu jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2230,7 +2230,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 81 - FFV1_0( w_fp[46], w_fp[52], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[52], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 81 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2246,7 +2246,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 82 - FFV1_0( w_fp[48], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 82 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2262,7 +2262,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 83 - FFV1_0( w_fp[46], w_fp[2], w_fp[25], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[25], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 83 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2279,10 +2279,10 @@ namespace mg5amcCpu // *** DIAGRAM 84 OF 1240 *** // Wavefunction(s) for diagram number 84 - FFV1_2( w_fp[38], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[25] ); + FFV1_2( w_fp[38], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[25] ); // Amplitude(s) for diagram number 84 - FFV1_0( w_fp[25], w_fp[52], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[52], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 84 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2293,10 +2293,10 @@ namespace mg5amcCpu // *** DIAGRAM 85 OF 1240 *** // Wavefunction(s) for diagram number 85 - FFV1_2( w_fp[38], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[48] ); + FFV1_2( w_fp[38], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[48] ); // Amplitude(s) for diagram number 85 - FFV1_0( w_fp[48], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 85 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2307,10 +2307,10 @@ namespace mg5amcCpu // *** DIAGRAM 86 OF 1240 *** // Wavefunction(s) for diagram number 86 - FFV1P0_3( w_fp[38], w_fp[2], COUPs[1], 0., 0., w_fp[23] ); + FFV1P0_3( w_fp[38], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 86 - VVV1_0( w_fp[9], w_fp[23], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[23], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 86 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2330,7 +2330,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 87 - FFV1_0( w_fp[48], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 87 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2346,7 +2346,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 88 - VVV1_0( w_fp[14], w_fp[23], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[23], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 88 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2366,7 +2366,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 89 - FFV1_0( w_fp[25], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 89 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2382,7 +2382,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 90 - FFV1_0( w_fp[38], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2391,7 +2391,7 @@ namespace mg5amcCpu jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2400,7 +2400,7 @@ namespace mg5amcCpu jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2416,7 +2416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 91 - FFV1_0( w_fp[38], w_fp[52], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[52], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 91 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2432,7 +2432,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 92 - FFV1_0( w_fp[40], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 92 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2448,7 +2448,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 93 - FFV1_0( w_fp[38], w_fp[2], w_fp[28], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[28], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 93 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2465,10 +2465,10 @@ namespace mg5amcCpu // *** DIAGRAM 94 OF 1240 *** // Wavefunction(s) for diagram number 94 - FFV1_2( w_fp[41], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[28] ); + FFV1_2( w_fp[41], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[28] ); // Amplitude(s) for diagram number 94 - FFV1_0( w_fp[28], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 94 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2479,10 +2479,10 @@ namespace mg5amcCpu // *** DIAGRAM 95 OF 1240 *** // Wavefunction(s) for diagram number 95 - FFV1_2( w_fp[41], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[40] ); + FFV1_2( w_fp[41], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[40] ); // Amplitude(s) for diagram number 95 - FFV1_0( w_fp[40], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 95 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2493,10 +2493,10 @@ namespace mg5amcCpu // *** DIAGRAM 96 OF 1240 *** // Wavefunction(s) for diagram number 96 - FFV1P0_3( w_fp[41], w_fp[2], COUPs[1], 0., 0., w_fp[20] ); + FFV1P0_3( w_fp[41], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[20] ); // Amplitude(s) for diagram number 96 - VVV1_0( w_fp[9], w_fp[20], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[20], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 96 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2516,7 +2516,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 97 - FFV1_0( w_fp[40], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 97 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2532,7 +2532,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 98 - VVV1_0( w_fp[12], w_fp[20], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[20], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 98 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2552,7 +2552,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 99 - FFV1_0( w_fp[28], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 99 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2568,7 +2568,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 100 - FFV1_0( w_fp[41], w_fp[2], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[15], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2577,7 +2577,7 @@ namespace mg5amcCpu jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2586,7 +2586,7 @@ namespace mg5amcCpu jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2602,7 +2602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 101 - FFV1_0( w_fp[41], w_fp[52], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[52], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 101 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2618,7 +2618,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 102 - FFV1_0( w_fp[42], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[42], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 102 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2634,7 +2634,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 103 - FFV1_0( w_fp[41], w_fp[2], w_fp[26], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[26], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 103 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2651,10 +2651,10 @@ namespace mg5amcCpu // *** DIAGRAM 104 OF 1240 *** // Wavefunction(s) for diagram number 104 - FFV1_2( w_fp[3], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[26] ); + FFV1_2( w_fp[3], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[26] ); // Amplitude(s) for diagram number 104 - FFV1_0( w_fp[26], w_fp[52], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[52], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 104 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2667,10 +2667,10 @@ namespace mg5amcCpu // *** DIAGRAM 105 OF 1240 *** // Wavefunction(s) for diagram number 105 - VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 0., 0., w_fp[42] ); + VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[42] ); // Amplitude(s) for diagram number 105 - FFV1_0( w_fp[3], w_fp[52], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 105 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2687,10 +2687,10 @@ namespace mg5amcCpu // *** DIAGRAM 106 OF 1240 *** // Wavefunction(s) for diagram number 106 - FFV1_1( w_fp[2], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[17] ); + FFV1_1( w_fp[2], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[17] ); // Amplitude(s) for diagram number 106 - FFV1_0( w_fp[34], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 106 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2706,7 +2706,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 107 - FFV1_0( w_fp[34], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 107 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2726,7 +2726,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 108 - FFV1_0( w_fp[3], w_fp[17], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 108 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2746,7 +2746,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 109 - FFV1_0( w_fp[26], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 109 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2763,10 +2763,10 @@ namespace mg5amcCpu // *** DIAGRAM 110 OF 1240 *** // Wavefunction(s) for diagram number 110 - FFV1_2( w_fp[3], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_2( w_fp[3], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 110 - FFV1_0( w_fp[14], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 110 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2779,10 +2779,10 @@ namespace mg5amcCpu // *** DIAGRAM 111 OF 1240 *** // Wavefunction(s) for diagram number 111 - VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[16] ); // Amplitude(s) for diagram number 111 - FFV1_0( w_fp[3], w_fp[52], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 111 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2799,10 +2799,10 @@ namespace mg5amcCpu // *** DIAGRAM 112 OF 1240 *** // Wavefunction(s) for diagram number 112 - FFV1_1( w_fp[2], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[15] ); + FFV1_1( w_fp[2], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[15] ); // Amplitude(s) for diagram number 112 - FFV1_0( w_fp[34], w_fp[15], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[15], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 112 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2818,7 +2818,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 113 - FFV1_0( w_fp[34], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 113 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2838,7 +2838,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 114 - FFV1_0( w_fp[3], w_fp[15], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[15], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 114 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2858,7 +2858,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 115 - FFV1_0( w_fp[14], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 115 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2875,10 +2875,10 @@ namespace mg5amcCpu // *** DIAGRAM 116 OF 1240 *** // Wavefunction(s) for diagram number 116 - FFV1_2( w_fp[3], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[3], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 116 - FFV1_0( w_fp[12], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 116 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2891,10 +2891,10 @@ namespace mg5amcCpu // *** DIAGRAM 117 OF 1240 *** // Wavefunction(s) for diagram number 117 - VVV1P0_1( w_fp[4], w_fp[29], COUPs[0], 0., 0., w_fp[19] ); + VVV1P0_1( w_fp[4], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[19] ); // Amplitude(s) for diagram number 117 - FFV1_0( w_fp[3], w_fp[52], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 117 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2911,10 +2911,10 @@ namespace mg5amcCpu // *** DIAGRAM 118 OF 1240 *** // Wavefunction(s) for diagram number 118 - FFV1_1( w_fp[2], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[18] ); + FFV1_1( w_fp[2], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[18] ); // Amplitude(s) for diagram number 118 - FFV1_0( w_fp[34], w_fp[18], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[18], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 118 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2930,7 +2930,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 119 - FFV1_0( w_fp[34], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 119 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2950,7 +2950,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 120 - FFV1_0( w_fp[3], w_fp[18], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[18], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 120 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2970,7 +2970,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 121 - FFV1_0( w_fp[12], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 121 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2990,7 +2990,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 122 - FFV1_0( w_fp[3], w_fp[52], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2999,7 +2999,7 @@ namespace mg5amcCpu jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[52], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -3008,7 +3008,7 @@ namespace mg5amcCpu jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[52], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3024,7 +3024,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 123 - FFV1_0( w_fp[34], w_fp[2], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[64] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; @@ -3033,7 +3033,7 @@ namespace mg5amcCpu jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3042,7 +3042,7 @@ namespace mg5amcCpu jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3055,13 +3055,13 @@ namespace mg5amcCpu // *** DIAGRAM 124 OF 1240 *** // Wavefunction(s) for diagram number 124 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[34] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[52] ); - FFV1_1( w_fp[34], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[52], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[34] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[52] ); + FFV1_1( w_fp[34], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[52], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 124 - FFV1_0( w_fp[22], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 124 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3071,10 +3071,10 @@ namespace mg5amcCpu // *** DIAGRAM 125 OF 1240 *** // Wavefunction(s) for diagram number 125 - FFV1_2( w_fp[52], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[52], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 125 - FFV1_0( w_fp[21], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 125 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3084,11 +3084,11 @@ namespace mg5amcCpu // *** DIAGRAM 126 OF 1240 *** // Wavefunction(s) for diagram number 126 - FFV1_1( w_fp[34], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[55] ); - FFV1_2( w_fp[52], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[56] ); + FFV1_1( w_fp[34], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[55] ); + FFV1_2( w_fp[52], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[56] ); // Amplitude(s) for diagram number 126 - FFV1_0( w_fp[56], w_fp[55], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[55], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 126 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3101,7 +3101,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 127 - FFV1_0( w_fp[21], w_fp[55], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[55], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 127 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3111,10 +3111,10 @@ namespace mg5amcCpu // *** DIAGRAM 128 OF 1240 *** // Wavefunction(s) for diagram number 128 - FFV1_1( w_fp[34], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[57] ); + FFV1_1( w_fp[34], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[57] ); // Amplitude(s) for diagram number 128 - FFV1_0( w_fp[56], w_fp[57], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[57], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 128 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3127,7 +3127,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 129 - FFV1_0( w_fp[22], w_fp[57], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[57], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 129 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3137,10 +3137,10 @@ namespace mg5amcCpu // *** DIAGRAM 130 OF 1240 *** // Wavefunction(s) for diagram number 130 - FFV1P0_3( w_fp[52], w_fp[34], COUPs[1], 0., 0., w_fp[58] ); + FFV1P0_3( w_fp[52], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[58] ); // Amplitude(s) for diagram number 130 - VVV1_0( w_fp[24], w_fp[6], w_fp[58], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[58], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 130 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3153,10 +3153,10 @@ namespace mg5amcCpu // *** DIAGRAM 131 OF 1240 *** // Wavefunction(s) for diagram number 131 - FFV1_1( w_fp[34], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[59] ); + FFV1_1( w_fp[34], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[59] ); // Amplitude(s) for diagram number 131 - FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 131 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3170,7 +3170,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 132 - FFV1_0( w_fp[52], w_fp[57], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[57], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 132 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3184,7 +3184,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 133 - VVV1_0( w_fp[27], w_fp[5], w_fp[58], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[58], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 133 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3197,10 +3197,10 @@ namespace mg5amcCpu // *** DIAGRAM 134 OF 1240 *** // Wavefunction(s) for diagram number 134 - FFV1_1( w_fp[34], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); + FFV1_1( w_fp[34], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); // Amplitude(s) for diagram number 134 - FFV1_0( w_fp[52], w_fp[60], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[60], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 134 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3214,7 +3214,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 135 - FFV1_0( w_fp[52], w_fp[55], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[55], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 135 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3228,7 +3228,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 136 - VVV1_0( w_fp[4], w_fp[29], w_fp[58], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[58], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 136 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3244,7 +3244,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 137 - FFV1_0( w_fp[52], w_fp[9], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[9], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 137 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3255,10 +3255,10 @@ namespace mg5amcCpu // *** DIAGRAM 138 OF 1240 *** // Wavefunction(s) for diagram number 138 - FFV1_1( w_fp[34], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[58] ); + FFV1_1( w_fp[34], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[58] ); // Amplitude(s) for diagram number 138 - FFV1_0( w_fp[52], w_fp[58], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[58], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 138 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3272,17 +3272,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 139 - FFV1_0( w_fp[52], w_fp[34], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[34], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[11] -= amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[34], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[34], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[34], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[34], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -3291,12 +3291,12 @@ namespace mg5amcCpu // *** DIAGRAM 140 OF 1240 *** // Wavefunction(s) for diagram number 140 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[61] ); - FFV1P0_3( w_fp[3], w_fp[34], COUPs[1], 0., 0., w_fp[62] ); - VVV1P0_1( w_fp[61], w_fp[5], COUPs[0], 0., 0., w_fp[63] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[61] ); + FFV1P0_3( w_fp[3], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[62] ); + VVV1P0_1( w_fp[61], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[63] ); // Amplitude(s) for diagram number 140 - VVV1_0( w_fp[62], w_fp[63], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[63], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 140 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3313,10 +3313,10 @@ namespace mg5amcCpu // *** DIAGRAM 141 OF 1240 *** // Wavefunction(s) for diagram number 141 - VVV1P0_1( w_fp[61], w_fp[6], COUPs[0], 0., 0., w_fp[64] ); + VVV1P0_1( w_fp[61], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[64] ); // Amplitude(s) for diagram number 141 - VVV1_0( w_fp[62], w_fp[64], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[64], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 141 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3336,7 +3336,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 142 - VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -3345,7 +3345,7 @@ namespace mg5amcCpu jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -3354,7 +3354,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3367,10 +3367,10 @@ namespace mg5amcCpu // *** DIAGRAM 143 OF 1240 *** // Wavefunction(s) for diagram number 143 - FFV1_2( w_fp[3], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[65] ); + FFV1_2( w_fp[3], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[65] ); // Amplitude(s) for diagram number 143 - FFV1_0( w_fp[65], w_fp[55], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[55], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 143 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3384,7 +3384,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 144 - FFV1_0( w_fp[3], w_fp[55], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 144 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3400,7 +3400,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 145 - FFV1_0( w_fp[65], w_fp[57], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[57], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 145 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3414,7 +3414,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 146 - FFV1_0( w_fp[3], w_fp[57], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 146 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3427,10 +3427,10 @@ namespace mg5amcCpu // *** DIAGRAM 147 OF 1240 *** // Wavefunction(s) for diagram number 147 - FFV1_1( w_fp[34], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[66] ); + FFV1_1( w_fp[34], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[66] ); // Amplitude(s) for diagram number 147 - FFV1_0( w_fp[38], w_fp[66], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[66], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 147 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3441,10 +3441,10 @@ namespace mg5amcCpu // *** DIAGRAM 148 OF 1240 *** // Wavefunction(s) for diagram number 148 - FFV1P0_3( w_fp[38], w_fp[34], COUPs[1], 0., 0., w_fp[67] ); + FFV1P0_3( w_fp[38], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[67] ); // Amplitude(s) for diagram number 148 - VVV1_0( w_fp[61], w_fp[6], w_fp[67], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[67], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 148 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3460,7 +3460,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 149 - FFV1_0( w_fp[38], w_fp[57], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[57], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 149 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3474,7 +3474,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 150 - FFV1_0( w_fp[41], w_fp[66], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[66], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 150 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3485,10 +3485,10 @@ namespace mg5amcCpu // *** DIAGRAM 151 OF 1240 *** // Wavefunction(s) for diagram number 151 - FFV1P0_3( w_fp[41], w_fp[34], COUPs[1], 0., 0., w_fp[68] ); + FFV1P0_3( w_fp[41], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 151 - VVV1_0( w_fp[61], w_fp[5], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 151 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3504,7 +3504,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 152 - FFV1_0( w_fp[41], w_fp[55], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[55], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 152 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3518,7 +3518,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 153 - FFV1_0( w_fp[3], w_fp[66], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[66], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 153 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3534,7 +3534,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 154 - VVV1_0( w_fp[61], w_fp[29], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[29], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 154 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3554,7 +3554,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 155 - FFV1_0( w_fp[3], w_fp[58], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[58], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 155 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3567,11 +3567,11 @@ namespace mg5amcCpu // *** DIAGRAM 156 OF 1240 *** // Wavefunction(s) for diagram number 156 - VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 0., 0., w_fp[66] ); - VVV1P0_1( w_fp[66], w_fp[4], COUPs[0], 0., 0., w_fp[69] ); + VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[66] ); + VVV1P0_1( w_fp[66], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[69] ); // Amplitude(s) for diagram number 156 - VVV1_0( w_fp[62], w_fp[69], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[69], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 156 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3588,10 +3588,10 @@ namespace mg5amcCpu // *** DIAGRAM 157 OF 1240 *** // Wavefunction(s) for diagram number 157 - VVV1P0_1( w_fp[66], w_fp[6], COUPs[0], 0., 0., w_fp[70] ); + VVV1P0_1( w_fp[66], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[70] ); // Amplitude(s) for diagram number 157 - VVV1_0( w_fp[62], w_fp[70], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[70], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 157 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3611,7 +3611,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 158 - VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3620,7 +3620,7 @@ namespace mg5amcCpu jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3629,7 +3629,7 @@ namespace mg5amcCpu jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3642,10 +3642,10 @@ namespace mg5amcCpu // *** DIAGRAM 159 OF 1240 *** // Wavefunction(s) for diagram number 159 - FFV1_2( w_fp[3], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); + FFV1_2( w_fp[3], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); // Amplitude(s) for diagram number 159 - FFV1_0( w_fp[71], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 159 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3659,7 +3659,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 160 - FFV1_0( w_fp[3], w_fp[9], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 160 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3675,7 +3675,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 161 - FFV1_0( w_fp[71], w_fp[57], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[57], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 161 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3689,7 +3689,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 162 - FFV1_0( w_fp[3], w_fp[57], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 162 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3702,10 +3702,10 @@ namespace mg5amcCpu // *** DIAGRAM 163 OF 1240 *** // Wavefunction(s) for diagram number 163 - FFV1_1( w_fp[34], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[72] ); + FFV1_1( w_fp[34], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[72] ); // Amplitude(s) for diagram number 163 - FFV1_0( w_fp[46], w_fp[72], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[72], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 163 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3716,10 +3716,10 @@ namespace mg5amcCpu // *** DIAGRAM 164 OF 1240 *** // Wavefunction(s) for diagram number 164 - FFV1P0_3( w_fp[46], w_fp[34], COUPs[1], 0., 0., w_fp[73] ); + FFV1P0_3( w_fp[46], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[73] ); // Amplitude(s) for diagram number 164 - VVV1_0( w_fp[66], w_fp[6], w_fp[73], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[73], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 164 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3735,7 +3735,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 165 - FFV1_0( w_fp[46], w_fp[57], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[57], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 165 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3749,7 +3749,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 166 - FFV1_0( w_fp[41], w_fp[72], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[72], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 166 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3763,7 +3763,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 167 - VVV1_0( w_fp[66], w_fp[4], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 167 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3779,7 +3779,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 168 - FFV1_0( w_fp[41], w_fp[9], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[9], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 168 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3793,7 +3793,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 169 - FFV1_0( w_fp[3], w_fp[72], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[72], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 169 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3809,7 +3809,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 170 - VVV1_0( w_fp[66], w_fp[27], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[27], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 170 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3829,7 +3829,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 171 - FFV1_0( w_fp[3], w_fp[60], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[60], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 171 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3842,11 +3842,11 @@ namespace mg5amcCpu // *** DIAGRAM 172 OF 1240 *** // Wavefunction(s) for diagram number 172 - VVV1P0_1( w_fp[1], w_fp[6], COUPs[0], 0., 0., w_fp[72] ); - VVV1P0_1( w_fp[72], w_fp[4], COUPs[0], 0., 0., w_fp[74] ); + VVV1P0_1( w_fp[1], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[72] ); + VVV1P0_1( w_fp[72], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[74] ); // Amplitude(s) for diagram number 172 - VVV1_0( w_fp[62], w_fp[74], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[74], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 172 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3863,10 +3863,10 @@ namespace mg5amcCpu // *** DIAGRAM 173 OF 1240 *** // Wavefunction(s) for diagram number 173 - VVV1P0_1( w_fp[72], w_fp[5], COUPs[0], 0., 0., w_fp[75] ); + VVV1P0_1( w_fp[72], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[75] ); // Amplitude(s) for diagram number 173 - VVV1_0( w_fp[62], w_fp[75], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[75], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 173 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3886,7 +3886,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 174 - VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3895,7 +3895,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3904,7 +3904,7 @@ namespace mg5amcCpu jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -3917,10 +3917,10 @@ namespace mg5amcCpu // *** DIAGRAM 175 OF 1240 *** // Wavefunction(s) for diagram number 175 - FFV1_2( w_fp[3], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[76] ); + FFV1_2( w_fp[3], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[76] ); // Amplitude(s) for diagram number 175 - FFV1_0( w_fp[76], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 175 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3934,7 +3934,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 176 - FFV1_0( w_fp[3], w_fp[9], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 176 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3950,7 +3950,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 177 - FFV1_0( w_fp[76], w_fp[55], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[55], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 177 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3964,7 +3964,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 178 - FFV1_0( w_fp[3], w_fp[55], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 178 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3977,10 +3977,10 @@ namespace mg5amcCpu // *** DIAGRAM 179 OF 1240 *** // Wavefunction(s) for diagram number 179 - FFV1_1( w_fp[34], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); + FFV1_1( w_fp[34], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); // Amplitude(s) for diagram number 179 - FFV1_0( w_fp[46], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 179 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -3994,7 +3994,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 180 - VVV1_0( w_fp[72], w_fp[5], w_fp[73], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[73], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 180 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4010,7 +4010,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 181 - FFV1_0( w_fp[46], w_fp[55], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[55], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 181 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4024,7 +4024,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 182 - FFV1_0( w_fp[38], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 182 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4038,7 +4038,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 183 - VVV1_0( w_fp[72], w_fp[4], w_fp[67], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[67], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 183 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4054,7 +4054,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 184 - FFV1_0( w_fp[38], w_fp[9], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[9], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 184 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4068,7 +4068,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 185 - FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 185 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4084,7 +4084,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 186 - VVV1_0( w_fp[72], w_fp[24], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[24], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 186 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4104,7 +4104,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 187 - FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 187 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4117,10 +4117,10 @@ namespace mg5amcCpu // *** DIAGRAM 188 OF 1240 *** // Wavefunction(s) for diagram number 188 - FFV1_1( w_fp[34], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); + FFV1_1( w_fp[34], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); // Amplitude(s) for diagram number 188 - FFV1_0( w_fp[7], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 188 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4133,7 +4133,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 189 - FFV1_0( w_fp[53], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 189 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4143,10 +4143,10 @@ namespace mg5amcCpu // *** DIAGRAM 190 OF 1240 *** // Wavefunction(s) for diagram number 190 - FFV1_2( w_fp[46], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[78] ); + FFV1_2( w_fp[46], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[78] ); // Amplitude(s) for diagram number 190 - FFV1_0( w_fp[78], w_fp[55], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[55], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 190 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4159,7 +4159,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 191 - FFV1_0( w_fp[53], w_fp[55], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[55], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 191 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4172,7 +4172,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 192 - FFV1_0( w_fp[78], w_fp[57], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[57], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 192 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4185,7 +4185,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 193 - FFV1_0( w_fp[7], w_fp[57], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[57], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 193 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4198,7 +4198,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 194 - FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 194 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4212,7 +4212,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 195 - VVV1_0( w_fp[1], w_fp[29], w_fp[73], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[73], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 195 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4228,7 +4228,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 196 - FFV1_0( w_fp[46], w_fp[58], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[58], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 196 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4242,7 +4242,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 197 - FFV1_0( w_fp[25], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 197 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4255,7 +4255,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 198 - FFV1_0( w_fp[48], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 198 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4265,10 +4265,10 @@ namespace mg5amcCpu // *** DIAGRAM 199 OF 1240 *** // Wavefunction(s) for diagram number 199 - FFV1_2( w_fp[38], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[58] ); + FFV1_2( w_fp[38], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[58] ); // Amplitude(s) for diagram number 199 - FFV1_0( w_fp[58], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 199 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4281,7 +4281,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 200 - FFV1_0( w_fp[48], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 200 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4294,7 +4294,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 201 - FFV1_0( w_fp[58], w_fp[57], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[57], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 201 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4307,7 +4307,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 202 - FFV1_0( w_fp[25], w_fp[57], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[57], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 202 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4320,7 +4320,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 203 - FFV1_0( w_fp[38], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 203 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4334,7 +4334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 204 - VVV1_0( w_fp[1], w_fp[27], w_fp[67], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[67], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 204 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4350,7 +4350,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 205 - FFV1_0( w_fp[38], w_fp[60], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[60], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 205 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4364,7 +4364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 206 - FFV1_0( w_fp[28], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 206 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4377,7 +4377,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 207 - FFV1_0( w_fp[40], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 207 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4387,10 +4387,10 @@ namespace mg5amcCpu // *** DIAGRAM 208 OF 1240 *** // Wavefunction(s) for diagram number 208 - FFV1_2( w_fp[41], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); + FFV1_2( w_fp[41], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); // Amplitude(s) for diagram number 208 - FFV1_0( w_fp[60], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 208 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4403,7 +4403,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 209 - FFV1_0( w_fp[40], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 209 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4416,7 +4416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 210 - FFV1_0( w_fp[60], w_fp[55], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[55], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 210 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4429,7 +4429,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 211 - FFV1_0( w_fp[28], w_fp[55], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[55], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 211 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4442,7 +4442,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 212 - FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 212 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4456,7 +4456,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 213 - VVV1_0( w_fp[1], w_fp[24], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 213 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4472,7 +4472,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 214 - FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 214 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4486,7 +4486,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 215 - FFV1_0( w_fp[26], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 215 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4500,7 +4500,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 216 - FFV1_0( w_fp[3], w_fp[77], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 216 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4513,10 +4513,10 @@ namespace mg5amcCpu // *** DIAGRAM 217 OF 1240 *** // Wavefunction(s) for diagram number 217 - VVV1P0_1( w_fp[1], w_fp[24], COUPs[0], 0., 0., w_fp[59] ); + VVV1P0_1( w_fp[1], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[59] ); // Amplitude(s) for diagram number 217 - VVV1_0( w_fp[62], w_fp[59], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[59], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 217 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4536,7 +4536,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 218 - VVV1_0( w_fp[62], w_fp[1], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 218 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4556,7 +4556,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 219 - VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4565,7 +4565,7 @@ namespace mg5amcCpu jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4574,7 +4574,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -4590,7 +4590,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 220 - FFV1_0( w_fp[3], w_fp[57], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 220 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4606,7 +4606,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 221 - FFV1_0( w_fp[26], w_fp[57], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[57], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 221 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4620,7 +4620,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 222 - FFV1_0( w_fp[14], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 222 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4634,7 +4634,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 223 - FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 223 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4647,10 +4647,10 @@ namespace mg5amcCpu // *** DIAGRAM 224 OF 1240 *** // Wavefunction(s) for diagram number 224 - VVV1P0_1( w_fp[1], w_fp[27], COUPs[0], 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[1], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 224 - VVV1_0( w_fp[62], w_fp[68], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[68], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 224 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4670,7 +4670,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 225 - VVV1_0( w_fp[62], w_fp[1], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 225 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4690,7 +4690,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 226 - VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4699,7 +4699,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4708,7 +4708,7 @@ namespace mg5amcCpu jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4724,7 +4724,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 227 - FFV1_0( w_fp[3], w_fp[55], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 227 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4740,7 +4740,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 228 - FFV1_0( w_fp[14], w_fp[55], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[55], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 228 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4754,7 +4754,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 229 - FFV1_0( w_fp[12], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 229 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4768,7 +4768,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 230 - FFV1_0( w_fp[3], w_fp[77], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 230 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4781,10 +4781,10 @@ namespace mg5amcCpu // *** DIAGRAM 231 OF 1240 *** // Wavefunction(s) for diagram number 231 - VVV1P0_1( w_fp[1], w_fp[29], COUPs[0], 0., 0., w_fp[67] ); + VVV1P0_1( w_fp[1], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[67] ); // Amplitude(s) for diagram number 231 - VVV1_0( w_fp[62], w_fp[67], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[67], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 231 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4804,7 +4804,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 232 - VVV1_0( w_fp[62], w_fp[1], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 232 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4824,7 +4824,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 233 - VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4833,7 +4833,7 @@ namespace mg5amcCpu jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4842,7 +4842,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -4858,7 +4858,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 234 - FFV1_0( w_fp[3], w_fp[9], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 234 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4874,7 +4874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 235 - FFV1_0( w_fp[12], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 235 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -4885,12 +4885,12 @@ namespace mg5amcCpu // *** DIAGRAM 236 OF 1240 *** // Wavefunction(s) for diagram number 236 - VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[73] ); - VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[79] ); - VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[80] ); + VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[73] ); + VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[79] ); + VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[80] ); // Amplitude(s) for diagram number 236 - VVV1_0( w_fp[73], w_fp[6], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[73], w_fp[6], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4899,7 +4899,7 @@ namespace mg5amcCpu jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[79], w_fp[6], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[79], w_fp[6], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4908,7 +4908,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[80], w_fp[6], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[80], w_fp[6], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -4924,17 +4924,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 237 - FFV1_0( w_fp[3], w_fp[57], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[57], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[57], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[22] += amp_sv[0]; @@ -4946,17 +4946,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 238 - FFV1_0( w_fp[41], w_fp[34], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[34], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[34], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[34], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[12] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[34], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[34], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -4965,12 +4965,12 @@ namespace mg5amcCpu // *** DIAGRAM 239 OF 1240 *** // Wavefunction(s) for diagram number 239 - VVVV1P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[57] ); - VVVV3P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[81] ); - VVVV4P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[82] ); + VVVV1P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[57] ); + VVVV3P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[81] ); + VVVV4P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[82] ); // Amplitude(s) for diagram number 239 - VVV1_0( w_fp[57], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[57], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4979,7 +4979,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[81], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[81], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -4988,7 +4988,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[82], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[82], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -5004,17 +5004,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 240 - FFV1_0( w_fp[3], w_fp[55], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[55], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[16] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[55], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[16] += amp_sv[0]; @@ -5026,17 +5026,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 241 - FFV1_0( w_fp[38], w_fp[34], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[34], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[34], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[34], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[18] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[34], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[34], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[18] += amp_sv[0]; @@ -5045,12 +5045,12 @@ namespace mg5amcCpu // *** DIAGRAM 242 OF 1240 *** // Wavefunction(s) for diagram number 242 - VVVV1P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[55] ); - VVVV3P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[83] ); - VVVV4P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[84] ); + VVVV1P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[55] ); + VVVV3P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[83] ); + VVVV4P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[84] ); // Amplitude(s) for diagram number 242 - VVV1_0( w_fp[55], w_fp[4], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[55], w_fp[4], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -5059,7 +5059,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[83], w_fp[4], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[83], w_fp[4], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -5068,7 +5068,7 @@ namespace mg5amcCpu jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[84], w_fp[4], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[84], w_fp[4], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -5084,17 +5084,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 243 - FFV1_0( w_fp[3], w_fp[9], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -5106,17 +5106,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 244 - FFV1_0( w_fp[46], w_fp[34], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[34], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[34], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[34], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[34], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[34], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[19] += amp_sv[0]; @@ -5128,17 +5128,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 245 - FFV1_0( w_fp[3], w_fp[77], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -5150,7 +5150,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 246 - VVV1_0( w_fp[1], w_fp[30], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[30], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -5159,7 +5159,7 @@ namespace mg5amcCpu jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[31], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[31], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -5168,7 +5168,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[32], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[32], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -5181,13 +5181,13 @@ namespace mg5amcCpu // *** DIAGRAM 247 OF 1240 *** // Wavefunction(s) for diagram number 247 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[62] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); - FFV1_2( w_fp[62], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[34] ); - FFV1_1( w_fp[77], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[62] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); + FFV1_2( w_fp[62], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[34] ); + FFV1_1( w_fp[77], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 247 - FFV1_0( w_fp[34], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 247 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5197,10 +5197,10 @@ namespace mg5amcCpu // *** DIAGRAM 248 OF 1240 *** // Wavefunction(s) for diagram number 248 - FFV1_1( w_fp[77], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[85] ); + FFV1_1( w_fp[77], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[85] ); // Amplitude(s) for diagram number 248 - FFV1_0( w_fp[34], w_fp[85], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[85], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 248 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5210,11 +5210,11 @@ namespace mg5amcCpu // *** DIAGRAM 249 OF 1240 *** // Wavefunction(s) for diagram number 249 - FFV1_2( w_fp[62], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[86] ); - FFV1_1( w_fp[77], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[87] ); + FFV1_2( w_fp[62], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[86] ); + FFV1_1( w_fp[77], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[87] ); // Amplitude(s) for diagram number 249 - FFV1_0( w_fp[86], w_fp[87], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[87], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 249 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5227,7 +5227,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 250 - FFV1_0( w_fp[86], w_fp[85], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[85], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 250 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5237,10 +5237,10 @@ namespace mg5amcCpu // *** DIAGRAM 251 OF 1240 *** // Wavefunction(s) for diagram number 251 - FFV1_2( w_fp[62], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[88] ); + FFV1_2( w_fp[62], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[88] ); // Amplitude(s) for diagram number 251 - FFV1_0( w_fp[88], w_fp[87], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[87], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 251 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5253,7 +5253,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 252 - FFV1_0( w_fp[88], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 252 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5263,10 +5263,10 @@ namespace mg5amcCpu // *** DIAGRAM 253 OF 1240 *** // Wavefunction(s) for diagram number 253 - FFV1P0_3( w_fp[62], w_fp[77], COUPs[1], 0., 0., w_fp[89] ); + FFV1P0_3( w_fp[62], w_fp[77], COUPs[1], 1.0, 0., 0., w_fp[89] ); // Amplitude(s) for diagram number 253 - VVV1_0( w_fp[24], w_fp[6], w_fp[89], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[89], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 253 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5279,10 +5279,10 @@ namespace mg5amcCpu // *** DIAGRAM 254 OF 1240 *** // Wavefunction(s) for diagram number 254 - FFV1_2( w_fp[62], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[90] ); + FFV1_2( w_fp[62], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[90] ); // Amplitude(s) for diagram number 254 - FFV1_0( w_fp[90], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 254 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5296,7 +5296,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 255 - FFV1_0( w_fp[88], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 255 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5310,7 +5310,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 256 - VVV1_0( w_fp[27], w_fp[5], w_fp[89], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[89], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 256 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5323,10 +5323,10 @@ namespace mg5amcCpu // *** DIAGRAM 257 OF 1240 *** // Wavefunction(s) for diagram number 257 - FFV1_2( w_fp[62], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[91] ); + FFV1_2( w_fp[62], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[91] ); // Amplitude(s) for diagram number 257 - FFV1_0( w_fp[91], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[91], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 257 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5340,7 +5340,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 258 - FFV1_0( w_fp[86], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 258 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5354,7 +5354,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 259 - VVV1_0( w_fp[4], w_fp[29], w_fp[89], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[89], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 259 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5370,7 +5370,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 260 - FFV1_0( w_fp[34], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 260 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5381,10 +5381,10 @@ namespace mg5amcCpu // *** DIAGRAM 261 OF 1240 *** // Wavefunction(s) for diagram number 261 - FFV1_2( w_fp[62], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[89] ); + FFV1_2( w_fp[62], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[89] ); // Amplitude(s) for diagram number 261 - FFV1_0( w_fp[89], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[89], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 261 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5398,17 +5398,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 262 - FFV1_0( w_fp[62], w_fp[77], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[33] += amp_sv[0]; jamp_sv[35] -= amp_sv[0]; jamp_sv[41] -= amp_sv[0]; jamp_sv[47] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[77], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[35] -= amp_sv[0]; jamp_sv[39] += amp_sv[0]; jamp_sv[41] -= amp_sv[0]; jamp_sv[45] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[77], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[33] -= amp_sv[0]; jamp_sv[39] += amp_sv[0]; jamp_sv[45] += amp_sv[0]; @@ -5417,10 +5417,10 @@ namespace mg5amcCpu // *** DIAGRAM 263 OF 1240 *** // Wavefunction(s) for diagram number 263 - FFV1P0_3( w_fp[62], w_fp[2], COUPs[1], 0., 0., w_fp[92] ); + FFV1P0_3( w_fp[62], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[92] ); // Amplitude(s) for diagram number 263 - VVV1_0( w_fp[92], w_fp[63], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[63], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 263 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5440,7 +5440,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 264 - VVV1_0( w_fp[92], w_fp[64], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[64], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 264 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5460,7 +5460,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 265 - VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[33] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] += cxtype( 0, 1 ) * amp_sv[0]; @@ -5469,7 +5469,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] += cxtype( 0, 1 ) * amp_sv[0]; @@ -5478,7 +5478,7 @@ namespace mg5amcCpu jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -5491,10 +5491,10 @@ namespace mg5amcCpu // *** DIAGRAM 266 OF 1240 *** // Wavefunction(s) for diagram number 266 - FFV1_1( w_fp[2], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[93] ); + FFV1_1( w_fp[2], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[93] ); // Amplitude(s) for diagram number 266 - FFV1_0( w_fp[86], w_fp[93], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[93], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 266 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5508,7 +5508,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 267 - FFV1_0( w_fp[86], w_fp[2], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 267 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5524,7 +5524,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 268 - FFV1_0( w_fp[88], w_fp[93], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[93], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 268 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5538,7 +5538,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 269 - FFV1_0( w_fp[88], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 269 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5551,10 +5551,10 @@ namespace mg5amcCpu // *** DIAGRAM 270 OF 1240 *** // Wavefunction(s) for diagram number 270 - FFV1_2( w_fp[62], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[94] ); + FFV1_2( w_fp[62], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[94] ); // Amplitude(s) for diagram number 270 - FFV1_0( w_fp[94], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[94], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 270 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5565,10 +5565,10 @@ namespace mg5amcCpu // *** DIAGRAM 271 OF 1240 *** // Wavefunction(s) for diagram number 271 - FFV1P0_3( w_fp[62], w_fp[39], COUPs[1], 0., 0., w_fp[95] ); + FFV1P0_3( w_fp[62], w_fp[39], COUPs[1], 1.0, 0., 0., w_fp[95] ); // Amplitude(s) for diagram number 271 - VVV1_0( w_fp[61], w_fp[6], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 271 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5584,7 +5584,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 272 - FFV1_0( w_fp[88], w_fp[39], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[39], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 272 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5598,7 +5598,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 273 - FFV1_0( w_fp[94], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[94], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 273 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5609,10 +5609,10 @@ namespace mg5amcCpu // *** DIAGRAM 274 OF 1240 *** // Wavefunction(s) for diagram number 274 - FFV1P0_3( w_fp[62], w_fp[47], COUPs[1], 0., 0., w_fp[96] ); + FFV1P0_3( w_fp[62], w_fp[47], COUPs[1], 1.0, 0., 0., w_fp[96] ); // Amplitude(s) for diagram number 274 - VVV1_0( w_fp[61], w_fp[5], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 274 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5628,7 +5628,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 275 - FFV1_0( w_fp[86], w_fp[47], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[47], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 275 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5642,7 +5642,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 276 - FFV1_0( w_fp[94], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[94], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 276 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5658,7 +5658,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 277 - VVV1_0( w_fp[61], w_fp[29], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[29], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 277 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5678,7 +5678,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 278 - FFV1_0( w_fp[89], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[89], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 278 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5694,7 +5694,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 279 - VVV1_0( w_fp[92], w_fp[69], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[69], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 279 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5714,7 +5714,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 280 - VVV1_0( w_fp[92], w_fp[70], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[70], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 280 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5734,7 +5734,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 281 - VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -5743,7 +5743,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -5752,7 +5752,7 @@ namespace mg5amcCpu jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -5765,10 +5765,10 @@ namespace mg5amcCpu // *** DIAGRAM 282 OF 1240 *** // Wavefunction(s) for diagram number 282 - FFV1_1( w_fp[2], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[94] ); + FFV1_1( w_fp[2], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[94] ); // Amplitude(s) for diagram number 282 - FFV1_0( w_fp[34], w_fp[94], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[94], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 282 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5782,7 +5782,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 283 - FFV1_0( w_fp[34], w_fp[2], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 283 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5798,7 +5798,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 284 - FFV1_0( w_fp[88], w_fp[94], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[94], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 284 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5812,7 +5812,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 285 - FFV1_0( w_fp[88], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 285 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5825,10 +5825,10 @@ namespace mg5amcCpu // *** DIAGRAM 286 OF 1240 *** // Wavefunction(s) for diagram number 286 - FFV1_2( w_fp[62], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[97] ); + FFV1_2( w_fp[62], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[97] ); // Amplitude(s) for diagram number 286 - FFV1_0( w_fp[97], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[97], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 286 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5839,10 +5839,10 @@ namespace mg5amcCpu // *** DIAGRAM 287 OF 1240 *** // Wavefunction(s) for diagram number 287 - FFV1P0_3( w_fp[62], w_fp[33], COUPs[1], 0., 0., w_fp[98] ); + FFV1P0_3( w_fp[62], w_fp[33], COUPs[1], 1.0, 0., 0., w_fp[98] ); // Amplitude(s) for diagram number 287 - VVV1_0( w_fp[66], w_fp[6], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 287 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5858,7 +5858,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 288 - FFV1_0( w_fp[88], w_fp[33], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[33], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 288 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5872,7 +5872,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 289 - FFV1_0( w_fp[97], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[97], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 289 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5886,7 +5886,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 290 - VVV1_0( w_fp[66], w_fp[4], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 290 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5902,7 +5902,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 291 - FFV1_0( w_fp[34], w_fp[47], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[47], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 291 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5916,7 +5916,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 292 - FFV1_0( w_fp[97], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[97], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 292 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5932,7 +5932,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 293 - VVV1_0( w_fp[66], w_fp[27], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[27], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 293 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5952,7 +5952,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 294 - FFV1_0( w_fp[91], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[91], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 294 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5968,7 +5968,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 295 - VVV1_0( w_fp[92], w_fp[74], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[74], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 295 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -5988,7 +5988,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 296 - VVV1_0( w_fp[92], w_fp[75], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[75], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 296 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6008,7 +6008,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 297 - VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -6017,7 +6017,7 @@ namespace mg5amcCpu jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[47] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -6026,7 +6026,7 @@ namespace mg5amcCpu jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -6039,10 +6039,10 @@ namespace mg5amcCpu // *** DIAGRAM 298 OF 1240 *** // Wavefunction(s) for diagram number 298 - FFV1_1( w_fp[2], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[97] ); + FFV1_1( w_fp[2], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[97] ); // Amplitude(s) for diagram number 298 - FFV1_0( w_fp[34], w_fp[97], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[97], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 298 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6056,7 +6056,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 299 - FFV1_0( w_fp[34], w_fp[2], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 299 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6072,7 +6072,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 300 - FFV1_0( w_fp[86], w_fp[97], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[97], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 300 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6086,7 +6086,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 301 - FFV1_0( w_fp[86], w_fp[2], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 301 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6099,10 +6099,10 @@ namespace mg5amcCpu // *** DIAGRAM 302 OF 1240 *** // Wavefunction(s) for diagram number 302 - FFV1_2( w_fp[62], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + FFV1_2( w_fp[62], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 302 - FFV1_0( w_fp[99], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 302 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6116,7 +6116,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 303 - VVV1_0( w_fp[72], w_fp[5], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 303 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6132,7 +6132,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 304 - FFV1_0( w_fp[86], w_fp[33], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[33], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 304 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6146,7 +6146,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 305 - FFV1_0( w_fp[99], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 305 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6160,7 +6160,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 306 - VVV1_0( w_fp[72], w_fp[4], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 306 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6176,7 +6176,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 307 - FFV1_0( w_fp[34], w_fp[39], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[39], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 307 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6190,7 +6190,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 308 - FFV1_0( w_fp[99], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 308 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6206,7 +6206,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 309 - VVV1_0( w_fp[72], w_fp[24], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[24], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 309 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6226,7 +6226,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 310 - FFV1_0( w_fp[90], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 310 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6239,10 +6239,10 @@ namespace mg5amcCpu // *** DIAGRAM 311 OF 1240 *** // Wavefunction(s) for diagram number 311 - FFV1_2( w_fp[62], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + FFV1_2( w_fp[62], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 311 - FFV1_0( w_fp[99], w_fp[35], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[35], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 311 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6255,7 +6255,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 312 - FFV1_0( w_fp[99], w_fp[36], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[36], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 312 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6265,10 +6265,10 @@ namespace mg5amcCpu // *** DIAGRAM 313 OF 1240 *** // Wavefunction(s) for diagram number 313 - FFV1_1( w_fp[33], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[100] ); + FFV1_1( w_fp[33], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[100] ); // Amplitude(s) for diagram number 313 - FFV1_0( w_fp[86], w_fp[100], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[100], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 313 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6281,7 +6281,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 314 - FFV1_0( w_fp[86], w_fp[36], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[36], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 314 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6294,7 +6294,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 315 - FFV1_0( w_fp[88], w_fp[100], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[100], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 315 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6307,7 +6307,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 316 - FFV1_0( w_fp[88], w_fp[35], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[35], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 316 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6320,7 +6320,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 317 - FFV1_0( w_fp[99], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 317 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6334,7 +6334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 318 - VVV1_0( w_fp[1], w_fp[29], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 318 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6350,7 +6350,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 319 - FFV1_0( w_fp[89], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[89], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 319 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6364,7 +6364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 320 - FFV1_0( w_fp[99], w_fp[43], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[43], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 320 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6377,7 +6377,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 321 - FFV1_0( w_fp[99], w_fp[44], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[44], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 321 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6387,10 +6387,10 @@ namespace mg5amcCpu // *** DIAGRAM 322 OF 1240 *** // Wavefunction(s) for diagram number 322 - FFV1_1( w_fp[39], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[89] ); + FFV1_1( w_fp[39], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[89] ); // Amplitude(s) for diagram number 322 - FFV1_0( w_fp[34], w_fp[89], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[89], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 322 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6403,7 +6403,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 323 - FFV1_0( w_fp[34], w_fp[44], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[44], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 323 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6416,7 +6416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 324 - FFV1_0( w_fp[88], w_fp[89], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[89], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 324 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6429,7 +6429,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 325 - FFV1_0( w_fp[88], w_fp[43], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[43], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 325 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6442,7 +6442,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 326 - FFV1_0( w_fp[99], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 326 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6456,7 +6456,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 327 - VVV1_0( w_fp[1], w_fp[27], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 327 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6472,7 +6472,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 328 - FFV1_0( w_fp[91], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[91], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 328 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6486,7 +6486,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 329 - FFV1_0( w_fp[99], w_fp[49], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[49], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 329 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6499,7 +6499,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 330 - FFV1_0( w_fp[99], w_fp[50], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[50], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 330 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6509,10 +6509,10 @@ namespace mg5amcCpu // *** DIAGRAM 331 OF 1240 *** // Wavefunction(s) for diagram number 331 - FFV1_1( w_fp[47], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[91] ); + FFV1_1( w_fp[47], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[91] ); // Amplitude(s) for diagram number 331 - FFV1_0( w_fp[34], w_fp[91], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[91], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 331 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6525,7 +6525,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 332 - FFV1_0( w_fp[34], w_fp[50], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[50], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 332 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6538,7 +6538,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 333 - FFV1_0( w_fp[86], w_fp[91], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[91], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 333 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6551,7 +6551,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 334 - FFV1_0( w_fp[86], w_fp[49], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[49], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 334 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6564,7 +6564,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 335 - FFV1_0( w_fp[99], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 335 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6578,7 +6578,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 336 - VVV1_0( w_fp[1], w_fp[24], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 336 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6594,7 +6594,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 337 - FFV1_0( w_fp[90], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 337 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6608,7 +6608,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 338 - FFV1_0( w_fp[99], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 338 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6622,7 +6622,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 339 - FFV1_0( w_fp[99], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 339 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6638,7 +6638,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 340 - VVV1_0( w_fp[92], w_fp[59], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[59], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 340 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6658,7 +6658,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 341 - VVV1_0( w_fp[92], w_fp[1], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[1], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 341 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6678,7 +6678,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 342 - VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[33] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -6687,7 +6687,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -6696,7 +6696,7 @@ namespace mg5amcCpu jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -6712,7 +6712,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 343 - FFV1_0( w_fp[88], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 343 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6728,7 +6728,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 344 - FFV1_0( w_fp[88], w_fp[17], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[17], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 344 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6742,7 +6742,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 345 - FFV1_0( w_fp[99], w_fp[15], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[15], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 345 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6756,7 +6756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 346 - FFV1_0( w_fp[99], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 346 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6772,7 +6772,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 347 - VVV1_0( w_fp[92], w_fp[68], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[68], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 347 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6792,7 +6792,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 348 - VVV1_0( w_fp[92], w_fp[1], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[1], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 348 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6812,7 +6812,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 349 - VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; @@ -6821,7 +6821,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; @@ -6830,7 +6830,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; @@ -6846,7 +6846,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 350 - FFV1_0( w_fp[86], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 350 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6862,7 +6862,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 351 - FFV1_0( w_fp[86], w_fp[15], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[15], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 351 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6876,7 +6876,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 352 - FFV1_0( w_fp[99], w_fp[18], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[18], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 352 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6890,7 +6890,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 353 - FFV1_0( w_fp[99], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 353 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6906,7 +6906,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 354 - VVV1_0( w_fp[92], w_fp[67], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[67], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 354 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6926,7 +6926,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 355 - VVV1_0( w_fp[92], w_fp[1], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[1], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 355 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6946,7 +6946,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 356 - VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[33] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] += cxtype( 0, 1 ) * amp_sv[0]; @@ -6955,7 +6955,7 @@ namespace mg5amcCpu jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] += cxtype( 0, 1 ) * amp_sv[0]; @@ -6964,7 +6964,7 @@ namespace mg5amcCpu jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], 1.0, &_fp[0] ); jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -6980,7 +6980,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 357 - FFV1_0( w_fp[34], w_fp[2], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 357 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -6996,7 +6996,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 358 - FFV1_0( w_fp[34], w_fp[18], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[18], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 358 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7010,7 +7010,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 359 - VVV1_0( w_fp[73], w_fp[6], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[73], w_fp[6], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[33] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7019,7 +7019,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[79], w_fp[6], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[79], w_fp[6], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7028,7 +7028,7 @@ namespace mg5amcCpu jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[80], w_fp[6], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[80], w_fp[6], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -7044,17 +7044,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 360 - FFV1_0( w_fp[88], w_fp[2], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[33] += amp_sv[0]; jamp_sv[39] -= amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[87] += amp_sv[0]; - FFV1_0( w_fp[88], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[39] -= amp_sv[0]; jamp_sv[57] += amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[81] += amp_sv[0]; - FFV1_0( w_fp[88], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[33] -= amp_sv[0]; jamp_sv[57] += amp_sv[0]; jamp_sv[81] += amp_sv[0]; @@ -7066,17 +7066,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 361 - FFV1_0( w_fp[62], w_fp[47], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[47], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[47], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[47], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[107] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[47], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[47], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[105] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; @@ -7088,7 +7088,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 362 - VVV1_0( w_fp[57], w_fp[5], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[57], w_fp[5], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7097,7 +7097,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[81], w_fp[5], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[81], w_fp[5], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7106,7 +7106,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[82], w_fp[5], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[82], w_fp[5], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -7122,17 +7122,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 363 - FFV1_0( w_fp[86], w_fp[2], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[35] += amp_sv[0]; jamp_sv[45] -= amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - FFV1_0( w_fp[86], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[45] -= amp_sv[0]; jamp_sv[59] += amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; - FFV1_0( w_fp[86], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[35] -= amp_sv[0]; jamp_sv[59] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; @@ -7144,17 +7144,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 364 - FFV1_0( w_fp[62], w_fp[39], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[81] += amp_sv[0]; jamp_sv[83] -= amp_sv[0]; jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[39], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[83] -= amp_sv[0]; jamp_sv[87] += amp_sv[0]; jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[39], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[81] -= amp_sv[0]; jamp_sv[87] += amp_sv[0]; jamp_sv[93] += amp_sv[0]; @@ -7166,7 +7166,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 365 - VVV1_0( w_fp[55], w_fp[4], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[55], w_fp[4], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7175,7 +7175,7 @@ namespace mg5amcCpu jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[83], w_fp[4], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[83], w_fp[4], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7184,7 +7184,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[84], w_fp[4], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[84], w_fp[4], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7200,17 +7200,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 366 - FFV1_0( w_fp[34], w_fp[2], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[41] += amp_sv[0]; jamp_sv[47] -= amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[47] -= amp_sv[0]; jamp_sv[83] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[41] -= amp_sv[0]; jamp_sv[83] += amp_sv[0]; jamp_sv[107] += amp_sv[0]; @@ -7222,17 +7222,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 367 - FFV1_0( w_fp[62], w_fp[33], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[57] += amp_sv[0]; jamp_sv[59] -= amp_sv[0]; jamp_sv[65] -= amp_sv[0]; jamp_sv[71] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[33], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[59] -= amp_sv[0]; jamp_sv[63] += amp_sv[0]; jamp_sv[65] -= amp_sv[0]; jamp_sv[69] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[33], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[57] -= amp_sv[0]; jamp_sv[63] += amp_sv[0]; jamp_sv[69] += amp_sv[0]; @@ -7244,17 +7244,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 368 - FFV1_0( w_fp[99], w_fp[2], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[65] += amp_sv[0]; jamp_sv[71] -= amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[71] -= amp_sv[0]; jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[65] -= amp_sv[0]; jamp_sv[89] += amp_sv[0]; jamp_sv[113] += amp_sv[0]; @@ -7266,7 +7266,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 369 - VVV1_0( w_fp[1], w_fp[30], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[30], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[33] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7275,7 +7275,7 @@ namespace mg5amcCpu jamp_sv[71] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[31], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[31], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7284,7 +7284,7 @@ namespace mg5amcCpu jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[32], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[32], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -7297,11 +7297,11 @@ namespace mg5amcCpu // *** DIAGRAM 370 OF 1240 *** // Wavefunction(s) for diagram number 370 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[92] ); - FFV1_2( w_fp[3], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[92] ); + FFV1_2( w_fp[3], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 370 - FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 370 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7315,7 +7315,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 371 - FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 371 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7326,11 +7326,11 @@ namespace mg5amcCpu // *** DIAGRAM 372 OF 1240 *** // Wavefunction(s) for diagram number 372 - VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 0., 0., w_fp[62] ); - FFV1P0_3( w_fp[3], w_fp[77], COUPs[1], 0., 0., w_fp[34] ); + VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[62] ); + FFV1P0_3( w_fp[3], w_fp[77], COUPs[1], 1.0, 0., 0., w_fp[34] ); // Amplitude(s) for diagram number 372 - VVV1_0( w_fp[62], w_fp[34], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[34], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 372 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7350,7 +7350,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 373 - FFV1_0( w_fp[3], w_fp[85], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[85], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 373 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7363,10 +7363,10 @@ namespace mg5amcCpu // *** DIAGRAM 374 OF 1240 *** // Wavefunction(s) for diagram number 374 - VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 374 - VVV1_0( w_fp[86], w_fp[34], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[34], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 374 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7386,7 +7386,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 375 - FFV1_0( w_fp[3], w_fp[9], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 375 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7399,12 +7399,12 @@ namespace mg5amcCpu // *** DIAGRAM 376 OF 1240 *** // Wavefunction(s) for diagram number 376 - VVVV1P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[88] ); - VVVV3P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[90] ); - VVVV4P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[96] ); + VVVV1P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[88] ); + VVVV3P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV4P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[96] ); // Amplitude(s) for diagram number 376 - FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7413,7 +7413,7 @@ namespace mg5amcCpu jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -7422,7 +7422,7 @@ namespace mg5amcCpu jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[96], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -7435,10 +7435,10 @@ namespace mg5amcCpu // *** DIAGRAM 377 OF 1240 *** // Wavefunction(s) for diagram number 377 - FFV1_1( w_fp[77], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[95] ); + FFV1_1( w_fp[77], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[95] ); // Amplitude(s) for diagram number 377 - FFV1_0( w_fp[38], w_fp[95], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[95], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 377 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7449,10 +7449,10 @@ namespace mg5amcCpu // *** DIAGRAM 378 OF 1240 *** // Wavefunction(s) for diagram number 378 - FFV1_2( w_fp[38], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + FFV1_2( w_fp[38], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 378 - FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 378 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7466,7 +7466,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 379 - FFV1_0( w_fp[38], w_fp[77], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 379 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7482,7 +7482,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 380 - FFV1_0( w_fp[41], w_fp[95], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[95], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 380 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7493,10 +7493,10 @@ namespace mg5amcCpu // *** DIAGRAM 381 OF 1240 *** // Wavefunction(s) for diagram number 381 - FFV1_2( w_fp[41], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[101] ); + FFV1_2( w_fp[41], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[101] ); // Amplitude(s) for diagram number 381 - FFV1_0( w_fp[101], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[101], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 381 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7510,7 +7510,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 382 - FFV1_0( w_fp[41], w_fp[77], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 382 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7526,7 +7526,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 383 - FFV1_0( w_fp[3], w_fp[95], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[95], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 383 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7542,7 +7542,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 384 - FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 384 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7555,10 +7555,10 @@ namespace mg5amcCpu // *** DIAGRAM 385 OF 1240 *** // Wavefunction(s) for diagram number 385 - VVV1P0_1( w_fp[92], w_fp[29], COUPs[0], 0., 0., w_fp[95] ); + VVV1P0_1( w_fp[92], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[95] ); // Amplitude(s) for diagram number 385 - FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 385 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7575,10 +7575,10 @@ namespace mg5amcCpu // *** DIAGRAM 386 OF 1240 *** // Wavefunction(s) for diagram number 386 - FFV1_1( w_fp[2], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[102] ); + FFV1_1( w_fp[2], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[102] ); // Amplitude(s) for diagram number 386 - FFV1_0( w_fp[22], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 386 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7592,7 +7592,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 387 - FFV1_0( w_fp[21], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 387 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7603,10 +7603,10 @@ namespace mg5amcCpu // *** DIAGRAM 388 OF 1240 *** // Wavefunction(s) for diagram number 388 - FFV1P0_3( w_fp[52], w_fp[2], COUPs[1], 0., 0., w_fp[103] ); + FFV1P0_3( w_fp[52], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[103] ); // Amplitude(s) for diagram number 388 - VVV1_0( w_fp[62], w_fp[103], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[103], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 388 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7626,7 +7626,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 389 - FFV1_0( w_fp[21], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 389 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7642,7 +7642,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 390 - VVV1_0( w_fp[86], w_fp[103], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[103], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 390 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7662,7 +7662,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 391 - FFV1_0( w_fp[22], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 391 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7678,7 +7678,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 392 - FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; @@ -7687,7 +7687,7 @@ namespace mg5amcCpu jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -7696,7 +7696,7 @@ namespace mg5amcCpu jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -7709,10 +7709,10 @@ namespace mg5amcCpu // *** DIAGRAM 393 OF 1240 *** // Wavefunction(s) for diagram number 393 - FFV1_2( w_fp[52], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[104] ); + FFV1_2( w_fp[52], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[104] ); // Amplitude(s) for diagram number 393 - FFV1_0( w_fp[104], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 393 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7723,10 +7723,10 @@ namespace mg5amcCpu // *** DIAGRAM 394 OF 1240 *** // Wavefunction(s) for diagram number 394 - FFV1_1( w_fp[39], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[105] ); + FFV1_1( w_fp[39], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[105] ); // Amplitude(s) for diagram number 394 - FFV1_0( w_fp[52], w_fp[105], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[105], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 394 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7740,7 +7740,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 395 - FFV1_0( w_fp[52], w_fp[39], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 395 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7756,7 +7756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 396 - FFV1_0( w_fp[104], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 396 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7767,10 +7767,10 @@ namespace mg5amcCpu // *** DIAGRAM 397 OF 1240 *** // Wavefunction(s) for diagram number 397 - FFV1_1( w_fp[47], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[106] ); + FFV1_1( w_fp[47], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[106] ); // Amplitude(s) for diagram number 397 - FFV1_0( w_fp[52], w_fp[106], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[106], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 397 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7784,7 +7784,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 398 - FFV1_0( w_fp[52], w_fp[47], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 398 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7800,7 +7800,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 399 - FFV1_0( w_fp[104], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 399 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7816,7 +7816,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 400 - FFV1_0( w_fp[52], w_fp[102], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[102], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 400 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7832,7 +7832,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 401 - FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 401 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7852,7 +7852,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 402 - FFV1_0( w_fp[71], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 402 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7868,7 +7868,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 403 - FFV1_0( w_fp[3], w_fp[102], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 403 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7888,7 +7888,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 404 - FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 404 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7904,7 +7904,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 405 - FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 405 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7924,7 +7924,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 406 - FFV1_0( w_fp[3], w_fp[94], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[94], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 406 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7944,7 +7944,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 407 - FFV1_0( w_fp[71], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 407 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -7964,7 +7964,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 408 - VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -7981,7 +7981,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -7998,7 +7998,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[36] += amp_sv[0]; @@ -8019,10 +8019,10 @@ namespace mg5amcCpu // *** DIAGRAM 409 OF 1240 *** // Wavefunction(s) for diagram number 409 - VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 409 - VVV1_0( w_fp[8], w_fp[6], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 409 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8047,10 +8047,10 @@ namespace mg5amcCpu // *** DIAGRAM 410 OF 1240 *** // Wavefunction(s) for diagram number 410 - VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 0., 0., w_fp[107] ); + VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[107] ); // Amplitude(s) for diagram number 410 - VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 410 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8078,7 +8078,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 411 - VVV1_0( w_fp[66], w_fp[8], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[8], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 411 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8106,7 +8106,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 412 - FFV1_0( w_fp[3], w_fp[47], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 412 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8126,7 +8126,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 413 - FFV1_0( w_fp[3], w_fp[106], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[106], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 413 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8142,7 +8142,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 414 - FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 414 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8158,7 +8158,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 415 - FFV1_0( w_fp[41], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 415 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8178,7 +8178,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 416 - FFV1_0( w_fp[41], w_fp[102], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[102], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 416 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8194,7 +8194,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 417 - FFV1_0( w_fp[101], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[101], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 417 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8210,7 +8210,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 418 - FFV1_0( w_fp[76], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 418 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8226,7 +8226,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 419 - FFV1_0( w_fp[3], w_fp[102], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 419 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8246,7 +8246,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 420 - FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 420 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8262,7 +8262,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 421 - FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 421 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8282,7 +8282,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 422 - FFV1_0( w_fp[3], w_fp[97], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[97], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 422 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8302,7 +8302,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 423 - FFV1_0( w_fp[76], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 423 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8322,7 +8322,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 424 - VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -8339,7 +8339,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[7] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; @@ -8356,7 +8356,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; jamp_sv[42] += amp_sv[0]; @@ -8377,10 +8377,10 @@ namespace mg5amcCpu // *** DIAGRAM 425 OF 1240 *** // Wavefunction(s) for diagram number 425 - VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 425 - VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 425 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8408,7 +8408,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 426 - VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 426 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8436,7 +8436,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 427 - VVV1_0( w_fp[72], w_fp[8], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[8], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 427 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8464,7 +8464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 428 - FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 428 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8484,7 +8484,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 429 - FFV1_0( w_fp[3], w_fp[105], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[105], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 429 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8500,7 +8500,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 430 - FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 430 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8516,7 +8516,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 431 - FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 431 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8536,7 +8536,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 432 - FFV1_0( w_fp[38], w_fp[102], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[102], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 432 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8552,7 +8552,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 433 - FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 433 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8565,10 +8565,10 @@ namespace mg5amcCpu // *** DIAGRAM 434 OF 1240 *** // Wavefunction(s) for diagram number 434 - VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 434 - VVV1_0( w_fp[104], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 434 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8596,7 +8596,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 435 - VVV1_0( w_fp[104], w_fp[11], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[11], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 435 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8624,7 +8624,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 436 - VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -8641,7 +8641,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -8658,7 +8658,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -8679,10 +8679,10 @@ namespace mg5amcCpu // *** DIAGRAM 437 OF 1240 *** // Wavefunction(s) for diagram number 437 - VVV1P0_1( w_fp[1], w_fp[8], COUPs[0], 0., 0., w_fp[108] ); + VVV1P0_1( w_fp[1], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[108] ); // Amplitude(s) for diagram number 437 - VVV1_0( w_fp[62], w_fp[108], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[108], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 437 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8710,7 +8710,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 438 - VVV1_0( w_fp[62], w_fp[1], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 438 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8738,7 +8738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 439 - VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[24] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -8755,7 +8755,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[115] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; jamp_sv[42] += amp_sv[0]; @@ -8772,7 +8772,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -8796,7 +8796,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 440 - VVV1_0( w_fp[86], w_fp[108], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[108], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 440 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8824,7 +8824,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 441 - VVV1_0( w_fp[86], w_fp[1], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 441 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -8852,7 +8852,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 442 - VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[25] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -8869,7 +8869,7 @@ namespace mg5amcCpu jamp_sv[94] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[36] += amp_sv[0]; @@ -8886,7 +8886,7 @@ namespace mg5amcCpu jamp_sv[99] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -8907,12 +8907,12 @@ namespace mg5amcCpu // *** DIAGRAM 443 OF 1240 *** // Wavefunction(s) for diagram number 443 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[109] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[109] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 443 - VVV1_0( w_fp[8], w_fp[6], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[109], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -8929,7 +8929,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[110], COUPs[0], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -8946,7 +8946,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[115] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[111], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -8967,12 +8967,12 @@ namespace mg5amcCpu // *** DIAGRAM 444 OF 1240 *** // Wavefunction(s) for diagram number 444 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[112] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[113] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[114] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[112] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[113] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[114] ); // Amplitude(s) for diagram number 444 - VVV1_0( w_fp[8], w_fp[5], w_fp[112], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[112], COUPs[0], 1.0, &_fp[0] ); jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -8989,7 +8989,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[113], COUPs[0], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -9006,7 +9006,7 @@ namespace mg5amcCpu jamp_sv[94] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[114], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[114], COUPs[0], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -9030,7 +9030,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 445 - VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -9047,7 +9047,7 @@ namespace mg5amcCpu jamp_sv[94] -= amp_sv[0]; jamp_sv[115] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[90], COUPs[0], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[25] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -9064,7 +9064,7 @@ namespace mg5amcCpu jamp_sv[94] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[96], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[24] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -9088,7 +9088,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 446 - VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -9105,7 +9105,7 @@ namespace mg5amcCpu jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[9] -= amp_sv[0]; @@ -9122,7 +9122,7 @@ namespace mg5amcCpu jamp_sv[93] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -9146,7 +9146,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 447 - VVV1_0( w_fp[8], w_fp[29], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[29], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 447 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9174,7 +9174,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 448 - VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 448 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9202,7 +9202,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 449 - VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 449 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9230,7 +9230,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 450 - VVV1_0( w_fp[104], w_fp[45], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[45], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 450 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9250,7 +9250,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 451 - FFV1_0( w_fp[3], w_fp[44], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[44], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 451 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9266,7 +9266,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 452 - FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 452 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9280,7 +9280,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 453 - FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 453 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9294,7 +9294,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 454 - FFV1_0( w_fp[3], w_fp[89], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[89], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 454 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9310,7 +9310,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 455 - VVV1_0( w_fp[86], w_fp[1], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 455 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9330,7 +9330,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 456 - FFV1_0( w_fp[3], w_fp[39], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[112], COUPs[1], 1.0, &_fp[0] ); jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9339,7 +9339,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[113], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[113], COUPs[1], 1.0, &_fp[0] ); jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9348,7 +9348,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[114], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[114], COUPs[1], 1.0, &_fp[0] ); jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9364,7 +9364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 457 - FFV1_0( w_fp[41], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 457 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9380,7 +9380,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 458 - FFV1_0( w_fp[41], w_fp[105], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[105], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 458 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9394,7 +9394,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 459 - FFV1_0( w_fp[101], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[101], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 459 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9408,7 +9408,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 460 - VVV1_0( w_fp[104], w_fp[51], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[51], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 460 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9428,7 +9428,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 461 - FFV1_0( w_fp[3], w_fp[50], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[50], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 461 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9444,7 +9444,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 462 - FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 462 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9458,7 +9458,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 463 - FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 463 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9472,7 +9472,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 464 - FFV1_0( w_fp[3], w_fp[91], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[91], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 464 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9488,7 +9488,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 465 - VVV1_0( w_fp[62], w_fp[1], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 465 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9508,7 +9508,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 466 - FFV1_0( w_fp[3], w_fp[47], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9517,7 +9517,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9526,7 +9526,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9542,7 +9542,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 467 - FFV1_0( w_fp[38], w_fp[47], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 467 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9558,7 +9558,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 468 - FFV1_0( w_fp[38], w_fp[106], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[106], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 468 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9572,7 +9572,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 469 - FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 469 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9586,7 +9586,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 470 - VVV1_0( w_fp[104], w_fp[23], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[23], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 470 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9606,7 +9606,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 471 - FFV1_0( w_fp[48], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 471 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9622,7 +9622,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 472 - FFV1_0( w_fp[58], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 472 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9636,7 +9636,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 473 - FFV1_0( w_fp[48], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 473 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9650,7 +9650,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 474 - FFV1_0( w_fp[58], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 474 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9666,7 +9666,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 475 - VVV1_0( w_fp[86], w_fp[1], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 475 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9686,7 +9686,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 476 - FFV1_0( w_fp[38], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9695,7 +9695,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[113], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[113], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9704,7 +9704,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[114], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[114], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9720,7 +9720,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 477 - VVV1_0( w_fp[104], w_fp[20], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[20], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 477 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9740,7 +9740,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 478 - FFV1_0( w_fp[40], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 478 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9756,7 +9756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 479 - FFV1_0( w_fp[60], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 479 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9770,7 +9770,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 480 - FFV1_0( w_fp[40], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 480 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9784,7 +9784,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 481 - FFV1_0( w_fp[60], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 481 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9800,7 +9800,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 482 - VVV1_0( w_fp[62], w_fp[1], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 482 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9820,7 +9820,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 483 - FFV1_0( w_fp[41], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9829,7 +9829,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9838,7 +9838,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9854,7 +9854,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 484 - FFV1_0( w_fp[3], w_fp[18], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[18], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 484 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9874,7 +9874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 485 - FFV1_0( w_fp[12], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 485 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9894,7 +9894,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 486 - FFV1_0( w_fp[3], w_fp[102], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 486 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9914,7 +9914,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 487 - FFV1_0( w_fp[12], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 487 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9930,7 +9930,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 488 - FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 488 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9950,7 +9950,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 489 - FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 489 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -9966,7 +9966,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 490 - FFV1_0( w_fp[3], w_fp[102], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9975,7 +9975,7 @@ namespace mg5amcCpu jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; @@ -9984,7 +9984,7 @@ namespace mg5amcCpu jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -10000,7 +10000,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 491 - FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[40] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; @@ -10009,7 +10009,7 @@ namespace mg5amcCpu jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -10018,7 +10018,7 @@ namespace mg5amcCpu jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -10034,7 +10034,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 492 - VVV1_0( w_fp[92], w_fp[55], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[55], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[9] += amp_sv[0]; @@ -10051,7 +10051,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[83], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[83], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[7] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; @@ -10068,7 +10068,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[84], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[84], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -10089,11 +10089,11 @@ namespace mg5amcCpu // *** DIAGRAM 493 OF 1240 *** // Wavefunction(s) for diagram number 493 - VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 0., 0., w_fp[92] ); - FFV1_2( w_fp[3], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[92] ); + FFV1_2( w_fp[3], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 493 - FFV1_0( w_fp[99], w_fp[87], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[87], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 493 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10107,7 +10107,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 494 - FFV1_0( w_fp[99], w_fp[85], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[85], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 494 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10118,10 +10118,10 @@ namespace mg5amcCpu // *** DIAGRAM 495 OF 1240 *** // Wavefunction(s) for diagram number 495 - VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 0., 0., w_fp[102] ); + VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[102] ); // Amplitude(s) for diagram number 495 - VVV1_0( w_fp[102], w_fp[34], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[34], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 495 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10141,7 +10141,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 496 - FFV1_0( w_fp[3], w_fp[85], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[85], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 496 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10154,10 +10154,10 @@ namespace mg5amcCpu // *** DIAGRAM 497 OF 1240 *** // Wavefunction(s) for diagram number 497 - VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 497 - VVV1_0( w_fp[104], w_fp[34], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[34], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 497 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10177,7 +10177,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 498 - FFV1_0( w_fp[3], w_fp[87], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[87], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 498 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10190,12 +10190,12 @@ namespace mg5amcCpu // *** DIAGRAM 499 OF 1240 *** // Wavefunction(s) for diagram number 499 - VVVV1P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[111] ); - VVVV3P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[109] ); + VVVV1P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[111] ); + VVVV3P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[109] ); // Amplitude(s) for diagram number 499 - FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[34] += cxtype( 0, 1 ) * amp_sv[0]; @@ -10204,7 +10204,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -10213,7 +10213,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -10226,10 +10226,10 @@ namespace mg5amcCpu // *** DIAGRAM 500 OF 1240 *** // Wavefunction(s) for diagram number 500 - FFV1_1( w_fp[77], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[62] ); + FFV1_1( w_fp[77], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[62] ); // Amplitude(s) for diagram number 500 - FFV1_0( w_fp[46], w_fp[62], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[62], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 500 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10240,10 +10240,10 @@ namespace mg5amcCpu // *** DIAGRAM 501 OF 1240 *** // Wavefunction(s) for diagram number 501 - FFV1_2( w_fp[46], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[114] ); + FFV1_2( w_fp[46], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[114] ); // Amplitude(s) for diagram number 501 - FFV1_0( w_fp[114], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[114], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 501 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10257,7 +10257,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 502 - FFV1_0( w_fp[46], w_fp[77], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 502 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10273,7 +10273,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 503 - FFV1_0( w_fp[41], w_fp[62], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[62], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 503 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10284,10 +10284,10 @@ namespace mg5amcCpu // *** DIAGRAM 504 OF 1240 *** // Wavefunction(s) for diagram number 504 - FFV1_2( w_fp[41], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[113] ); + FFV1_2( w_fp[41], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[113] ); // Amplitude(s) for diagram number 504 - FFV1_0( w_fp[113], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[113], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 504 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10301,7 +10301,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 505 - FFV1_0( w_fp[41], w_fp[77], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 505 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10317,7 +10317,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 506 - FFV1_0( w_fp[3], w_fp[62], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[62], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 506 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10333,7 +10333,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 507 - FFV1_0( w_fp[99], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 507 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10346,10 +10346,10 @@ namespace mg5amcCpu // *** DIAGRAM 508 OF 1240 *** // Wavefunction(s) for diagram number 508 - VVV1P0_1( w_fp[92], w_fp[27], COUPs[0], 0., 0., w_fp[62] ); + VVV1P0_1( w_fp[92], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[62] ); // Amplitude(s) for diagram number 508 - FFV1_0( w_fp[3], w_fp[77], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 508 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10366,10 +10366,10 @@ namespace mg5amcCpu // *** DIAGRAM 509 OF 1240 *** // Wavefunction(s) for diagram number 509 - FFV1_1( w_fp[2], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[112] ); + FFV1_1( w_fp[2], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[112] ); // Amplitude(s) for diagram number 509 - FFV1_0( w_fp[56], w_fp[112], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[112], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 509 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10383,7 +10383,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 510 - FFV1_0( w_fp[21], w_fp[112], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[112], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 510 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10397,7 +10397,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 511 - VVV1_0( w_fp[102], w_fp[103], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[103], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 511 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10417,7 +10417,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 512 - FFV1_0( w_fp[21], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 512 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10433,7 +10433,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 513 - VVV1_0( w_fp[104], w_fp[103], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[103], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 513 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10453,7 +10453,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 514 - FFV1_0( w_fp[56], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 514 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10469,7 +10469,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 515 - FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; @@ -10478,7 +10478,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -10487,7 +10487,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -10500,10 +10500,10 @@ namespace mg5amcCpu // *** DIAGRAM 516 OF 1240 *** // Wavefunction(s) for diagram number 516 - FFV1_2( w_fp[52], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[86] ); + FFV1_2( w_fp[52], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[86] ); // Amplitude(s) for diagram number 516 - FFV1_0( w_fp[86], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 516 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10514,10 +10514,10 @@ namespace mg5amcCpu // *** DIAGRAM 517 OF 1240 *** // Wavefunction(s) for diagram number 517 - FFV1_1( w_fp[33], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + FFV1_1( w_fp[33], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 517 - FFV1_0( w_fp[52], w_fp[98], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[98], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 517 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10531,7 +10531,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 518 - FFV1_0( w_fp[52], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 518 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10547,7 +10547,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 519 - FFV1_0( w_fp[86], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 519 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10558,10 +10558,10 @@ namespace mg5amcCpu // *** DIAGRAM 520 OF 1240 *** // Wavefunction(s) for diagram number 520 - FFV1_1( w_fp[47], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[106] ); + FFV1_1( w_fp[47], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[106] ); // Amplitude(s) for diagram number 520 - FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 520 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10575,7 +10575,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 521 - FFV1_0( w_fp[52], w_fp[47], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 521 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10591,7 +10591,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 522 - FFV1_0( w_fp[86], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 522 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10607,7 +10607,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 523 - FFV1_0( w_fp[52], w_fp[112], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[112], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 523 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10623,7 +10623,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 524 - FFV1_0( w_fp[52], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 524 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10643,7 +10643,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 525 - FFV1_0( w_fp[65], w_fp[112], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[112], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 525 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10659,7 +10659,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 526 - FFV1_0( w_fp[3], w_fp[112], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 526 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10679,7 +10679,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 527 - FFV1_0( w_fp[99], w_fp[93], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[93], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 527 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10695,7 +10695,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 528 - FFV1_0( w_fp[99], w_fp[2], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 528 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10715,7 +10715,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 529 - FFV1_0( w_fp[3], w_fp[93], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[93], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 529 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10735,7 +10735,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 530 - FFV1_0( w_fp[65], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 530 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10755,7 +10755,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 531 - VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -10772,7 +10772,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -10789,7 +10789,7 @@ namespace mg5amcCpu jamp_sv[105] -= amp_sv[0]; jamp_sv[110] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -10810,10 +10810,10 @@ namespace mg5amcCpu // *** DIAGRAM 532 OF 1240 *** // Wavefunction(s) for diagram number 532 - VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 532 - VVV1_0( w_fp[8], w_fp[6], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 532 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10838,10 +10838,10 @@ namespace mg5amcCpu // *** DIAGRAM 533 OF 1240 *** // Wavefunction(s) for diagram number 533 - VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 0., 0., w_fp[101] ); + VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[101] ); // Amplitude(s) for diagram number 533 - VVV1_0( w_fp[61], w_fp[6], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 533 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10869,7 +10869,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 534 - VVV1_0( w_fp[61], w_fp[8], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[8], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 534 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10897,7 +10897,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 535 - FFV1_0( w_fp[3], w_fp[47], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 535 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10917,7 +10917,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 536 - FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 536 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10933,7 +10933,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 537 - FFV1_0( w_fp[99], w_fp[47], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 537 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10949,7 +10949,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 538 - FFV1_0( w_fp[41], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 538 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10969,7 +10969,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 539 - FFV1_0( w_fp[41], w_fp[112], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[112], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 539 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -10985,7 +10985,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 540 - FFV1_0( w_fp[113], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[113], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 540 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11001,7 +11001,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 541 - FFV1_0( w_fp[76], w_fp[112], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[112], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 541 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11017,7 +11017,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 542 - FFV1_0( w_fp[3], w_fp[112], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 542 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11037,7 +11037,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 543 - FFV1_0( w_fp[99], w_fp[97], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[97], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 543 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11053,7 +11053,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 544 - FFV1_0( w_fp[99], w_fp[2], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 544 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11073,7 +11073,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 545 - FFV1_0( w_fp[3], w_fp[97], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[97], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 545 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11093,7 +11093,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 546 - FFV1_0( w_fp[76], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 546 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11113,7 +11113,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 547 - VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -11130,7 +11130,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[103] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[13] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; @@ -11147,7 +11147,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[43] += amp_sv[0]; @@ -11168,10 +11168,10 @@ namespace mg5amcCpu // *** DIAGRAM 548 OF 1240 *** // Wavefunction(s) for diagram number 548 - VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 548 - VVV1_0( w_fp[8], w_fp[4], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 548 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11199,7 +11199,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 549 - VVV1_0( w_fp[72], w_fp[4], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 549 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11227,7 +11227,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 550 - VVV1_0( w_fp[72], w_fp[8], w_fp[102], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[8], w_fp[102], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 550 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11255,7 +11255,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 551 - FFV1_0( w_fp[3], w_fp[33], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 551 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11275,7 +11275,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 552 - FFV1_0( w_fp[3], w_fp[98], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[98], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 552 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11291,7 +11291,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 553 - FFV1_0( w_fp[99], w_fp[33], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 553 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11307,7 +11307,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 554 - FFV1_0( w_fp[46], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 554 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11327,7 +11327,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 555 - FFV1_0( w_fp[46], w_fp[112], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[112], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 555 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11343,7 +11343,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 556 - FFV1_0( w_fp[114], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[114], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 556 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11356,10 +11356,10 @@ namespace mg5amcCpu // *** DIAGRAM 557 OF 1240 *** // Wavefunction(s) for diagram number 557 - VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 557 - VVV1_0( w_fp[86], w_fp[13], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[13], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 557 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11387,7 +11387,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 558 - VVV1_0( w_fp[86], w_fp[11], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[11], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 558 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11415,7 +11415,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 559 - VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -11432,7 +11432,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -11449,7 +11449,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -11473,7 +11473,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 560 - VVV1_0( w_fp[102], w_fp[108], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[108], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 560 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11501,7 +11501,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 561 - VVV1_0( w_fp[102], w_fp[1], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[1], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 561 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11529,7 +11529,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 562 - VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], 1.0, &_fp[0] ); jamp_sv[15] += amp_sv[0]; jamp_sv[26] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -11546,7 +11546,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[43] += amp_sv[0]; @@ -11563,7 +11563,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -11587,7 +11587,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 563 - VVV1_0( w_fp[104], w_fp[108], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[108], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 563 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11615,7 +11615,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 564 - VVV1_0( w_fp[104], w_fp[1], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[1], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 564 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11643,7 +11643,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 565 - VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[17] += amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -11660,7 +11660,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[101] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -11677,7 +11677,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -11698,12 +11698,12 @@ namespace mg5amcCpu // *** DIAGRAM 566 OF 1240 *** // Wavefunction(s) for diagram number 566 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[105] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[107] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[105] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[107] ); // Amplitude(s) for diagram number 566 - VVV1_0( w_fp[8], w_fp[6], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[105], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -11720,7 +11720,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[95], COUPs[0], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -11737,7 +11737,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[107], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -11758,12 +11758,12 @@ namespace mg5amcCpu // *** DIAGRAM 567 OF 1240 *** // Wavefunction(s) for diagram number 567 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[96] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[90] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[88] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[96] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[88] ); // Amplitude(s) for diagram number 567 - VVV1_0( w_fp[8], w_fp[4], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[96], COUPs[0], 1.0, &_fp[0] ); jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -11780,7 +11780,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[103] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -11797,7 +11797,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[88], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[88], COUPs[0], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -11821,7 +11821,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 568 - VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], 1.0, &_fp[0] ); jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -11838,7 +11838,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], 1.0, &_fp[0] ); jamp_sv[17] += amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -11855,7 +11855,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[101] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], 1.0, &_fp[0] ); jamp_sv[15] += amp_sv[0]; jamp_sv[26] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -11879,7 +11879,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 569 - VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[26] -= amp_sv[0]; @@ -11896,7 +11896,7 @@ namespace mg5amcCpu jamp_sv[110] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[15] -= amp_sv[0]; @@ -11913,7 +11913,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[110] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -11937,7 +11937,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 570 - VVV1_0( w_fp[8], w_fp[27], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[27], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 570 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11965,7 +11965,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 571 - VVV1_0( w_fp[1], w_fp[27], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 571 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -11993,7 +11993,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 572 - VVV1_0( w_fp[1], w_fp[8], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 572 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12021,7 +12021,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 573 - VVV1_0( w_fp[86], w_fp[37], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[37], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 573 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12041,7 +12041,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 574 - FFV1_0( w_fp[3], w_fp[36], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[36], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 574 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12057,7 +12057,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 575 - FFV1_0( w_fp[99], w_fp[100], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[100], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 575 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12071,7 +12071,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 576 - FFV1_0( w_fp[99], w_fp[36], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[36], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 576 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12085,7 +12085,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 577 - FFV1_0( w_fp[3], w_fp[100], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[100], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 577 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12101,7 +12101,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 578 - VVV1_0( w_fp[104], w_fp[1], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[1], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 578 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12121,7 +12121,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 579 - FFV1_0( w_fp[3], w_fp[33], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[96], COUPs[1], 1.0, &_fp[0] ); jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12130,7 +12130,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12139,7 +12139,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[88], COUPs[1], 1.0, &_fp[0] ); jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12155,7 +12155,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 580 - FFV1_0( w_fp[41], w_fp[33], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 580 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12171,7 +12171,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 581 - FFV1_0( w_fp[41], w_fp[98], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[98], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 581 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12185,7 +12185,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 582 - FFV1_0( w_fp[113], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[113], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 582 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12199,7 +12199,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 583 - VVV1_0( w_fp[86], w_fp[51], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[51], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 583 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12219,7 +12219,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 584 - FFV1_0( w_fp[3], w_fp[49], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[49], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 584 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12235,7 +12235,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 585 - FFV1_0( w_fp[99], w_fp[91], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[91], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 585 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12249,7 +12249,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 586 - FFV1_0( w_fp[99], w_fp[49], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[49], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 586 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12263,7 +12263,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 587 - FFV1_0( w_fp[3], w_fp[91], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[91], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 587 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12279,7 +12279,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 588 - VVV1_0( w_fp[102], w_fp[1], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[1], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 588 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12299,7 +12299,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 589 - FFV1_0( w_fp[3], w_fp[47], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[105], COUPs[1], 1.0, &_fp[0] ); jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12308,7 +12308,7 @@ namespace mg5amcCpu jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[95], COUPs[1], 1.0, &_fp[0] ); jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12317,7 +12317,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[107], COUPs[1], 1.0, &_fp[0] ); jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12333,7 +12333,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 590 - FFV1_0( w_fp[46], w_fp[47], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 590 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12349,7 +12349,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 591 - FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 591 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12363,7 +12363,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 592 - FFV1_0( w_fp[114], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[114], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 592 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12377,7 +12377,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 593 - VVV1_0( w_fp[86], w_fp[54], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[54], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 593 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12397,7 +12397,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 594 - FFV1_0( w_fp[53], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 594 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12413,7 +12413,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 595 - FFV1_0( w_fp[78], w_fp[112], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[112], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 595 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12427,7 +12427,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 596 - FFV1_0( w_fp[53], w_fp[112], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[112], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 596 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12441,7 +12441,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 597 - FFV1_0( w_fp[78], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 597 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12457,7 +12457,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 598 - VVV1_0( w_fp[104], w_fp[1], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[1], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 598 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12477,7 +12477,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 599 - FFV1_0( w_fp[46], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12486,7 +12486,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12495,7 +12495,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[88], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12511,7 +12511,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 600 - VVV1_0( w_fp[86], w_fp[20], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[20], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 600 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12531,7 +12531,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 601 - FFV1_0( w_fp[28], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 601 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12547,7 +12547,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 602 - FFV1_0( w_fp[60], w_fp[112], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[112], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 602 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12561,7 +12561,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 603 - FFV1_0( w_fp[28], w_fp[112], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[112], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 603 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12575,7 +12575,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 604 - FFV1_0( w_fp[60], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 604 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12591,7 +12591,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 605 - VVV1_0( w_fp[102], w_fp[1], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[1], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 605 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12611,7 +12611,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 606 - FFV1_0( w_fp[41], w_fp[2], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[105], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[14] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12620,7 +12620,7 @@ namespace mg5amcCpu jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); jamp_sv[14] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12629,7 +12629,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[107], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12645,7 +12645,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 607 - FFV1_0( w_fp[3], w_fp[15], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[15], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 607 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12665,7 +12665,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 608 - FFV1_0( w_fp[14], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 608 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12685,7 +12685,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 609 - FFV1_0( w_fp[3], w_fp[112], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 609 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12705,7 +12705,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 610 - FFV1_0( w_fp[14], w_fp[112], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[112], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 610 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12721,7 +12721,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 611 - FFV1_0( w_fp[99], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 611 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12741,7 +12741,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 612 - FFV1_0( w_fp[99], w_fp[15], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[15], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 612 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12757,7 +12757,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 613 - FFV1_0( w_fp[3], w_fp[112], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12766,7 +12766,7 @@ namespace mg5amcCpu jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[112], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[14] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12775,7 +12775,7 @@ namespace mg5amcCpu jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[112], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[14] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -12791,7 +12791,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 614 - FFV1_0( w_fp[99], w_fp[2], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[34] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12800,7 +12800,7 @@ namespace mg5amcCpu jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -12809,7 +12809,7 @@ namespace mg5amcCpu jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[34] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -12825,7 +12825,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 615 - VVV1_0( w_fp[92], w_fp[57], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[57], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[15] += amp_sv[0]; @@ -12842,7 +12842,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[81], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[81], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[13] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; @@ -12859,7 +12859,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[82], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[82], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -12880,11 +12880,11 @@ namespace mg5amcCpu // *** DIAGRAM 616 OF 1240 *** // Wavefunction(s) for diagram number 616 - VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 0., 0., w_fp[92] ); - FFV1_2( w_fp[3], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[92] ); + FFV1_2( w_fp[3], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 616 - FFV1_0( w_fp[99], w_fp[87], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[87], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 616 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12898,7 +12898,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 617 - FFV1_0( w_fp[99], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 617 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12909,10 +12909,10 @@ namespace mg5amcCpu // *** DIAGRAM 618 OF 1240 *** // Wavefunction(s) for diagram number 618 - VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 0., 0., w_fp[112] ); + VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[112] ); // Amplitude(s) for diagram number 618 - VVV1_0( w_fp[112], w_fp[34], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[34], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 618 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12932,7 +12932,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 619 - FFV1_0( w_fp[3], w_fp[9], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 619 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12945,10 +12945,10 @@ namespace mg5amcCpu // *** DIAGRAM 620 OF 1240 *** // Wavefunction(s) for diagram number 620 - VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 620 - VVV1_0( w_fp[86], w_fp[34], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[34], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 620 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12968,7 +12968,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 621 - FFV1_0( w_fp[3], w_fp[87], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[87], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 621 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -12981,12 +12981,12 @@ namespace mg5amcCpu // *** DIAGRAM 622 OF 1240 *** // Wavefunction(s) for diagram number 622 - VVVV1P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[107] ); - VVVV3P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[105] ); + VVVV1P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[107] ); + VVVV3P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[105] ); // Amplitude(s) for diagram number 622 - FFV1_0( w_fp[3], w_fp[77], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[107], COUPs[1], 1.0, &_fp[0] ); jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -12995,7 +12995,7 @@ namespace mg5amcCpu jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], 1.0, &_fp[0] ); jamp_sv[29] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -13004,7 +13004,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[105], COUPs[1], 1.0, &_fp[0] ); jamp_sv[28] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[34] += cxtype( 0, 1 ) * amp_sv[0]; @@ -13017,10 +13017,10 @@ namespace mg5amcCpu // *** DIAGRAM 623 OF 1240 *** // Wavefunction(s) for diagram number 623 - FFV1_1( w_fp[77], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[102] ); + FFV1_1( w_fp[77], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[102] ); // Amplitude(s) for diagram number 623 - FFV1_0( w_fp[46], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 623 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13031,10 +13031,10 @@ namespace mg5amcCpu // *** DIAGRAM 624 OF 1240 *** // Wavefunction(s) for diagram number 624 - FFV1_2( w_fp[46], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[88] ); + FFV1_2( w_fp[46], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[88] ); // Amplitude(s) for diagram number 624 - FFV1_0( w_fp[88], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 624 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13048,7 +13048,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 625 - FFV1_0( w_fp[46], w_fp[77], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 625 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13064,7 +13064,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 626 - FFV1_0( w_fp[38], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 626 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13075,10 +13075,10 @@ namespace mg5amcCpu // *** DIAGRAM 627 OF 1240 *** // Wavefunction(s) for diagram number 627 - FFV1_2( w_fp[38], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[90] ); + FFV1_2( w_fp[38], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[90] ); // Amplitude(s) for diagram number 627 - FFV1_0( w_fp[90], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 627 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13092,7 +13092,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 628 - FFV1_0( w_fp[38], w_fp[77], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 628 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13108,7 +13108,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 629 - FFV1_0( w_fp[3], w_fp[102], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 629 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13124,7 +13124,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 630 - FFV1_0( w_fp[99], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 630 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13137,10 +13137,10 @@ namespace mg5amcCpu // *** DIAGRAM 631 OF 1240 *** // Wavefunction(s) for diagram number 631 - VVV1P0_1( w_fp[92], w_fp[24], COUPs[0], 0., 0., w_fp[102] ); + VVV1P0_1( w_fp[92], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[102] ); // Amplitude(s) for diagram number 631 - FFV1_0( w_fp[3], w_fp[77], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 631 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13157,10 +13157,10 @@ namespace mg5amcCpu // *** DIAGRAM 632 OF 1240 *** // Wavefunction(s) for diagram number 632 - FFV1_1( w_fp[2], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[96] ); + FFV1_1( w_fp[2], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[96] ); // Amplitude(s) for diagram number 632 - FFV1_0( w_fp[56], w_fp[96], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[96], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 632 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13174,7 +13174,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 633 - FFV1_0( w_fp[22], w_fp[96], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[96], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 633 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13188,7 +13188,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 634 - VVV1_0( w_fp[112], w_fp[103], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[103], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 634 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13208,7 +13208,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 635 - FFV1_0( w_fp[22], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 635 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13224,7 +13224,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 636 - VVV1_0( w_fp[86], w_fp[103], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[103], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 636 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13244,7 +13244,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 637 - FFV1_0( w_fp[56], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 637 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13260,7 +13260,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 638 - FFV1_0( w_fp[52], w_fp[2], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[107], COUPs[1], 1.0, &_fp[0] ); jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -13269,7 +13269,7 @@ namespace mg5amcCpu jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -13278,7 +13278,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[105], COUPs[1], 1.0, &_fp[0] ); jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; @@ -13291,10 +13291,10 @@ namespace mg5amcCpu // *** DIAGRAM 639 OF 1240 *** // Wavefunction(s) for diagram number 639 - FFV1_2( w_fp[52], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[104] ); + FFV1_2( w_fp[52], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[104] ); // Amplitude(s) for diagram number 639 - FFV1_0( w_fp[104], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 639 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13305,10 +13305,10 @@ namespace mg5amcCpu // *** DIAGRAM 640 OF 1240 *** // Wavefunction(s) for diagram number 640 - FFV1_1( w_fp[33], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[114] ); + FFV1_1( w_fp[33], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[114] ); // Amplitude(s) for diagram number 640 - FFV1_0( w_fp[52], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 640 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13322,7 +13322,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 641 - FFV1_0( w_fp[52], w_fp[33], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 641 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13338,7 +13338,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 642 - FFV1_0( w_fp[104], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 642 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13349,10 +13349,10 @@ namespace mg5amcCpu // *** DIAGRAM 643 OF 1240 *** // Wavefunction(s) for diagram number 643 - FFV1_1( w_fp[39], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[106] ); + FFV1_1( w_fp[39], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[106] ); // Amplitude(s) for diagram number 643 - FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 643 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13366,7 +13366,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 644 - FFV1_0( w_fp[52], w_fp[39], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 644 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13382,7 +13382,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 645 - FFV1_0( w_fp[104], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 645 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13398,7 +13398,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 646 - FFV1_0( w_fp[52], w_fp[96], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[96], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 646 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13414,7 +13414,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 647 - FFV1_0( w_fp[52], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 647 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13434,7 +13434,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 648 - FFV1_0( w_fp[65], w_fp[96], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[96], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 648 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13450,7 +13450,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 649 - FFV1_0( w_fp[3], w_fp[96], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 649 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13470,7 +13470,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 650 - FFV1_0( w_fp[99], w_fp[93], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[93], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 650 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13486,7 +13486,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 651 - FFV1_0( w_fp[99], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 651 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13506,7 +13506,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 652 - FFV1_0( w_fp[3], w_fp[93], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[93], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 652 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13526,7 +13526,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 653 - FFV1_0( w_fp[65], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 653 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13546,7 +13546,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 654 - VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -13563,7 +13563,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[96] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[22] -= amp_sv[0]; @@ -13580,7 +13580,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -13601,10 +13601,10 @@ namespace mg5amcCpu // *** DIAGRAM 655 OF 1240 *** // Wavefunction(s) for diagram number 655 - VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 655 - VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 655 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13629,10 +13629,10 @@ namespace mg5amcCpu // *** DIAGRAM 656 OF 1240 *** // Wavefunction(s) for diagram number 656 - VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 0., 0., w_fp[113] ); + VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[113] ); // Amplitude(s) for diagram number 656 - VVV1_0( w_fp[61], w_fp[5], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[113], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 656 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13660,7 +13660,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 657 - VVV1_0( w_fp[61], w_fp[8], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[8], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 657 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13688,7 +13688,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 658 - FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 658 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13708,7 +13708,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 659 - FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 659 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13724,7 +13724,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 660 - FFV1_0( w_fp[99], w_fp[39], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 660 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13740,7 +13740,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 661 - FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 661 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13760,7 +13760,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 662 - FFV1_0( w_fp[38], w_fp[96], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[96], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 662 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13776,7 +13776,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 663 - FFV1_0( w_fp[90], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 663 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13792,7 +13792,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 664 - FFV1_0( w_fp[71], w_fp[96], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[96], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 664 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13808,7 +13808,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 665 - FFV1_0( w_fp[3], w_fp[96], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 665 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13828,7 +13828,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 666 - FFV1_0( w_fp[99], w_fp[94], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[94], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 666 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13844,7 +13844,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 667 - FFV1_0( w_fp[99], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 667 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13864,7 +13864,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 668 - FFV1_0( w_fp[3], w_fp[94], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[94], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 668 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13884,7 +13884,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 669 - FFV1_0( w_fp[71], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 669 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13904,7 +13904,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 670 - VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[19] += amp_sv[0]; jamp_sv[22] -= amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -13921,7 +13921,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[97] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[19] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -13938,7 +13938,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; jamp_sv[37] += amp_sv[0]; @@ -13959,10 +13959,10 @@ namespace mg5amcCpu // *** DIAGRAM 671 OF 1240 *** // Wavefunction(s) for diagram number 671 - VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 671 - VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 671 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -13990,7 +13990,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 672 - VVV1_0( w_fp[66], w_fp[4], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[113], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 672 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14018,7 +14018,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 673 - VVV1_0( w_fp[66], w_fp[8], w_fp[112], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[8], w_fp[112], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 673 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14046,7 +14046,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 674 - FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 674 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14066,7 +14066,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 675 - FFV1_0( w_fp[3], w_fp[114], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 675 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14082,7 +14082,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 676 - FFV1_0( w_fp[99], w_fp[33], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 676 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14098,7 +14098,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 677 - FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 677 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14118,7 +14118,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 678 - FFV1_0( w_fp[46], w_fp[96], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[96], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 678 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14134,7 +14134,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 679 - FFV1_0( w_fp[88], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 679 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14147,10 +14147,10 @@ namespace mg5amcCpu // *** DIAGRAM 680 OF 1240 *** // Wavefunction(s) for diagram number 680 - VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 680 - VVV1_0( w_fp[104], w_fp[13], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[13], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 680 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14178,7 +14178,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 681 - VVV1_0( w_fp[104], w_fp[10], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[10], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 681 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14206,7 +14206,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 682 - VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -14223,7 +14223,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -14240,7 +14240,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -14264,7 +14264,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 683 - VVV1_0( w_fp[112], w_fp[108], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[108], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 683 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14292,7 +14292,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 684 - VVV1_0( w_fp[112], w_fp[1], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[1], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 684 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14320,7 +14320,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 685 - VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], 1.0, &_fp[0] ); jamp_sv[21] += amp_sv[0]; jamp_sv[28] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -14337,7 +14337,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; jamp_sv[37] += amp_sv[0]; @@ -14354,7 +14354,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -14378,7 +14378,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 686 - VVV1_0( w_fp[86], w_fp[108], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[108], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 686 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14406,7 +14406,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 687 - VVV1_0( w_fp[86], w_fp[1], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 687 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14434,7 +14434,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 688 - VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[23] += amp_sv[0]; jamp_sv[29] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -14451,7 +14451,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -14468,7 +14468,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -14489,12 +14489,12 @@ namespace mg5amcCpu // *** DIAGRAM 689 OF 1240 *** // Wavefunction(s) for diagram number 689 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[98] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[62] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[101] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[98] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[62] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[101] ); // Amplitude(s) for diagram number 689 - VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -14511,7 +14511,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[96] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -14528,7 +14528,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[101], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -14549,12 +14549,12 @@ namespace mg5amcCpu // *** DIAGRAM 690 OF 1240 *** // Wavefunction(s) for diagram number 690 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[109] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[109] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 690 - VVV1_0( w_fp[8], w_fp[4], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[109], COUPs[0], 1.0, &_fp[0] ); jamp_sv[19] += amp_sv[0]; jamp_sv[22] -= amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -14571,7 +14571,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[97] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[110], COUPs[0], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -14588,7 +14588,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[111], COUPs[0], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -14612,7 +14612,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 691 - VVV1_0( w_fp[1], w_fp[8], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[107], COUPs[0], 1.0, &_fp[0] ); jamp_sv[21] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -14629,7 +14629,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[99] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], 1.0, &_fp[0] ); jamp_sv[23] += amp_sv[0]; jamp_sv[29] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -14646,7 +14646,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[105], COUPs[0], 1.0, &_fp[0] ); jamp_sv[21] += amp_sv[0]; jamp_sv[28] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -14670,7 +14670,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 692 - VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[28] -= amp_sv[0]; @@ -14687,7 +14687,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[96] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; @@ -14704,7 +14704,7 @@ namespace mg5amcCpu jamp_sv[97] += amp_sv[0]; jamp_sv[99] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); jamp_sv[21] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -14728,7 +14728,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 693 - VVV1_0( w_fp[8], w_fp[24], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[24], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 693 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14756,7 +14756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 694 - VVV1_0( w_fp[1], w_fp[24], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[113], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 694 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14784,7 +14784,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 695 - VVV1_0( w_fp[1], w_fp[8], w_fp[102], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[102], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 695 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14812,7 +14812,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 696 - VVV1_0( w_fp[104], w_fp[37], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[37], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 696 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14832,7 +14832,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 697 - FFV1_0( w_fp[3], w_fp[35], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[35], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 697 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14848,7 +14848,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 698 - FFV1_0( w_fp[99], w_fp[100], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[100], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 698 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14862,7 +14862,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 699 - FFV1_0( w_fp[99], w_fp[35], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[35], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 699 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14876,7 +14876,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 700 - FFV1_0( w_fp[3], w_fp[100], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[100], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 700 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14892,7 +14892,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 701 - VVV1_0( w_fp[86], w_fp[1], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 701 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14912,7 +14912,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 702 - FFV1_0( w_fp[3], w_fp[33], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -14921,7 +14921,7 @@ namespace mg5amcCpu jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[53] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -14930,7 +14930,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; @@ -14946,7 +14946,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 703 - FFV1_0( w_fp[38], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 703 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14962,7 +14962,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 704 - FFV1_0( w_fp[38], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 704 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14976,7 +14976,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 705 - FFV1_0( w_fp[90], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 705 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -14990,7 +14990,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 706 - VVV1_0( w_fp[104], w_fp[45], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[45], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 706 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15010,7 +15010,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 707 - FFV1_0( w_fp[3], w_fp[43], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[43], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 707 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15026,7 +15026,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 708 - FFV1_0( w_fp[99], w_fp[89], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[89], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 708 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15040,7 +15040,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 709 - FFV1_0( w_fp[99], w_fp[43], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[43], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 709 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15054,7 +15054,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 710 - FFV1_0( w_fp[3], w_fp[89], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[89], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 710 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15070,7 +15070,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 711 - VVV1_0( w_fp[112], w_fp[1], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[1], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 711 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15090,7 +15090,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 712 - FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15099,7 +15099,7 @@ namespace mg5amcCpu jamp_sv[87] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], 1.0, &_fp[0] ); jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15108,7 +15108,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[101], COUPs[1], 1.0, &_fp[0] ); jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15124,7 +15124,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 713 - FFV1_0( w_fp[46], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 713 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15140,7 +15140,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 714 - FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 714 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15154,7 +15154,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 715 - FFV1_0( w_fp[88], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 715 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15168,7 +15168,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 716 - VVV1_0( w_fp[104], w_fp[54], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[54], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 716 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15188,7 +15188,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 717 - FFV1_0( w_fp[7], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 717 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15204,7 +15204,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 718 - FFV1_0( w_fp[78], w_fp[96], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[96], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 718 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15218,7 +15218,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 719 - FFV1_0( w_fp[7], w_fp[96], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[96], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 719 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15232,7 +15232,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 720 - FFV1_0( w_fp[78], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 720 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15248,7 +15248,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 721 - VVV1_0( w_fp[86], w_fp[1], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 721 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15268,7 +15268,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 722 - FFV1_0( w_fp[46], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15277,7 +15277,7 @@ namespace mg5amcCpu jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15286,7 +15286,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15302,7 +15302,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 723 - VVV1_0( w_fp[104], w_fp[23], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[23], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 723 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15322,7 +15322,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 724 - FFV1_0( w_fp[25], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 724 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15338,7 +15338,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 725 - FFV1_0( w_fp[58], w_fp[96], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[96], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 725 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15352,7 +15352,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 726 - FFV1_0( w_fp[25], w_fp[96], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[96], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 726 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15366,7 +15366,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 727 - FFV1_0( w_fp[58], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 727 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15382,7 +15382,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 728 - VVV1_0( w_fp[112], w_fp[1], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[1], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 728 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15402,7 +15402,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 729 - FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15411,7 +15411,7 @@ namespace mg5amcCpu jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15420,7 +15420,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15436,7 +15436,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 730 - FFV1_0( w_fp[3], w_fp[17], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 730 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15456,7 +15456,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 731 - FFV1_0( w_fp[26], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 731 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15476,7 +15476,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 732 - FFV1_0( w_fp[3], w_fp[96], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 732 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15496,7 +15496,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 733 - FFV1_0( w_fp[26], w_fp[96], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[96], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 733 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15512,7 +15512,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 734 - FFV1_0( w_fp[99], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 734 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15532,7 +15532,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 735 - FFV1_0( w_fp[99], w_fp[17], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[17], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 735 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15548,7 +15548,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 736 - FFV1_0( w_fp[3], w_fp[96], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15557,7 +15557,7 @@ namespace mg5amcCpu jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[96], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15566,7 +15566,7 @@ namespace mg5amcCpu jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[96], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -15582,7 +15582,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 737 - FFV1_0( w_fp[99], w_fp[2], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[32] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[38] += cxtype( 0, 1 ) * amp_sv[0]; @@ -15591,7 +15591,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[87] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[38] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -15600,7 +15600,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[33] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -15616,7 +15616,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 738 - VVV1_0( w_fp[92], w_fp[73], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[73], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -15633,7 +15633,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[92], w_fp[79], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[79], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[19] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -15650,7 +15650,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[92], w_fp[80], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[80], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[22] -= amp_sv[0]; @@ -15671,10 +15671,10 @@ namespace mg5amcCpu // *** DIAGRAM 739 OF 1240 *** // Wavefunction(s) for diagram number 739 - FFV1_1( w_fp[77], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[92] ); + FFV1_1( w_fp[77], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[92] ); // Amplitude(s) for diagram number 739 - FFV1_0( w_fp[7], w_fp[92], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[92], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 739 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15687,7 +15687,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 740 - FFV1_0( w_fp[53], w_fp[92], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[92], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 740 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15697,10 +15697,10 @@ namespace mg5amcCpu // *** DIAGRAM 741 OF 1240 *** // Wavefunction(s) for diagram number 741 - FFV1_2( w_fp[46], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + FFV1_2( w_fp[46], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 741 - FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 741 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15713,7 +15713,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 742 - FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 742 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15726,7 +15726,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 743 - FFV1_0( w_fp[53], w_fp[9], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[9], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 743 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15739,7 +15739,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 744 - FFV1_0( w_fp[7], w_fp[85], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[85], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 744 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15752,7 +15752,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 745 - FFV1_0( w_fp[46], w_fp[92], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[92], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 745 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15766,7 +15766,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 746 - FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 746 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15777,10 +15777,10 @@ namespace mg5amcCpu // *** DIAGRAM 747 OF 1240 *** // Wavefunction(s) for diagram number 747 - VVV1P0_1( w_fp[0], w_fp[29], COUPs[0], 0., 0., w_fp[96] ); + VVV1P0_1( w_fp[0], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[96] ); // Amplitude(s) for diagram number 747 - FFV1_0( w_fp[46], w_fp[77], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 747 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15796,7 +15796,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 748 - FFV1_0( w_fp[25], w_fp[92], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[92], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 748 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15809,7 +15809,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 749 - FFV1_0( w_fp[48], w_fp[92], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[92], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 749 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15819,10 +15819,10 @@ namespace mg5amcCpu // *** DIAGRAM 750 OF 1240 *** // Wavefunction(s) for diagram number 750 - FFV1_2( w_fp[38], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[104] ); + FFV1_2( w_fp[38], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[104] ); // Amplitude(s) for diagram number 750 - FFV1_0( w_fp[104], w_fp[87], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[87], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 750 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15835,7 +15835,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 751 - FFV1_0( w_fp[104], w_fp[85], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[85], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 751 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15848,7 +15848,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 752 - FFV1_0( w_fp[48], w_fp[87], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[87], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 752 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15861,7 +15861,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 753 - FFV1_0( w_fp[25], w_fp[85], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[85], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 753 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15874,7 +15874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 754 - FFV1_0( w_fp[38], w_fp[92], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[92], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 754 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15888,7 +15888,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 755 - FFV1_0( w_fp[104], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 755 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15899,10 +15899,10 @@ namespace mg5amcCpu // *** DIAGRAM 756 OF 1240 *** // Wavefunction(s) for diagram number 756 - VVV1P0_1( w_fp[0], w_fp[27], COUPs[0], 0., 0., w_fp[101] ); + VVV1P0_1( w_fp[0], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[101] ); // Amplitude(s) for diagram number 756 - FFV1_0( w_fp[38], w_fp[77], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 756 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15918,7 +15918,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 757 - FFV1_0( w_fp[28], w_fp[92], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[92], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 757 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15931,7 +15931,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 758 - FFV1_0( w_fp[40], w_fp[92], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[92], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 758 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15941,10 +15941,10 @@ namespace mg5amcCpu // *** DIAGRAM 759 OF 1240 *** // Wavefunction(s) for diagram number 759 - FFV1_2( w_fp[41], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[62] ); + FFV1_2( w_fp[41], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[62] ); // Amplitude(s) for diagram number 759 - FFV1_0( w_fp[62], w_fp[87], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[87], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 759 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15957,7 +15957,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 760 - FFV1_0( w_fp[62], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 760 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15970,7 +15970,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 761 - FFV1_0( w_fp[40], w_fp[87], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[87], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 761 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15983,7 +15983,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 762 - FFV1_0( w_fp[28], w_fp[9], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[9], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 762 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -15996,7 +15996,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 763 - FFV1_0( w_fp[41], w_fp[92], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[92], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 763 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16010,7 +16010,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 764 - FFV1_0( w_fp[62], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 764 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16021,10 +16021,10 @@ namespace mg5amcCpu // *** DIAGRAM 765 OF 1240 *** // Wavefunction(s) for diagram number 765 - VVV1P0_1( w_fp[0], w_fp[24], COUPs[0], 0., 0., w_fp[98] ); + VVV1P0_1( w_fp[0], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[98] ); // Amplitude(s) for diagram number 765 - FFV1_0( w_fp[41], w_fp[77], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 765 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16040,7 +16040,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 766 - FFV1_0( w_fp[26], w_fp[92], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[92], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 766 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16054,7 +16054,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 767 - FFV1_0( w_fp[3], w_fp[92], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 767 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16070,7 +16070,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 768 - VVV1_0( w_fp[98], w_fp[34], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[34], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 768 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16090,7 +16090,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 769 - FFV1_0( w_fp[3], w_fp[85], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[85], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 769 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16106,7 +16106,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 770 - VVV1_0( w_fp[0], w_fp[34], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[34], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 770 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16126,7 +16126,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 771 - FFV1_0( w_fp[26], w_fp[85], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[85], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 771 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16137,12 +16137,12 @@ namespace mg5amcCpu // *** DIAGRAM 772 OF 1240 *** // Wavefunction(s) for diagram number 772 - VVVV1P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 0., 0., w_fp[85] ); - VVVV3P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 0., 0., w_fp[112] ); - VVVV4P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[85] ); + VVVV3P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[112] ); + VVVV4P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 772 - FFV1_0( w_fp[3], w_fp[77], w_fp[85], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[85], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] += cxtype( 0, 1 ) * amp_sv[0]; @@ -16151,7 +16151,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[112], COUPs[1], 1.0, &_fp[0] ); jamp_sv[28] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16160,7 +16160,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16176,7 +16176,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 773 - FFV1_0( w_fp[14], w_fp[92], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[92], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 773 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16190,7 +16190,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 774 - FFV1_0( w_fp[3], w_fp[92], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 774 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16206,7 +16206,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 775 - VVV1_0( w_fp[101], w_fp[34], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[34], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 775 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16226,7 +16226,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 776 - FFV1_0( w_fp[3], w_fp[9], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 776 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16242,7 +16242,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 777 - VVV1_0( w_fp[0], w_fp[34], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[34], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 777 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16262,7 +16262,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 778 - FFV1_0( w_fp[14], w_fp[9], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[9], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 778 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16273,12 +16273,12 @@ namespace mg5amcCpu // *** DIAGRAM 779 OF 1240 *** // Wavefunction(s) for diagram number 779 - VVVV1P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 0., 0., w_fp[9] ); - VVVV3P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 0., 0., w_fp[109] ); + VVVV1P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[9] ); + VVVV3P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[109] ); // Amplitude(s) for diagram number 779 - FFV1_0( w_fp[3], w_fp[77], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[9], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16287,7 +16287,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[34] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16296,7 +16296,7 @@ namespace mg5amcCpu jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[34] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16312,7 +16312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 780 - FFV1_0( w_fp[12], w_fp[92], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[92], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 780 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16326,7 +16326,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 781 - FFV1_0( w_fp[3], w_fp[92], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 781 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16342,7 +16342,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 782 - VVV1_0( w_fp[96], w_fp[34], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[34], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 782 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16362,7 +16362,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 783 - FFV1_0( w_fp[3], w_fp[87], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[87], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 783 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16378,7 +16378,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 784 - VVV1_0( w_fp[0], w_fp[34], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[34], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 784 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16398,7 +16398,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 785 - FFV1_0( w_fp[12], w_fp[87], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[87], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 785 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16409,12 +16409,12 @@ namespace mg5amcCpu // *** DIAGRAM 786 OF 1240 *** // Wavefunction(s) for diagram number 786 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 0., 0., w_fp[87] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 0., 0., w_fp[34] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 0., 0., w_fp[86] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[87] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[34] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 786 - FFV1_0( w_fp[3], w_fp[77], w_fp[87], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[87], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; @@ -16423,7 +16423,7 @@ namespace mg5amcCpu jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[34], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[34], COUPs[1], 1.0, &_fp[0] ); jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16432,7 +16432,7 @@ namespace mg5amcCpu jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[86], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16448,17 +16448,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 787 - FFV1_0( w_fp[3], w_fp[92], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] += amp_sv[0]; jamp_sv[25] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[92], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[92], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -16467,12 +16467,12 @@ namespace mg5amcCpu // *** DIAGRAM 788 OF 1240 *** // Wavefunction(s) for diagram number 788 - VVV1P0_1( w_fp[0], w_fp[30], COUPs[0], 0., 0., w_fp[92] ); - VVV1P0_1( w_fp[0], w_fp[31], COUPs[0], 0., 0., w_fp[88] ); - VVV1P0_1( w_fp[0], w_fp[32], COUPs[0], 0., 0., w_fp[106] ); + VVV1P0_1( w_fp[0], w_fp[30], COUPs[0], 1.0, 0., 0., w_fp[92] ); + VVV1P0_1( w_fp[0], w_fp[31], COUPs[0], 1.0, 0., 0., w_fp[88] ); + VVV1P0_1( w_fp[0], w_fp[32], COUPs[0], 1.0, 0., 0., w_fp[106] ); // Amplitude(s) for diagram number 788 - FFV1_0( w_fp[3], w_fp[77], w_fp[92], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[92], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; @@ -16481,7 +16481,7 @@ namespace mg5amcCpu jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; @@ -16490,7 +16490,7 @@ namespace mg5amcCpu jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[106], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[106], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16503,10 +16503,10 @@ namespace mg5amcCpu // *** DIAGRAM 789 OF 1240 *** // Wavefunction(s) for diagram number 789 - FFV1_2( w_fp[52], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[90] ); + FFV1_2( w_fp[52], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[90] ); // Amplitude(s) for diagram number 789 - FFV1_0( w_fp[90], w_fp[35], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[35], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 789 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16519,7 +16519,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 790 - FFV1_0( w_fp[90], w_fp[36], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[36], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 790 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16529,10 +16529,10 @@ namespace mg5amcCpu // *** DIAGRAM 791 OF 1240 *** // Wavefunction(s) for diagram number 791 - FFV1_1( w_fp[33], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[114] ); + FFV1_1( w_fp[33], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[114] ); // Amplitude(s) for diagram number 791 - FFV1_0( w_fp[22], w_fp[114], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[114], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 791 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16545,7 +16545,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 792 - FFV1_0( w_fp[21], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 792 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16558,7 +16558,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 793 - FFV1_0( w_fp[22], w_fp[36], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[36], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 793 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16571,7 +16571,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 794 - FFV1_0( w_fp[21], w_fp[35], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[35], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 794 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16584,7 +16584,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 795 - FFV1_0( w_fp[90], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 795 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16598,7 +16598,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 796 - FFV1_0( w_fp[52], w_fp[114], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[114], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 796 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16612,7 +16612,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 797 - FFV1_0( w_fp[52], w_fp[33], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 797 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16628,7 +16628,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 798 - FFV1_0( w_fp[90], w_fp[43], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[43], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 798 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16641,7 +16641,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 799 - FFV1_0( w_fp[90], w_fp[44], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[44], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 799 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16651,10 +16651,10 @@ namespace mg5amcCpu // *** DIAGRAM 800 OF 1240 *** // Wavefunction(s) for diagram number 800 - FFV1_1( w_fp[39], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[102] ); + FFV1_1( w_fp[39], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[102] ); // Amplitude(s) for diagram number 800 - FFV1_0( w_fp[56], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 800 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16667,7 +16667,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 801 - FFV1_0( w_fp[21], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 801 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16680,7 +16680,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 802 - FFV1_0( w_fp[56], w_fp[44], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[44], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 802 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16693,7 +16693,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 803 - FFV1_0( w_fp[21], w_fp[43], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[43], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 803 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16706,7 +16706,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 804 - FFV1_0( w_fp[90], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 804 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16720,7 +16720,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 805 - FFV1_0( w_fp[52], w_fp[102], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[102], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 805 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16734,7 +16734,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 806 - FFV1_0( w_fp[52], w_fp[39], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 806 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16750,7 +16750,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 807 - FFV1_0( w_fp[90], w_fp[49], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[49], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 807 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16763,7 +16763,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 808 - FFV1_0( w_fp[90], w_fp[50], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[50], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 808 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16773,10 +16773,10 @@ namespace mg5amcCpu // *** DIAGRAM 809 OF 1240 *** // Wavefunction(s) for diagram number 809 - FFV1_1( w_fp[47], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[113] ); + FFV1_1( w_fp[47], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[113] ); // Amplitude(s) for diagram number 809 - FFV1_0( w_fp[56], w_fp[113], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[113], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 809 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16789,7 +16789,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 810 - FFV1_0( w_fp[22], w_fp[113], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[113], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 810 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16802,7 +16802,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 811 - FFV1_0( w_fp[56], w_fp[50], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[50], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 811 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16815,7 +16815,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 812 - FFV1_0( w_fp[22], w_fp[49], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[49], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 812 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16828,7 +16828,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 813 - FFV1_0( w_fp[90], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 813 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16842,7 +16842,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 814 - FFV1_0( w_fp[52], w_fp[113], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[113], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 814 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16856,7 +16856,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 815 - FFV1_0( w_fp[52], w_fp[47], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 815 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16872,7 +16872,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 816 - FFV1_0( w_fp[90], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 816 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16886,7 +16886,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 817 - FFV1_0( w_fp[90], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 817 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16902,7 +16902,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 818 - VVV1_0( w_fp[98], w_fp[103], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[103], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 818 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16922,7 +16922,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 819 - FFV1_0( w_fp[21], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 819 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16938,7 +16938,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 820 - VVV1_0( w_fp[0], w_fp[103], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[103], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 820 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16958,7 +16958,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 821 - FFV1_0( w_fp[21], w_fp[17], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[17], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 821 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -16972,7 +16972,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 822 - FFV1_0( w_fp[52], w_fp[2], w_fp[85], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[85], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; @@ -16981,7 +16981,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -16990,7 +16990,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -17006,7 +17006,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 823 - FFV1_0( w_fp[90], w_fp[15], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[15], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 823 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17020,7 +17020,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 824 - FFV1_0( w_fp[90], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 824 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17036,7 +17036,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 825 - VVV1_0( w_fp[101], w_fp[103], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[103], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 825 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17056,7 +17056,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 826 - FFV1_0( w_fp[22], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 826 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17072,7 +17072,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 827 - VVV1_0( w_fp[0], w_fp[103], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[103], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 827 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17092,7 +17092,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 828 - FFV1_0( w_fp[22], w_fp[15], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[15], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 828 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17106,7 +17106,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 829 - FFV1_0( w_fp[52], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -17115,7 +17115,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -17124,7 +17124,7 @@ namespace mg5amcCpu jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -17140,7 +17140,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 830 - FFV1_0( w_fp[90], w_fp[18], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[18], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 830 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17154,7 +17154,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 831 - FFV1_0( w_fp[90], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 831 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17170,7 +17170,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 832 - VVV1_0( w_fp[96], w_fp[103], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[103], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 832 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17190,7 +17190,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 833 - FFV1_0( w_fp[56], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 833 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17206,7 +17206,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 834 - VVV1_0( w_fp[0], w_fp[103], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[103], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 834 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17226,7 +17226,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 835 - FFV1_0( w_fp[56], w_fp[18], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[18], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 835 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17240,7 +17240,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 836 - FFV1_0( w_fp[52], w_fp[2], w_fp[87], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[87], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; @@ -17249,7 +17249,7 @@ namespace mg5amcCpu jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[34], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[34], COUPs[1], 1.0, &_fp[0] ); jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -17258,7 +17258,7 @@ namespace mg5amcCpu jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -17274,17 +17274,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 837 - FFV1_0( w_fp[90], w_fp[2], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[30], COUPs[1], 1.0, &_fp[0] ); jamp_sv[64] += amp_sv[0]; jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - FFV1_0( w_fp[90], w_fp[2], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[31], COUPs[1], 1.0, &_fp[0] ); jamp_sv[70] -= amp_sv[0]; jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - FFV1_0( w_fp[90], w_fp[2], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[32], COUPs[1], 1.0, &_fp[0] ); jamp_sv[64] -= amp_sv[0]; jamp_sv[88] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; @@ -17296,7 +17296,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 838 - FFV1_0( w_fp[52], w_fp[2], w_fp[92], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[92], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; @@ -17305,7 +17305,7 @@ namespace mg5amcCpu jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; @@ -17314,7 +17314,7 @@ namespace mg5amcCpu jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[106], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[106], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -17327,10 +17327,10 @@ namespace mg5amcCpu // *** DIAGRAM 839 OF 1240 *** // Wavefunction(s) for diagram number 839 - VVV1P0_1( w_fp[0], w_fp[61], COUPs[0], 0., 0., w_fp[90] ); + VVV1P0_1( w_fp[0], w_fp[61], COUPs[0], 1.0, 0., 0., w_fp[90] ); // Amplitude(s) for diagram number 839 - VVV1_0( w_fp[90], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 839 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17358,7 +17358,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 840 - VVV1_0( w_fp[90], w_fp[11], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[11], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 840 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17386,7 +17386,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 841 - VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -17403,7 +17403,7 @@ namespace mg5amcCpu jamp_sv[98] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -17420,7 +17420,7 @@ namespace mg5amcCpu jamp_sv[115] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[6] += amp_sv[0]; @@ -17441,10 +17441,10 @@ namespace mg5amcCpu // *** DIAGRAM 842 OF 1240 *** // Wavefunction(s) for diagram number 842 - VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 0., 0., w_fp[56] ); + VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[56] ); // Amplitude(s) for diagram number 842 - VVV1_0( w_fp[56], w_fp[63], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[63], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 842 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17472,7 +17472,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 843 - VVV1_0( w_fp[56], w_fp[64], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[64], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 843 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17500,7 +17500,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 844 - VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -17517,7 +17517,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -17534,7 +17534,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[6] += amp_sv[0]; @@ -17558,7 +17558,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 845 - VVV1_0( w_fp[0], w_fp[63], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[63], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 845 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17586,7 +17586,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 846 - VVV1_0( w_fp[0], w_fp[64], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[64], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 846 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17611,12 +17611,12 @@ namespace mg5amcCpu // *** DIAGRAM 847 OF 1240 *** // Wavefunction(s) for diagram number 847 - VVVV1P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 0., 0., w_fp[103] ); - VVVV3P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 0., 0., w_fp[22] ); - VVVV4P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[103] ); + VVVV3P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[22] ); + VVVV4P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 847 - VVV1_0( w_fp[8], w_fp[6], w_fp[103], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[103], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -17633,7 +17633,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[22], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -17650,7 +17650,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -17671,12 +17671,12 @@ namespace mg5amcCpu // *** DIAGRAM 848 OF 1240 *** // Wavefunction(s) for diagram number 848 - VVVV1P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 0., 0., w_fp[105] ); - VVVV3P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 0., 0., w_fp[107] ); + VVVV1P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[105] ); + VVVV3P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[107] ); // Amplitude(s) for diagram number 848 - VVV1_0( w_fp[8], w_fp[5], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[105], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[18] -= amp_sv[0]; @@ -17693,7 +17693,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[95], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -17710,7 +17710,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[98] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[107], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -17731,12 +17731,12 @@ namespace mg5amcCpu // *** DIAGRAM 849 OF 1240 *** // Wavefunction(s) for diagram number 849 - VVVV1P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 0., 0., w_fp[115] ); - VVVV3P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 0., 0., w_fp[116] ); - VVVV4P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 0., 0., w_fp[117] ); + VVVV1P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[115] ); + VVVV3P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[116] ); + VVVV4P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[117] ); // Amplitude(s) for diagram number 849 - VVV1_0( w_fp[61], w_fp[6], w_fp[115], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[115], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[18] += amp_sv[0]; @@ -17753,7 +17753,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVV1_0( w_fp[61], w_fp[6], w_fp[116], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[116], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[16] += amp_sv[0]; @@ -17770,7 +17770,7 @@ namespace mg5amcCpu jamp_sv[105] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[61], w_fp[6], w_fp[117], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[117], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -17791,12 +17791,12 @@ namespace mg5amcCpu // *** DIAGRAM 850 OF 1240 *** // Wavefunction(s) for diagram number 850 - VVVV1P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 0., 0., w_fp[118] ); - VVVV3P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 0., 0., w_fp[119] ); - VVVV4P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 0., 0., w_fp[120] ); + VVVV1P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[118] ); + VVVV3P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[119] ); + VVVV4P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[120] ); // Amplitude(s) for diagram number 850 - VVV1_0( w_fp[61], w_fp[5], w_fp[118], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[118], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -17813,7 +17813,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[61], w_fp[5], w_fp[119], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[119], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[22] += amp_sv[0]; @@ -17830,7 +17830,7 @@ namespace mg5amcCpu jamp_sv[98] -= amp_sv[0]; jamp_sv[100] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[61], w_fp[5], w_fp[120], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[120], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -17854,7 +17854,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 851 - VVVV1_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -17871,7 +17871,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -17888,7 +17888,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[22] += amp_sv[0]; @@ -17912,7 +17912,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 852 - VVV1_0( w_fp[8], w_fp[29], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[29], w_fp[90], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 852 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17940,7 +17940,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 853 - VVV1_0( w_fp[61], w_fp[29], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[29], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 853 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17968,7 +17968,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 854 - VVV1_0( w_fp[61], w_fp[8], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[8], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 854 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -17996,7 +17996,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 855 - VVV1_0( w_fp[90], w_fp[45], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[45], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 855 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18016,7 +18016,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 856 - FFV1_0( w_fp[3], w_fp[44], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[44], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 856 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18032,7 +18032,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 857 - FFV1_0( w_fp[65], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 857 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18046,7 +18046,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 858 - FFV1_0( w_fp[3], w_fp[102], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 858 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18062,7 +18062,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 859 - FFV1_0( w_fp[65], w_fp[44], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[44], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 859 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18076,7 +18076,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 860 - VVV1_0( w_fp[0], w_fp[64], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[64], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 860 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18096,7 +18096,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 861 - FFV1_0( w_fp[3], w_fp[39], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[105], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; @@ -18105,7 +18105,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[95], COUPs[1], 1.0, &_fp[0] ); jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18114,7 +18114,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[107], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18130,7 +18130,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 862 - FFV1_0( w_fp[41], w_fp[39], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 862 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18146,7 +18146,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 863 - FFV1_0( w_fp[41], w_fp[102], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[102], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 863 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18160,7 +18160,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 864 - FFV1_0( w_fp[62], w_fp[39], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 864 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18174,7 +18174,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 865 - VVV1_0( w_fp[90], w_fp[51], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[51], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 865 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18194,7 +18194,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 866 - FFV1_0( w_fp[3], w_fp[50], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[50], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 866 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18210,7 +18210,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 867 - FFV1_0( w_fp[65], w_fp[113], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[113], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 867 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18224,7 +18224,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 868 - FFV1_0( w_fp[3], w_fp[113], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 868 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18240,7 +18240,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 869 - FFV1_0( w_fp[65], w_fp[50], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[50], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 869 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18254,7 +18254,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 870 - VVV1_0( w_fp[0], w_fp[63], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[63], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 870 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18274,7 +18274,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 871 - FFV1_0( w_fp[3], w_fp[47], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[103], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; @@ -18283,7 +18283,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[22], COUPs[1], 1.0, &_fp[0] ); jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18292,7 +18292,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18308,7 +18308,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 872 - FFV1_0( w_fp[38], w_fp[47], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 872 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18324,7 +18324,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 873 - FFV1_0( w_fp[38], w_fp[113], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[113], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 873 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18338,7 +18338,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 874 - FFV1_0( w_fp[104], w_fp[47], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[47], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 874 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18352,7 +18352,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 875 - VVV1_0( w_fp[90], w_fp[23], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[23], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 875 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18372,7 +18372,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 876 - FFV1_0( w_fp[48], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 876 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18388,7 +18388,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 877 - FFV1_0( w_fp[104], w_fp[93], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[93], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 877 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18402,7 +18402,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 878 - FFV1_0( w_fp[104], w_fp[2], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 878 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18418,7 +18418,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 879 - FFV1_0( w_fp[48], w_fp[93], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[93], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 879 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18432,7 +18432,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 880 - VVV1_0( w_fp[0], w_fp[64], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[64], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 880 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18452,7 +18452,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 881 - FFV1_0( w_fp[38], w_fp[2], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[105], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; @@ -18461,7 +18461,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18470,7 +18470,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[107], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18486,7 +18486,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 882 - VVV1_0( w_fp[90], w_fp[20], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[20], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 882 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18506,7 +18506,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 883 - FFV1_0( w_fp[40], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 883 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18522,7 +18522,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 884 - FFV1_0( w_fp[62], w_fp[93], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[93], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 884 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18536,7 +18536,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 885 - FFV1_0( w_fp[62], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 885 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18552,7 +18552,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 886 - FFV1_0( w_fp[40], w_fp[93], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[93], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 886 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18566,7 +18566,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 887 - VVV1_0( w_fp[0], w_fp[63], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[63], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 887 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18586,7 +18586,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 888 - FFV1_0( w_fp[41], w_fp[2], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[103], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -18595,7 +18595,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[14] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18604,7 +18604,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -18620,7 +18620,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 889 - FFV1_0( w_fp[3], w_fp[18], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[18], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 889 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18640,7 +18640,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 890 - FFV1_0( w_fp[12], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 890 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18660,7 +18660,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 891 - FFV1_0( w_fp[3], w_fp[93], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[93], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 891 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18680,7 +18680,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 892 - FFV1_0( w_fp[65], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 892 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18700,7 +18700,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 893 - FFV1_0( w_fp[12], w_fp[93], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[93], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 893 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18716,7 +18716,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 894 - FFV1_0( w_fp[65], w_fp[18], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[18], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 894 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18729,10 +18729,10 @@ namespace mg5amcCpu // *** DIAGRAM 895 OF 1240 *** // Wavefunction(s) for diagram number 895 - VVV1P0_1( w_fp[0], w_fp[66], COUPs[0], 0., 0., w_fp[65] ); + VVV1P0_1( w_fp[0], w_fp[66], COUPs[0], 1.0, 0., 0., w_fp[65] ); // Amplitude(s) for diagram number 895 - VVV1_0( w_fp[65], w_fp[13], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[13], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 895 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18760,7 +18760,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 896 - VVV1_0( w_fp[65], w_fp[11], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[11], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 896 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18788,7 +18788,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 897 - VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[37] += amp_sv[0]; @@ -18805,7 +18805,7 @@ namespace mg5amcCpu jamp_sv[100] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[12] += amp_sv[0]; jamp_sv[36] += amp_sv[0]; @@ -18822,7 +18822,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[3] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -18846,7 +18846,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 898 - VVV1_0( w_fp[56], w_fp[69], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[69], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 898 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18874,7 +18874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 899 - VVV1_0( w_fp[56], w_fp[70], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[70], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 899 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18902,7 +18902,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 900 - VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -18919,7 +18919,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -18936,7 +18936,7 @@ namespace mg5amcCpu jamp_sv[83] += amp_sv[0]; jamp_sv[107] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[3] += amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -18960,7 +18960,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 901 - VVV1_0( w_fp[0], w_fp[69], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[69], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 901 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -18988,7 +18988,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 902 - VVV1_0( w_fp[0], w_fp[70], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[70], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 902 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19013,12 +19013,12 @@ namespace mg5amcCpu // *** DIAGRAM 903 OF 1240 *** // Wavefunction(s) for diagram number 903 - VVVV1P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 0., 0., w_fp[93] ); - VVVV3P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 0., 0., w_fp[90] ); - VVVV4P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[93] ); + VVVV3P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV4P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 903 - VVV1_0( w_fp[8], w_fp[6], w_fp[93], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[93], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -19035,7 +19035,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[90], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[36] += amp_sv[0]; @@ -19052,7 +19052,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[12] += amp_sv[0]; jamp_sv[36] += amp_sv[0]; @@ -19073,12 +19073,12 @@ namespace mg5amcCpu // *** DIAGRAM 904 OF 1240 *** // Wavefunction(s) for diagram number 904 - VVVV1P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 0., 0., w_fp[22] ); - VVVV3P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 0., 0., w_fp[103] ); - VVVV4P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 0., 0., w_fp[63] ); + VVVV1P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[22] ); + VVVV3P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[103] ); + VVVV4P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[63] ); // Amplitude(s) for diagram number 904 - VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[19] -= amp_sv[0]; @@ -19095,7 +19095,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[103], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[103], COUPs[0], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; jamp_sv[37] += amp_sv[0]; @@ -19112,7 +19112,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[97] += amp_sv[0]; jamp_sv[100] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[63], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[63], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[37] += amp_sv[0]; @@ -19133,12 +19133,12 @@ namespace mg5amcCpu // *** DIAGRAM 905 OF 1240 *** // Wavefunction(s) for diagram number 905 - VVVV1P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 0., 0., w_fp[107] ); - VVVV3P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 0., 0., w_fp[105] ); + VVVV1P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[107] ); + VVVV3P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[105] ); // Amplitude(s) for diagram number 905 - VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[19] += amp_sv[0]; @@ -19155,7 +19155,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVV1_0( w_fp[66], w_fp[6], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[95], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -19172,7 +19172,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[66], w_fp[6], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[105], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -19196,7 +19196,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 906 - VVV1_0( w_fp[66], w_fp[4], w_fp[118], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[118], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -19213,7 +19213,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[66], w_fp[4], w_fp[119], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[119], COUPs[0], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; @@ -19230,7 +19230,7 @@ namespace mg5amcCpu jamp_sv[98] -= amp_sv[0]; jamp_sv[99] += amp_sv[0]; jamp_sv[100] -= amp_sv[0]; - VVV1_0( w_fp[66], w_fp[4], w_fp[120], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[120], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -19254,7 +19254,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 907 - VVVV1_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -19271,7 +19271,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -19288,7 +19288,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[20] += amp_sv[0]; @@ -19312,7 +19312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 908 - VVV1_0( w_fp[8], w_fp[27], w_fp[65], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[27], w_fp[65], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 908 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19340,7 +19340,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 909 - VVV1_0( w_fp[66], w_fp[27], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[27], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 909 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19368,7 +19368,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 910 - VVV1_0( w_fp[66], w_fp[8], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[8], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 910 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19396,7 +19396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 911 - VVV1_0( w_fp[65], w_fp[37], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[37], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 911 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19416,7 +19416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 912 - FFV1_0( w_fp[3], w_fp[36], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[36], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 912 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19432,7 +19432,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 913 - FFV1_0( w_fp[71], w_fp[114], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[114], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 913 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19446,7 +19446,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 914 - FFV1_0( w_fp[3], w_fp[114], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 914 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19462,7 +19462,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 915 - FFV1_0( w_fp[71], w_fp[36], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[36], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 915 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19476,7 +19476,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 916 - VVV1_0( w_fp[0], w_fp[70], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[70], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 916 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19496,7 +19496,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 917 - FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; @@ -19505,7 +19505,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[103], COUPs[1], 1.0, &_fp[0] ); jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19514,7 +19514,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[63], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19530,7 +19530,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 918 - FFV1_0( w_fp[41], w_fp[33], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 918 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19546,7 +19546,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 919 - FFV1_0( w_fp[41], w_fp[114], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[114], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 919 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19560,7 +19560,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 920 - FFV1_0( w_fp[62], w_fp[33], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 920 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19574,7 +19574,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 921 - VVV1_0( w_fp[65], w_fp[51], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[51], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 921 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19594,7 +19594,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 922 - FFV1_0( w_fp[3], w_fp[49], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[49], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 922 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19610,7 +19610,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 923 - FFV1_0( w_fp[71], w_fp[113], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[113], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 923 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19624,7 +19624,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 924 - FFV1_0( w_fp[3], w_fp[113], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 924 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19640,7 +19640,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 925 - FFV1_0( w_fp[71], w_fp[49], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[49], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 925 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19654,7 +19654,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 926 - VVV1_0( w_fp[0], w_fp[69], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[69], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 926 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19674,7 +19674,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 927 - FFV1_0( w_fp[3], w_fp[47], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[93], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19683,7 +19683,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19692,7 +19692,7 @@ namespace mg5amcCpu jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19708,7 +19708,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 928 - FFV1_0( w_fp[46], w_fp[47], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 928 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19724,7 +19724,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 929 - FFV1_0( w_fp[46], w_fp[113], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[113], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 929 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19738,7 +19738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 930 - FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 930 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19752,7 +19752,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 931 - VVV1_0( w_fp[65], w_fp[54], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[54], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 931 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19772,7 +19772,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 932 - FFV1_0( w_fp[53], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 932 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19788,7 +19788,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 933 - FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 933 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19802,7 +19802,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 934 - FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 934 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19818,7 +19818,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 935 - FFV1_0( w_fp[53], w_fp[94], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[94], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 935 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19832,7 +19832,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 936 - VVV1_0( w_fp[0], w_fp[70], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[70], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 936 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19852,7 +19852,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 937 - FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; @@ -19861,7 +19861,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[103], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19870,7 +19870,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19886,7 +19886,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 938 - VVV1_0( w_fp[65], w_fp[20], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[20], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 938 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19906,7 +19906,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 939 - FFV1_0( w_fp[28], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 939 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19922,7 +19922,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 940 - FFV1_0( w_fp[62], w_fp[94], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[94], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 940 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19936,7 +19936,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 941 - FFV1_0( w_fp[62], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 941 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19952,7 +19952,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 942 - FFV1_0( w_fp[28], w_fp[94], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[94], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 942 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19966,7 +19966,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 943 - VVV1_0( w_fp[0], w_fp[69], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[69], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 943 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -19986,7 +19986,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 944 - FFV1_0( w_fp[41], w_fp[2], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[93], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -19995,7 +19995,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -20004,7 +20004,7 @@ namespace mg5amcCpu jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -20020,7 +20020,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 945 - FFV1_0( w_fp[3], w_fp[15], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[15], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 945 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20040,7 +20040,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 946 - FFV1_0( w_fp[14], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 946 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20060,7 +20060,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 947 - FFV1_0( w_fp[3], w_fp[94], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[94], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 947 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20080,7 +20080,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 948 - FFV1_0( w_fp[71], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 948 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20100,7 +20100,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 949 - FFV1_0( w_fp[14], w_fp[94], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[94], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 949 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20116,7 +20116,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 950 - FFV1_0( w_fp[71], w_fp[15], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[15], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 950 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20129,10 +20129,10 @@ namespace mg5amcCpu // *** DIAGRAM 951 OF 1240 *** // Wavefunction(s) for diagram number 951 - VVV1P0_1( w_fp[0], w_fp[72], COUPs[0], 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[0], w_fp[72], COUPs[0], 1.0, 0., 0., w_fp[71] ); // Amplitude(s) for diagram number 951 - VVV1_0( w_fp[71], w_fp[13], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[13], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 951 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20160,7 +20160,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 952 - VVV1_0( w_fp[71], w_fp[10], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[10], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 952 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20188,7 +20188,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 953 - VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[43] += amp_sv[0]; @@ -20205,7 +20205,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[18] += amp_sv[0]; jamp_sv[42] += amp_sv[0]; @@ -20222,7 +20222,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; jamp_sv[18] += amp_sv[0]; @@ -20246,7 +20246,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 954 - VVV1_0( w_fp[56], w_fp[74], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[74], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 954 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20274,7 +20274,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 955 - VVV1_0( w_fp[56], w_fp[75], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[75], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 955 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20302,7 +20302,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 956 - VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -20319,7 +20319,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; - VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -20336,7 +20336,7 @@ namespace mg5amcCpu jamp_sv[83] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -20360,7 +20360,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 957 - VVV1_0( w_fp[0], w_fp[74], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[74], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 957 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20388,7 +20388,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 958 - VVV1_0( w_fp[0], w_fp[75], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[75], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 958 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20413,12 +20413,12 @@ namespace mg5amcCpu // *** DIAGRAM 959 OF 1240 *** // Wavefunction(s) for diagram number 959 - VVVV1P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 0., 0., w_fp[94] ); - VVVV3P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 0., 0., w_fp[65] ); - VVVV4P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[94] ); + VVVV3P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[65] ); + VVVV4P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 959 - VVV1_0( w_fp[8], w_fp[5], w_fp[94], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[94], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -20435,7 +20435,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[65], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[65], COUPs[0], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; jamp_sv[42] += amp_sv[0]; @@ -20452,7 +20452,7 @@ namespace mg5amcCpu jamp_sv[93] -= amp_sv[0]; jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[18] += amp_sv[0]; jamp_sv[42] += amp_sv[0]; @@ -20473,12 +20473,12 @@ namespace mg5amcCpu // *** DIAGRAM 960 OF 1240 *** // Wavefunction(s) for diagram number 960 - VVVV1P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 0., 0., w_fp[90] ); - VVVV3P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 0., 0., w_fp[93] ); - VVVV4P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 0., 0., w_fp[69] ); + VVVV1P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV3P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[93] ); + VVVV4P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[69] ); // Amplitude(s) for diagram number 960 - VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[16] += amp_sv[0]; @@ -20495,7 +20495,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[93], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[93], COUPs[0], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[16] += amp_sv[0]; jamp_sv[43] += amp_sv[0]; @@ -20512,7 +20512,7 @@ namespace mg5amcCpu jamp_sv[76] -= amp_sv[0]; jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[69], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[69], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[43] += amp_sv[0]; @@ -20536,7 +20536,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 961 - VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -20553,7 +20553,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[72], w_fp[5], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[95], COUPs[0], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; @@ -20570,7 +20570,7 @@ namespace mg5amcCpu jamp_sv[93] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - VVV1_0( w_fp[72], w_fp[5], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[105], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -20594,7 +20594,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 962 - VVV1_0( w_fp[72], w_fp[4], w_fp[115], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[115], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -20611,7 +20611,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVV1_0( w_fp[72], w_fp[4], w_fp[116], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[116], COUPs[0], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; @@ -20628,7 +20628,7 @@ namespace mg5amcCpu jamp_sv[76] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; - VVV1_0( w_fp[72], w_fp[4], w_fp[117], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[117], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -20652,7 +20652,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 963 - VVVV1_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[18] -= amp_sv[0]; @@ -20669,7 +20669,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -20686,7 +20686,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; jamp_sv[14] += amp_sv[0]; @@ -20710,7 +20710,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 964 - VVV1_0( w_fp[8], w_fp[24], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[24], w_fp[71], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 964 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20738,7 +20738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 965 - VVV1_0( w_fp[72], w_fp[24], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[24], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 965 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20766,7 +20766,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 966 - VVV1_0( w_fp[72], w_fp[8], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[8], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 966 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20794,7 +20794,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 967 - VVV1_0( w_fp[71], w_fp[37], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[37], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 967 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20814,7 +20814,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 968 - FFV1_0( w_fp[3], w_fp[35], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[35], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 968 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20830,7 +20830,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 969 - FFV1_0( w_fp[76], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 969 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20844,7 +20844,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 970 - FFV1_0( w_fp[3], w_fp[114], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 970 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20860,7 +20860,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 971 - FFV1_0( w_fp[76], w_fp[35], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[35], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 971 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20874,7 +20874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 972 - VVV1_0( w_fp[0], w_fp[75], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[75], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 972 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20894,7 +20894,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 973 - FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -20903,7 +20903,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[93], COUPs[1], 1.0, &_fp[0] ); jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -20912,7 +20912,7 @@ namespace mg5amcCpu jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[69], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -20928,7 +20928,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 974 - FFV1_0( w_fp[38], w_fp[33], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 974 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20944,7 +20944,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 975 - FFV1_0( w_fp[38], w_fp[114], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[114], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 975 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20958,7 +20958,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 976 - FFV1_0( w_fp[104], w_fp[33], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[33], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 976 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20972,7 +20972,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 977 - VVV1_0( w_fp[71], w_fp[45], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[45], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 977 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -20992,7 +20992,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 978 - FFV1_0( w_fp[3], w_fp[43], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[43], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 978 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21008,7 +21008,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 979 - FFV1_0( w_fp[76], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 979 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21022,7 +21022,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 980 - FFV1_0( w_fp[3], w_fp[102], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 980 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21038,7 +21038,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 981 - FFV1_0( w_fp[76], w_fp[43], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[43], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 981 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21052,7 +21052,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 982 - VVV1_0( w_fp[0], w_fp[74], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[74], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 982 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21072,7 +21072,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 983 - FFV1_0( w_fp[3], w_fp[39], w_fp[94], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[94], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21081,7 +21081,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[65], COUPs[1], 1.0, &_fp[0] ); jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21090,7 +21090,7 @@ namespace mg5amcCpu jamp_sv[85] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21106,7 +21106,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 984 - FFV1_0( w_fp[46], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 984 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21122,7 +21122,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 985 - FFV1_0( w_fp[46], w_fp[102], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[102], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 985 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21136,7 +21136,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 986 - FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 986 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21150,7 +21150,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 987 - VVV1_0( w_fp[71], w_fp[54], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[54], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 987 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21170,7 +21170,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 988 - FFV1_0( w_fp[7], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 988 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21186,7 +21186,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 989 - FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 989 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21200,7 +21200,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 990 - FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 990 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21216,7 +21216,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 991 - FFV1_0( w_fp[7], w_fp[97], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[97], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 991 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21230,7 +21230,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 992 - VVV1_0( w_fp[0], w_fp[75], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[75], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 992 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21250,7 +21250,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 993 - FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21259,7 +21259,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[93], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21268,7 +21268,7 @@ namespace mg5amcCpu jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21284,7 +21284,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 994 - VVV1_0( w_fp[71], w_fp[23], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[23], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 994 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21304,7 +21304,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 995 - FFV1_0( w_fp[25], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 995 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21320,7 +21320,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 996 - FFV1_0( w_fp[104], w_fp[97], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[97], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 996 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21334,7 +21334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 997 - FFV1_0( w_fp[104], w_fp[2], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 997 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21350,7 +21350,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 998 - FFV1_0( w_fp[25], w_fp[97], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[97], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 998 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21364,7 +21364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 999 - VVV1_0( w_fp[0], w_fp[74], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[74], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 999 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21384,7 +21384,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1000 - FFV1_0( w_fp[38], w_fp[2], w_fp[94], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[94], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21393,7 +21393,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21402,7 +21402,7 @@ namespace mg5amcCpu jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -21418,7 +21418,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1001 - FFV1_0( w_fp[3], w_fp[17], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1001 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21438,7 +21438,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1002 - FFV1_0( w_fp[26], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1002 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21458,7 +21458,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1003 - FFV1_0( w_fp[3], w_fp[97], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[97], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1003 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21478,7 +21478,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1004 - FFV1_0( w_fp[76], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1004 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21498,7 +21498,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1005 - FFV1_0( w_fp[26], w_fp[97], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[97], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1005 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21514,7 +21514,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1006 - FFV1_0( w_fp[76], w_fp[17], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[17], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1006 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21530,7 +21530,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1007 - VVV1_0( w_fp[56], w_fp[59], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[59], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1007 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21558,7 +21558,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1008 - VVV1_0( w_fp[56], w_fp[1], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[1], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1008 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21586,7 +21586,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1009 - VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -21603,7 +21603,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -21620,7 +21620,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -21644,7 +21644,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1010 - VVV1_0( w_fp[98], w_fp[108], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[108], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1010 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21672,7 +21672,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1011 - VVV1_0( w_fp[98], w_fp[1], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[1], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1011 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21700,7 +21700,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1012 - VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -21717,7 +21717,7 @@ namespace mg5amcCpu jamp_sv[101] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; jamp_sv[14] += amp_sv[0]; @@ -21734,7 +21734,7 @@ namespace mg5amcCpu jamp_sv[103] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -21758,7 +21758,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1013 - VVV1_0( w_fp[0], w_fp[108], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[108], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1013 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21786,7 +21786,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1014 - VVV1_0( w_fp[0], w_fp[59], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[59], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1014 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -21811,12 +21811,12 @@ namespace mg5amcCpu // *** DIAGRAM 1015 OF 1240 *** // Wavefunction(s) for diagram number 1015 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 0., 0., w_fp[11] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 0., 0., w_fp[42] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 0., 0., w_fp[76] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 1.0, 0., 0., w_fp[11] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 1.0, 0., 0., w_fp[42] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 1.0, 0., 0., w_fp[76] ); // Amplitude(s) for diagram number 1015 - VVV1_0( w_fp[24], w_fp[6], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[11], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; @@ -21833,7 +21833,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVV1_0( w_fp[24], w_fp[6], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[42], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -21850,7 +21850,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[24], w_fp[6], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[76], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -21871,12 +21871,12 @@ namespace mg5amcCpu // *** DIAGRAM 1016 OF 1240 *** // Wavefunction(s) for diagram number 1016 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 0., 0., w_fp[97] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 0., 0., w_fp[71] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 1.0, 0., 0., w_fp[97] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 1.0, 0., 0., w_fp[71] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 1016 - VVV1_0( w_fp[8], w_fp[6], w_fp[97], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[97], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -21893,7 +21893,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -21910,7 +21910,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -21934,7 +21934,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1017 - VVV1_0( w_fp[1], w_fp[24], w_fp[118], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[118], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[8] += amp_sv[0]; @@ -21951,7 +21951,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[24], w_fp[119], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[119], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -21968,7 +21968,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[24], w_fp[120], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[120], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -21992,7 +21992,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1018 - VVV1_0( w_fp[1], w_fp[8], w_fp[85], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[85], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -22009,7 +22009,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[112], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[112], COUPs[0], 1.0, &_fp[0] ); jamp_sv[21] += amp_sv[0]; jamp_sv[23] -= amp_sv[0]; jamp_sv[28] -= amp_sv[0]; @@ -22026,7 +22026,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -22050,7 +22050,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1019 - VVV1_0( w_fp[56], w_fp[68], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[68], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1019 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22078,7 +22078,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1020 - VVV1_0( w_fp[56], w_fp[1], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[1], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1020 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22106,7 +22106,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1021 - VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -22123,7 +22123,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -22140,7 +22140,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -22164,7 +22164,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1022 - VVV1_0( w_fp[101], w_fp[108], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[108], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1022 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22192,7 +22192,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1023 - VVV1_0( w_fp[101], w_fp[1], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[1], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1023 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22220,7 +22220,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1024 - VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[25] -= amp_sv[0]; @@ -22237,7 +22237,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[20] += amp_sv[0]; @@ -22254,7 +22254,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[25] += amp_sv[0]; @@ -22278,7 +22278,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1025 - VVV1_0( w_fp[0], w_fp[108], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[108], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1025 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22306,7 +22306,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1026 - VVV1_0( w_fp[0], w_fp[68], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[68], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1026 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22334,7 +22334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1027 - VVV1_0( w_fp[27], w_fp[5], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[11], COUPs[0], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; @@ -22351,7 +22351,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[27], w_fp[5], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[42], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -22368,7 +22368,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[27], w_fp[5], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[76], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -22389,12 +22389,12 @@ namespace mg5amcCpu // *** DIAGRAM 1028 OF 1240 *** // Wavefunction(s) for diagram number 1028 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 0., 0., w_fp[10] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 0., 0., w_fp[16] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 1.0, 0., 0., w_fp[10] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 1.0, 0., 0., w_fp[16] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 1028 - VVV1_0( w_fp[8], w_fp[5], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[10], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -22411,7 +22411,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[16], COUPs[0], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[25] += amp_sv[0]; @@ -22428,7 +22428,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; jamp_sv[25] += amp_sv[0]; @@ -22452,7 +22452,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1029 - VVV1_0( w_fp[1], w_fp[27], w_fp[115], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[115], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -22469,7 +22469,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[27], w_fp[116], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[116], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[15] += amp_sv[0]; @@ -22486,7 +22486,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[27], w_fp[117], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[117], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -22510,7 +22510,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1030 - VVV1_0( w_fp[1], w_fp[8], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[9], COUPs[0], 1.0, &_fp[0] ); jamp_sv[11] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; @@ -22527,7 +22527,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], 1.0, &_fp[0] ); jamp_sv[15] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[26] -= amp_sv[0]; @@ -22544,7 +22544,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[25] -= amp_sv[0]; @@ -22568,7 +22568,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1031 - VVV1_0( w_fp[56], w_fp[67], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[67], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1031 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22596,7 +22596,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1032 - VVV1_0( w_fp[56], w_fp[1], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[1], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1032 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22624,7 +22624,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1033 - VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -22641,7 +22641,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -22658,7 +22658,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[3] += amp_sv[0]; @@ -22682,7 +22682,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1034 - VVV1_0( w_fp[96], w_fp[108], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[108], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1034 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22710,7 +22710,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1035 - VVV1_0( w_fp[96], w_fp[1], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[1], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1035 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22738,7 +22738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1036 - VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], 1.0, &_fp[0] ); jamp_sv[17] += amp_sv[0]; jamp_sv[23] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; @@ -22755,7 +22755,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[22] += amp_sv[0]; @@ -22772,7 +22772,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; jamp_sv[27] += amp_sv[0]; @@ -22796,7 +22796,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1037 - VVV1_0( w_fp[0], w_fp[108], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[108], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1037 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22824,7 +22824,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1038 - VVV1_0( w_fp[0], w_fp[67], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[67], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1038 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -22852,7 +22852,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1039 - VVV1_0( w_fp[4], w_fp[29], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[11], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[11] -= amp_sv[0]; jamp_sv[17] -= amp_sv[0]; @@ -22869,7 +22869,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVV1_0( w_fp[4], w_fp[29], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[42], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[3] += amp_sv[0]; @@ -22886,7 +22886,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[4], w_fp[29], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[76], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[3] += amp_sv[0]; @@ -22907,12 +22907,12 @@ namespace mg5amcCpu // *** DIAGRAM 1040 OF 1240 *** // Wavefunction(s) for diagram number 1040 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 0., 0., w_fp[76] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 0., 0., w_fp[42] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 0., 0., w_fp[11] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[76] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[42] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 1040 - VVV1_0( w_fp[8], w_fp[4], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[76], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -22929,7 +22929,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[42], COUPs[0], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; jamp_sv[27] += amp_sv[0]; @@ -22946,7 +22946,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[90] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[11], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; jamp_sv[27] += amp_sv[0]; @@ -22970,7 +22970,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1041 - VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; jamp_sv[16] += amp_sv[0]; @@ -22987,7 +22987,7 @@ namespace mg5amcCpu jamp_sv[71] -= amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[29], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[95], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[9] += amp_sv[0]; @@ -23004,7 +23004,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[29], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[105], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -23028,7 +23028,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1042 - VVV1_0( w_fp[1], w_fp[8], w_fp[87], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[87], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[17] += amp_sv[0]; @@ -23045,7 +23045,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[34], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[34], COUPs[0], 1.0, &_fp[0] ); jamp_sv[17] += amp_sv[0]; jamp_sv[23] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; @@ -23062,7 +23062,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[86], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[11] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -23086,7 +23086,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1043 - VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -23103,7 +23103,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -23120,7 +23120,7 @@ namespace mg5amcCpu jamp_sv[71] -= amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[17] += amp_sv[0]; @@ -23137,7 +23137,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -23154,7 +23154,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -23171,7 +23171,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; @@ -23188,7 +23188,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -23205,7 +23205,7 @@ namespace mg5amcCpu jamp_sv[113] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -23222,7 +23222,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; @@ -23246,7 +23246,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1044 - VVV1_0( w_fp[1], w_fp[30], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[30], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -23263,7 +23263,7 @@ namespace mg5amcCpu jamp_sv[71] -= amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[31], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[31], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; @@ -23280,7 +23280,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[32], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[32], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -23304,7 +23304,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1045 - VVV1_0( w_fp[1], w_fp[8], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[92], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[17] += amp_sv[0]; @@ -23321,7 +23321,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; @@ -23338,7 +23338,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[106], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[106], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; @@ -23362,7 +23362,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1046 - FFV1_0( w_fp[58], w_fp[114], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[114], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1046 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23375,7 +23375,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1047 - FFV1_0( w_fp[48], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1047 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23388,7 +23388,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1048 - FFV1_0( w_fp[104], w_fp[100], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[100], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1048 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23401,7 +23401,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1049 - FFV1_0( w_fp[104], w_fp[36], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[36], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1049 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23414,7 +23414,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1050 - FFV1_0( w_fp[48], w_fp[100], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[100], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1050 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23427,7 +23427,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1051 - FFV1_0( w_fp[58], w_fp[36], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[36], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1051 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23440,7 +23440,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1052 - FFV1_0( w_fp[60], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1052 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23453,7 +23453,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1053 - FFV1_0( w_fp[40], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1053 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23466,7 +23466,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1054 - FFV1_0( w_fp[62], w_fp[100], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[100], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1054 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23479,7 +23479,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1055 - FFV1_0( w_fp[62], w_fp[35], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[35], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1055 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23492,7 +23492,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1056 - FFV1_0( w_fp[40], w_fp[100], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[100], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1056 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23505,7 +23505,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1057 - FFV1_0( w_fp[60], w_fp[35], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[35], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1057 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23518,7 +23518,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1058 - FFV1_0( w_fp[3], w_fp[114], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1058 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23534,7 +23534,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1059 - FFV1_0( w_fp[12], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1059 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23548,7 +23548,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1060 - FFV1_0( w_fp[3], w_fp[100], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[100], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1060 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23564,7 +23564,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1061 - VVV1_0( w_fp[96], w_fp[1], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[1], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1061 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23584,7 +23584,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1062 - FFV1_0( w_fp[12], w_fp[100], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[100], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1062 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23598,7 +23598,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1063 - VVV1_0( w_fp[0], w_fp[67], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[67], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1063 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23618,7 +23618,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1064 - FFV1_0( w_fp[3], w_fp[33], w_fp[76], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[76], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; @@ -23627,7 +23627,7 @@ namespace mg5amcCpu jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[42], COUPs[1], 1.0, &_fp[0] ); jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -23636,7 +23636,7 @@ namespace mg5amcCpu jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[11], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -23652,7 +23652,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1065 - FFV1_0( w_fp[78], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1065 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23665,7 +23665,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1066 - FFV1_0( w_fp[53], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1066 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23678,7 +23678,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1067 - FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1067 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23691,7 +23691,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1068 - FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1068 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23704,7 +23704,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1069 - FFV1_0( w_fp[53], w_fp[89], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[89], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1069 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23717,7 +23717,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1070 - FFV1_0( w_fp[78], w_fp[44], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[44], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1070 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23730,7 +23730,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1071 - FFV1_0( w_fp[60], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1071 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23743,7 +23743,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1072 - FFV1_0( w_fp[28], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1072 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23756,7 +23756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1073 - FFV1_0( w_fp[62], w_fp[89], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[89], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1073 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23769,7 +23769,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1074 - FFV1_0( w_fp[62], w_fp[43], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[43], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1074 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23782,7 +23782,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1075 - FFV1_0( w_fp[28], w_fp[89], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[89], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1075 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23795,7 +23795,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1076 - FFV1_0( w_fp[60], w_fp[43], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[43], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1076 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23808,7 +23808,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1077 - FFV1_0( w_fp[3], w_fp[102], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1077 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23824,7 +23824,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1078 - FFV1_0( w_fp[14], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1078 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23838,7 +23838,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1079 - FFV1_0( w_fp[3], w_fp[89], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[89], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1079 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23854,7 +23854,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1080 - VVV1_0( w_fp[101], w_fp[1], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[1], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1080 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23874,7 +23874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1081 - FFV1_0( w_fp[14], w_fp[89], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[89], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1081 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23888,7 +23888,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1082 - VVV1_0( w_fp[0], w_fp[68], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[68], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1082 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23908,7 +23908,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1083 - FFV1_0( w_fp[3], w_fp[39], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[10], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; @@ -23917,7 +23917,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -23926,7 +23926,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -23942,7 +23942,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1084 - FFV1_0( w_fp[78], w_fp[113], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[113], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1084 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23955,7 +23955,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1085 - FFV1_0( w_fp[7], w_fp[113], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[113], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1085 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23968,7 +23968,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1086 - FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1086 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23981,7 +23981,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1087 - FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1087 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -23994,7 +23994,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1088 - FFV1_0( w_fp[7], w_fp[91], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[91], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1088 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24007,7 +24007,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1089 - FFV1_0( w_fp[78], w_fp[50], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[50], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1089 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24020,7 +24020,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1090 - FFV1_0( w_fp[58], w_fp[113], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[113], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1090 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24033,7 +24033,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1091 - FFV1_0( w_fp[25], w_fp[113], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[113], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1091 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24046,7 +24046,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1092 - FFV1_0( w_fp[104], w_fp[91], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[91], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1092 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24059,7 +24059,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1093 - FFV1_0( w_fp[104], w_fp[49], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[49], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1093 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24072,7 +24072,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1094 - FFV1_0( w_fp[25], w_fp[91], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[91], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1094 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24085,7 +24085,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1095 - FFV1_0( w_fp[58], w_fp[49], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[49], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1095 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24098,7 +24098,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1096 - FFV1_0( w_fp[3], w_fp[113], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1096 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24114,7 +24114,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1097 - FFV1_0( w_fp[26], w_fp[113], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[113], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1097 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24128,7 +24128,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1098 - FFV1_0( w_fp[3], w_fp[91], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[91], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1098 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24144,7 +24144,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1099 - VVV1_0( w_fp[98], w_fp[1], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[1], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1099 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24164,7 +24164,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1100 - FFV1_0( w_fp[26], w_fp[91], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[91], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1100 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24178,7 +24178,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1101 - VVV1_0( w_fp[0], w_fp[59], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[59], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1101 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24198,7 +24198,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1102 - FFV1_0( w_fp[3], w_fp[47], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[97], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; @@ -24207,7 +24207,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24216,7 +24216,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24232,7 +24232,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1103 - FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1103 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24248,7 +24248,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1104 - FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1104 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24262,7 +24262,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1105 - FFV1_0( w_fp[78], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1105 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24278,7 +24278,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1106 - VVV1_0( w_fp[96], w_fp[1], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[1], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1106 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24298,7 +24298,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1107 - FFV1_0( w_fp[78], w_fp[18], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[18], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1107 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24312,7 +24312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1108 - VVV1_0( w_fp[0], w_fp[67], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[67], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1108 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24332,7 +24332,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1109 - FFV1_0( w_fp[46], w_fp[2], w_fp[76], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[76], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; @@ -24341,7 +24341,7 @@ namespace mg5amcCpu jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24350,7 +24350,7 @@ namespace mg5amcCpu jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24366,7 +24366,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1110 - FFV1_0( w_fp[104], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1110 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24382,7 +24382,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1111 - FFV1_0( w_fp[104], w_fp[15], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[15], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1111 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24396,7 +24396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1112 - FFV1_0( w_fp[58], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1112 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24412,7 +24412,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1113 - VVV1_0( w_fp[101], w_fp[1], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[1], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1113 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24432,7 +24432,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1114 - FFV1_0( w_fp[58], w_fp[15], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[15], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1114 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24446,7 +24446,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1115 - VVV1_0( w_fp[0], w_fp[68], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[68], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1115 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24466,7 +24466,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1116 - FFV1_0( w_fp[38], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -24475,7 +24475,7 @@ namespace mg5amcCpu jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24484,7 +24484,7 @@ namespace mg5amcCpu jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24500,7 +24500,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1117 - FFV1_0( w_fp[62], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1117 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24516,7 +24516,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1118 - FFV1_0( w_fp[62], w_fp[17], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[17], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1118 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24530,7 +24530,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1119 - FFV1_0( w_fp[60], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1119 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24546,7 +24546,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1120 - VVV1_0( w_fp[98], w_fp[1], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[1], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1120 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24566,7 +24566,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1121 - FFV1_0( w_fp[60], w_fp[17], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[17], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1121 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24580,7 +24580,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1122 - VVV1_0( w_fp[0], w_fp[59], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[59], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1122 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -24600,7 +24600,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1123 - FFV1_0( w_fp[41], w_fp[2], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[97], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -24609,7 +24609,7 @@ namespace mg5amcCpu jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[14] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24618,7 +24618,7 @@ namespace mg5amcCpu jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -24631,12 +24631,12 @@ namespace mg5amcCpu // *** DIAGRAM 1124 OF 1240 *** // Wavefunction(s) for diagram number 1124 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[71] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[97] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[71] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[97] ); // Amplitude(s) for diagram number 1124 - VVVV1_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -24653,7 +24653,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -24670,7 +24670,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -24687,7 +24687,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVVV1_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -24704,7 +24704,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV3_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -24721,7 +24721,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV4_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -24738,7 +24738,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVVV1_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -24755,7 +24755,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV3_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -24772,7 +24772,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -24793,12 +24793,12 @@ namespace mg5amcCpu // *** DIAGRAM 1125 OF 1240 *** // Wavefunction(s) for diagram number 1125 - VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 0., 0., w_fp[59] ); - VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 0., 0., w_fp[20] ); - VVV1P0_1( w_fp[97], w_fp[5], COUPs[0], 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[59] ); + VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[20] ); + VVV1P0_1( w_fp[97], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[60] ); // Amplitude(s) for diagram number 1125 - VVV1_0( w_fp[8], w_fp[6], w_fp[59], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[59], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -24815,7 +24815,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[20], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -24832,7 +24832,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -24853,12 +24853,12 @@ namespace mg5amcCpu // *** DIAGRAM 1126 OF 1240 *** // Wavefunction(s) for diagram number 1126 - VVV1P0_1( w_fp[21], w_fp[6], COUPs[0], 0., 0., w_fp[17] ); - VVV1P0_1( w_fp[71], w_fp[6], COUPs[0], 0., 0., w_fp[98] ); - VVV1P0_1( w_fp[97], w_fp[6], COUPs[0], 0., 0., w_fp[111] ); + VVV1P0_1( w_fp[21], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[17] ); + VVV1P0_1( w_fp[71], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[98] ); + VVV1P0_1( w_fp[97], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 1126 - VVV1_0( w_fp[8], w_fp[5], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[17], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -24875,7 +24875,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -24892,7 +24892,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -24916,7 +24916,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1127 - VVV1_0( w_fp[21], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -24933,7 +24933,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[71], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -24950,7 +24950,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[97], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[97], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[1] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -24971,22 +24971,22 @@ namespace mg5amcCpu // *** DIAGRAM 1128 OF 1240 *** // Wavefunction(s) for diagram number 1128 - FFV1_2( w_fp[3], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_2( w_fp[3], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); - FFV1_2( w_fp[3], w_fp[97], COUPs[1], cIPD[0], cIPD[1], w_fp[68] ); + FFV1_2( w_fp[3], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_2( w_fp[3], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); + FFV1_2( w_fp[3], w_fp[97], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[68] ); // Amplitude(s) for diagram number 1128 - FFV1_0( w_fp[16], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[90] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; - FFV1_0( w_fp[10], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[91] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; - FFV1_0( w_fp[68], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[68], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[90] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[94] += amp_sv[0]; @@ -24998,7 +24998,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1129 - FFV1_0( w_fp[3], w_fp[39], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25007,7 +25007,7 @@ namespace mg5amcCpu jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25016,7 +25016,7 @@ namespace mg5amcCpu jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25032,17 +25032,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1130 - FFV1_0( w_fp[41], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] += amp_sv[0]; jamp_sv[74] -= amp_sv[0]; jamp_sv[80] -= amp_sv[0]; jamp_sv[86] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[74] -= amp_sv[0]; jamp_sv[78] += amp_sv[0]; jamp_sv[80] -= amp_sv[0]; jamp_sv[84] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[39], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[97], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] -= amp_sv[0]; jamp_sv[78] += amp_sv[0]; jamp_sv[84] += amp_sv[0]; @@ -25054,17 +25054,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1131 - FFV1_0( w_fp[16], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[114] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - FFV1_0( w_fp[10], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[115] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - FFV1_0( w_fp[68], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[68], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; @@ -25076,7 +25076,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1132 - FFV1_0( w_fp[3], w_fp[47], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[59], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25085,7 +25085,7 @@ namespace mg5amcCpu jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25094,7 +25094,7 @@ namespace mg5amcCpu jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25110,17 +25110,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1133 - FFV1_0( w_fp[38], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] += amp_sv[0]; jamp_sv[98] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[47], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[98] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[47], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[97], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[108] += amp_sv[0]; @@ -25129,22 +25129,22 @@ namespace mg5amcCpu // *** DIAGRAM 1134 OF 1240 *** // Wavefunction(s) for diagram number 1134 - FFV1_1( w_fp[2], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); - FFV1_1( w_fp[2], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); - FFV1_1( w_fp[2], w_fp[97], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); + FFV1_1( w_fp[2], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); + FFV1_1( w_fp[2], w_fp[97], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); // Amplitude(s) for diagram number 1134 - FFV1_0( w_fp[38], w_fp[23], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[23], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[31] -= amp_sv[0]; jamp_sv[55] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[21], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[21], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; jamp_sv[49] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[71], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[71], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -25156,7 +25156,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1135 - FFV1_0( w_fp[38], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25165,7 +25165,7 @@ namespace mg5amcCpu jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25174,7 +25174,7 @@ namespace mg5amcCpu jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25190,17 +25190,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1136 - FFV1_0( w_fp[41], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[6] -= amp_sv[0]; jamp_sv[30] -= amp_sv[0]; jamp_sv[54] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[21], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[21], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; jamp_sv[48] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[71], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[71], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -25212,7 +25212,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1137 - FFV1_0( w_fp[41], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25221,7 +25221,7 @@ namespace mg5amcCpu jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25230,7 +25230,7 @@ namespace mg5amcCpu jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25246,7 +25246,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1138 - FFV1_0( w_fp[3], w_fp[23], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25255,7 +25255,7 @@ namespace mg5amcCpu jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[21], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[21], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25264,7 +25264,7 @@ namespace mg5amcCpu jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[71], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[71], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25280,7 +25280,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1139 - FFV1_0( w_fp[16], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25289,7 +25289,7 @@ namespace mg5amcCpu jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[10], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25298,7 +25298,7 @@ namespace mg5amcCpu jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[68], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[68], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25311,12 +25311,12 @@ namespace mg5amcCpu // *** DIAGRAM 1140 OF 1240 *** // Wavefunction(s) for diagram number 1140 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[68] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[29] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[10] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[68] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[29] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 1140 - VVVV1_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -25333,7 +25333,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV3_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[12] -= amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -25350,7 +25350,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVVV4_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -25367,7 +25367,7 @@ namespace mg5amcCpu jamp_sv[100] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVVV1_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -25384,7 +25384,7 @@ namespace mg5amcCpu jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVVV3_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -25401,7 +25401,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV4_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -25418,7 +25418,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV1_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[3] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -25435,7 +25435,7 @@ namespace mg5amcCpu jamp_sv[110] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; - VVVV3_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -25452,7 +25452,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV4_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -25473,12 +25473,12 @@ namespace mg5amcCpu // *** DIAGRAM 1141 OF 1240 *** // Wavefunction(s) for diagram number 1141 - VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 0., 0., w_fp[16] ); - VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 0., 0., w_fp[71] ); - VVV1P0_1( w_fp[10], w_fp[4], COUPs[0], 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[10], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 1141 - VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[12] -= amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -25495,7 +25495,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -25512,7 +25512,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -25533,12 +25533,12 @@ namespace mg5amcCpu // *** DIAGRAM 1142 OF 1240 *** // Wavefunction(s) for diagram number 1142 - VVV1P0_1( w_fp[68], w_fp[6], COUPs[0], 0., 0., w_fp[23] ); - VVV1P0_1( w_fp[29], w_fp[6], COUPs[0], 0., 0., w_fp[60] ); - VVV1P0_1( w_fp[10], w_fp[6], COUPs[0], 0., 0., w_fp[20] ); + VVV1P0_1( w_fp[68], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[29], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[10], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[20] ); // Amplitude(s) for diagram number 1142 - VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -25555,7 +25555,7 @@ namespace mg5amcCpu jamp_sv[100] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[60], COUPs[0], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -25572,7 +25572,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[20], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[48] += amp_sv[0]; @@ -25596,7 +25596,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1143 - VVV1_0( w_fp[68], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[68], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[12] -= amp_sv[0]; @@ -25613,7 +25613,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[29], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[29], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -25630,7 +25630,7 @@ namespace mg5amcCpu jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[10], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[10], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[3] += amp_sv[0]; jamp_sv[26] += amp_sv[0]; @@ -25651,22 +25651,22 @@ namespace mg5amcCpu // *** DIAGRAM 1144 OF 1240 *** // Wavefunction(s) for diagram number 1144 - FFV1_2( w_fp[3], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[59] ); - FFV1_2( w_fp[3], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[111] ); - FFV1_2( w_fp[3], w_fp[10], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + FFV1_2( w_fp[3], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[59] ); + FFV1_2( w_fp[3], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[111] ); + FFV1_2( w_fp[3], w_fp[10], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 1144 - FFV1_0( w_fp[59], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[59], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[66] += amp_sv[0]; jamp_sv[67] -= amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[71] += amp_sv[0]; - FFV1_0( w_fp[111], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[111], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[67] -= amp_sv[0]; jamp_sv[68] += amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[70] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[66] -= amp_sv[0]; jamp_sv[68] += amp_sv[0]; jamp_sv[70] += amp_sv[0]; @@ -25678,7 +25678,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1145 - FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25687,7 +25687,7 @@ namespace mg5amcCpu jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25696,7 +25696,7 @@ namespace mg5amcCpu jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25712,17 +25712,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1146 - FFV1_0( w_fp[41], w_fp[33], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] += amp_sv[0]; jamp_sv[50] -= amp_sv[0]; jamp_sv[56] -= amp_sv[0]; jamp_sv[62] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[50] -= amp_sv[0]; jamp_sv[54] += amp_sv[0]; jamp_sv[56] -= amp_sv[0]; jamp_sv[60] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[33], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[10], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] -= amp_sv[0]; jamp_sv[54] += amp_sv[0]; jamp_sv[60] += amp_sv[0]; @@ -25734,17 +25734,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1147 - FFV1_0( w_fp[59], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[59], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[108] += amp_sv[0]; jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - FFV1_0( w_fp[111], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[111], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[109] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[108] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; @@ -25756,7 +25756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1148 - FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25765,7 +25765,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25774,7 +25774,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25790,17 +25790,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1149 - FFV1_0( w_fp[46], w_fp[47], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] += amp_sv[0]; jamp_sv[100] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[47], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[100] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[47], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[10], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; @@ -25809,22 +25809,22 @@ namespace mg5amcCpu // *** DIAGRAM 1150 OF 1240 *** // Wavefunction(s) for diagram number 1150 - FFV1_1( w_fp[2], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[17] ); - FFV1_1( w_fp[2], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[68] ); - FFV1_1( w_fp[2], w_fp[10], COUPs[1], cIPD[0], cIPD[1], w_fp[29] ); + FFV1_1( w_fp[2], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[17] ); + FFV1_1( w_fp[2], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[68] ); + FFV1_1( w_fp[2], w_fp[10], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[29] ); // Amplitude(s) for diagram number 1150 - FFV1_0( w_fp[46], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[37] -= amp_sv[0]; jamp_sv[79] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[68], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[68], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; jamp_sv[73] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[29], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[29], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[73] += amp_sv[0]; @@ -25836,7 +25836,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1151 - FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25845,7 +25845,7 @@ namespace mg5amcCpu jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25854,7 +25854,7 @@ namespace mg5amcCpu jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25870,17 +25870,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1152 - FFV1_0( w_fp[41], w_fp[17], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[17], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] += amp_sv[0]; jamp_sv[12] -= amp_sv[0]; jamp_sv[36] -= amp_sv[0]; jamp_sv[78] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[68], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[68], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[36] -= amp_sv[0]; jamp_sv[72] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[29], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[29], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[72] += amp_sv[0]; @@ -25892,7 +25892,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1153 - FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25901,7 +25901,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25910,7 +25910,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25926,7 +25926,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1154 - FFV1_0( w_fp[3], w_fp[17], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25935,7 +25935,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[68], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[68], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25944,7 +25944,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[29], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[29], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25960,7 +25960,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1155 - FFV1_0( w_fp[59], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[59], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25969,7 +25969,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[111], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[111], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; @@ -25978,7 +25978,7 @@ namespace mg5amcCpu jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[98], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -25991,12 +25991,12 @@ namespace mg5amcCpu // *** DIAGRAM 1156 OF 1240 *** // Wavefunction(s) for diagram number 1156 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[98] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[27] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[98] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[27] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 1156 - VVVV1_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[18] -= amp_sv[0]; @@ -26013,7 +26013,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[18] -= amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -26030,7 +26030,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; - VVVV4_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -26047,7 +26047,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - VVVV1_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -26064,7 +26064,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[97] -= amp_sv[0]; - VVVV3_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -26081,7 +26081,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - VVVV4_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -26098,7 +26098,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVVV1_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -26115,7 +26115,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[102] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - VVVV3_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -26132,7 +26132,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVVV4_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -26153,12 +26153,12 @@ namespace mg5amcCpu // *** DIAGRAM 1157 OF 1240 *** // Wavefunction(s) for diagram number 1157 - VVV1P0_1( w_fp[98], w_fp[4], COUPs[0], 0., 0., w_fp[59] ); - VVV1P0_1( w_fp[27], w_fp[4], COUPs[0], 0., 0., w_fp[29] ); - VVV1P0_1( w_fp[111], w_fp[4], COUPs[0], 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[98], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[59] ); + VVV1P0_1( w_fp[27], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[29] ); + VVV1P0_1( w_fp[111], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 1157 - VVV1_0( w_fp[8], w_fp[5], w_fp[59], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[59], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[18] -= amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -26175,7 +26175,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[29], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -26192,7 +26192,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[68], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -26213,12 +26213,12 @@ namespace mg5amcCpu // *** DIAGRAM 1158 OF 1240 *** // Wavefunction(s) for diagram number 1158 - VVV1P0_1( w_fp[98], w_fp[5], COUPs[0], 0., 0., w_fp[17] ); - VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 0., 0., w_fp[21] ); - VVV1P0_1( w_fp[111], w_fp[5], COUPs[0], 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[98], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[17] ); + VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[111], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[71] ); // Amplitude(s) for diagram number 1158 - VVV1_0( w_fp[8], w_fp[4], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[17], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -26235,7 +26235,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -26252,7 +26252,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[71], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[49] += amp_sv[0]; @@ -26276,7 +26276,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1159 - VVV1_0( w_fp[98], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[18] -= amp_sv[0]; @@ -26293,7 +26293,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVV1_0( w_fp[27], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -26310,7 +26310,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[97] -= amp_sv[0]; - VVV1_0( w_fp[111], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[111], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; jamp_sv[28] += amp_sv[0]; @@ -26331,22 +26331,22 @@ namespace mg5amcCpu // *** DIAGRAM 1160 OF 1240 *** // Wavefunction(s) for diagram number 1160 - FFV1_2( w_fp[3], w_fp[98], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_2( w_fp[3], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); - FFV1_2( w_fp[3], w_fp[111], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); + FFV1_2( w_fp[3], w_fp[98], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_2( w_fp[3], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); + FFV1_2( w_fp[3], w_fp[111], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); // Amplitude(s) for diagram number 1160 - FFV1_0( w_fp[16], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[60] += amp_sv[0]; jamp_sv[61] -= amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[65] += amp_sv[0]; - FFV1_0( w_fp[20], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[61] -= amp_sv[0]; jamp_sv[62] += amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[64] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[60] -= amp_sv[0]; jamp_sv[62] += amp_sv[0]; jamp_sv[64] += amp_sv[0]; @@ -26358,7 +26358,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1161 - FFV1_0( w_fp[3], w_fp[33], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26367,7 +26367,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26376,7 +26376,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26392,17 +26392,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1162 - FFV1_0( w_fp[38], w_fp[33], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] += amp_sv[0]; jamp_sv[52] -= amp_sv[0]; jamp_sv[58] -= amp_sv[0]; jamp_sv[68] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[33], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[52] -= amp_sv[0]; jamp_sv[55] += amp_sv[0]; jamp_sv[58] -= amp_sv[0]; jamp_sv[66] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[33], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] -= amp_sv[0]; jamp_sv[55] += amp_sv[0]; jamp_sv[66] += amp_sv[0]; @@ -26414,17 +26414,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1163 - FFV1_0( w_fp[16], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[84] += amp_sv[0]; jamp_sv[85] -= amp_sv[0]; jamp_sv[87] -= amp_sv[0]; jamp_sv[89] += amp_sv[0]; - FFV1_0( w_fp[20], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[85] -= amp_sv[0]; jamp_sv[86] += amp_sv[0]; jamp_sv[87] -= amp_sv[0]; jamp_sv[88] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[84] -= amp_sv[0]; jamp_sv[86] += amp_sv[0]; jamp_sv[88] += amp_sv[0]; @@ -26436,7 +26436,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1164 - FFV1_0( w_fp[3], w_fp[39], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[59], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26445,7 +26445,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26454,7 +26454,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26470,17 +26470,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1165 - FFV1_0( w_fp[46], w_fp[39], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] += amp_sv[0]; jamp_sv[76] -= amp_sv[0]; jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[76] -= amp_sv[0]; jamp_sv[79] += amp_sv[0]; jamp_sv[82] -= amp_sv[0]; jamp_sv[90] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[39], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[111], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] -= amp_sv[0]; jamp_sv[79] += amp_sv[0]; jamp_sv[90] += amp_sv[0]; @@ -26489,22 +26489,22 @@ namespace mg5amcCpu // *** DIAGRAM 1166 OF 1240 *** // Wavefunction(s) for diagram number 1166 - FFV1_1( w_fp[2], w_fp[98], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); - FFV1_1( w_fp[2], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); - FFV1_1( w_fp[2], w_fp[111], COUPs[1], cIPD[0], cIPD[1], w_fp[27] ); + FFV1_1( w_fp[2], w_fp[98], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); + FFV1_1( w_fp[2], w_fp[111], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[27] ); // Amplitude(s) for diagram number 1166 - FFV1_0( w_fp[46], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[43] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[98], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[98], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[43] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[27], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[27], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[97] += amp_sv[0]; @@ -26516,7 +26516,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1167 - FFV1_0( w_fp[46], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26525,7 +26525,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26534,7 +26534,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26550,17 +26550,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1168 - FFV1_0( w_fp[38], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] += amp_sv[0]; jamp_sv[18] -= amp_sv[0]; jamp_sv[42] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[98], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[98], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[42] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[27], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[27], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; @@ -26572,7 +26572,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1169 - FFV1_0( w_fp[38], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26581,7 +26581,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26590,7 +26590,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26606,7 +26606,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1170 - FFV1_0( w_fp[3], w_fp[23], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26615,7 +26615,7 @@ namespace mg5amcCpu jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[98], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[98], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26624,7 +26624,7 @@ namespace mg5amcCpu jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[27], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[27], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26640,7 +26640,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1171 - FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[60] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26649,7 +26649,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[20], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26658,7 +26658,7 @@ namespace mg5amcCpu jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[60], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26671,25 +26671,25 @@ namespace mg5amcCpu // *** DIAGRAM 1172 OF 1240 *** // Wavefunction(s) for diagram number 1172 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[60] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[20] ); - FFV1_2( w_fp[3], w_fp[60], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_2( w_fp[3], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[27] ); - FFV1_2( w_fp[3], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[60] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[20] ); + FFV1_2( w_fp[3], w_fp[60], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_2( w_fp[3], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[27] ); + FFV1_2( w_fp[3], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 1172 - FFV1_0( w_fp[16], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[42] += amp_sv[0]; jamp_sv[43] -= amp_sv[0]; jamp_sv[45] -= amp_sv[0]; jamp_sv[47] += amp_sv[0]; - FFV1_0( w_fp[27], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[27], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[43] -= amp_sv[0]; jamp_sv[44] += amp_sv[0]; jamp_sv[45] -= amp_sv[0]; jamp_sv[46] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[42] -= amp_sv[0]; jamp_sv[44] += amp_sv[0]; jamp_sv[46] += amp_sv[0]; @@ -26698,12 +26698,12 @@ namespace mg5amcCpu // *** DIAGRAM 1173 OF 1240 *** // Wavefunction(s) for diagram number 1173 - VVV1P0_1( w_fp[60], w_fp[6], COUPs[0], 0., 0., w_fp[23] ); - VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 0., 0., w_fp[68] ); - VVV1P0_1( w_fp[20], w_fp[6], COUPs[0], 0., 0., w_fp[29] ); + VVV1P0_1( w_fp[60], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[20], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[29] ); // Amplitude(s) for diagram number 1173 - FFV1_0( w_fp[3], w_fp[77], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26712,7 +26712,7 @@ namespace mg5amcCpu jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26721,7 +26721,7 @@ namespace mg5amcCpu jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26737,17 +26737,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1174 - FFV1_0( w_fp[41], w_fp[77], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] += amp_sv[0]; jamp_sv[26] -= amp_sv[0]; jamp_sv[32] -= amp_sv[0]; jamp_sv[38] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[26] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; jamp_sv[32] -= amp_sv[0]; jamp_sv[36] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[77], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[24] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; jamp_sv[36] += amp_sv[0]; @@ -26756,22 +26756,22 @@ namespace mg5amcCpu // *** DIAGRAM 1175 OF 1240 *** // Wavefunction(s) for diagram number 1175 - FFV1_1( w_fp[2], w_fp[60], COUPs[1], cIPD[0], cIPD[1], w_fp[59] ); - FFV1_1( w_fp[2], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); - FFV1_1( w_fp[2], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_1( w_fp[2], w_fp[60], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[59] ); + FFV1_1( w_fp[2], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); + FFV1_1( w_fp[2], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 1175 - FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[61] -= amp_sv[0]; jamp_sv[85] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[71], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[71], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[15] -= amp_sv[0]; jamp_sv[51] += amp_sv[0]; jamp_sv[61] -= amp_sv[0]; jamp_sv[75] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[21], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[21], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[51] += amp_sv[0]; jamp_sv[75] += amp_sv[0]; @@ -26783,7 +26783,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1176 - FFV1_0( w_fp[52], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26792,7 +26792,7 @@ namespace mg5amcCpu jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26801,7 +26801,7 @@ namespace mg5amcCpu jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26817,17 +26817,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1177 - FFV1_0( w_fp[52], w_fp[47], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[99] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[101] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[47], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[20], COUPs[1], 1.0, &_fp[0] ); jamp_sv[99] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; jamp_sv[115] += amp_sv[0]; @@ -26839,7 +26839,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1178 - FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[9] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[14] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26848,7 +26848,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[85] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[71], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[71], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[14] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26857,7 +26857,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[21], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[21], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[9] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26873,7 +26873,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1179 - FFV1_0( w_fp[16], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26882,7 +26882,7 @@ namespace mg5amcCpu jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[27], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[27], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; @@ -26891,7 +26891,7 @@ namespace mg5amcCpu jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[42] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -26907,7 +26907,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1180 - VVV1_0( w_fp[60], w_fp[72], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[60], w_fp[72], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; jamp_sv[14] += amp_sv[0]; @@ -26924,7 +26924,7 @@ namespace mg5amcCpu jamp_sv[103] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVV1_0( w_fp[24], w_fp[72], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[72], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[14] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[43] -= amp_sv[0]; @@ -26941,7 +26941,7 @@ namespace mg5amcCpu jamp_sv[104] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[20], w_fp[72], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[20], w_fp[72], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[42] -= amp_sv[0]; @@ -26965,7 +26965,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1181 - VVVV1_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -26982,7 +26982,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[14] -= amp_sv[0]; @@ -26999,7 +26999,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - VVVV4_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -27016,7 +27016,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV1_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -27033,7 +27033,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV3_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[43] += amp_sv[0]; @@ -27050,7 +27050,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVVV4_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[15] += amp_sv[0]; jamp_sv[26] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -27067,7 +27067,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV1_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -27084,7 +27084,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[115] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV3_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; jamp_sv[42] += amp_sv[0]; @@ -27101,7 +27101,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[24] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -27122,12 +27122,12 @@ namespace mg5amcCpu // *** DIAGRAM 1182 OF 1240 *** // Wavefunction(s) for diagram number 1182 - VVV1P0_1( w_fp[60], w_fp[1], COUPs[0], 0., 0., w_fp[72] ); - VVV1P0_1( w_fp[24], w_fp[1], COUPs[0], 0., 0., w_fp[60] ); - VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 0., 0., w_fp[24] ); + VVV1P0_1( w_fp[60], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[72] ); + VVV1P0_1( w_fp[24], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 1182 - VVV1_0( w_fp[8], w_fp[6], w_fp[72], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[72], COUPs[0], 1.0, &_fp[0] ); jamp_sv[8] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[24] -= amp_sv[0]; @@ -27144,7 +27144,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[26] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -27161,7 +27161,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[24], COUPs[0], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -27185,7 +27185,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1183 - VVV1_0( w_fp[1], w_fp[8], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[23], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[24] += amp_sv[0]; @@ -27202,7 +27202,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[68], COUPs[0], 1.0, &_fp[0] ); jamp_sv[15] += amp_sv[0]; jamp_sv[26] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -27219,7 +27219,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[24] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -27243,7 +27243,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1184 - FFV1_0( w_fp[3], w_fp[47], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27252,7 +27252,7 @@ namespace mg5amcCpu jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27261,7 +27261,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27277,17 +27277,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1185 - FFV1_0( w_fp[16], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[102] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - FFV1_0( w_fp[27], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[27], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[103] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; @@ -27299,7 +27299,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1186 - FFV1_0( w_fp[41], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[14] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27308,7 +27308,7 @@ namespace mg5amcCpu jamp_sv[38] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[14] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[26] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27317,7 +27317,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[24] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27333,17 +27333,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1187 - FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[60] -= amp_sv[0]; jamp_sv[84] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[71], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[71], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[14] -= amp_sv[0]; jamp_sv[50] += amp_sv[0]; jamp_sv[60] -= amp_sv[0]; jamp_sv[74] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[21], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[21], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[8] -= amp_sv[0]; jamp_sv[50] += amp_sv[0]; jamp_sv[74] += amp_sv[0]; @@ -27352,25 +27352,25 @@ namespace mg5amcCpu // *** DIAGRAM 1188 OF 1240 *** // Wavefunction(s) for diagram number 1188 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[71] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[59] ); - FFV1_2( w_fp[3], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[24] ); - FFV1_2( w_fp[3], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); - FFV1_2( w_fp[3], w_fp[59], COUPs[1], cIPD[0], cIPD[1], w_fp[72] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[71] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[59] ); + FFV1_2( w_fp[3], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[24] ); + FFV1_2( w_fp[3], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); + FFV1_2( w_fp[3], w_fp[59], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[72] ); // Amplitude(s) for diagram number 1188 - FFV1_0( w_fp[24], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[24], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[36] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; jamp_sv[39] -= amp_sv[0]; jamp_sv[41] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[37] -= amp_sv[0]; jamp_sv[38] += amp_sv[0]; jamp_sv[39] -= amp_sv[0]; jamp_sv[40] += amp_sv[0]; - FFV1_0( w_fp[72], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[72], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[36] -= amp_sv[0]; jamp_sv[38] += amp_sv[0]; jamp_sv[40] += amp_sv[0]; @@ -27379,12 +27379,12 @@ namespace mg5amcCpu // *** DIAGRAM 1189 OF 1240 *** // Wavefunction(s) for diagram number 1189 - VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 0., 0., w_fp[98] ); - VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 0., 0., w_fp[27] ); - VVV1P0_1( w_fp[59], w_fp[5], COUPs[0], 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[98] ); + VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[27] ); + VVV1P0_1( w_fp[59], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[16] ); // Amplitude(s) for diagram number 1189 - FFV1_0( w_fp[3], w_fp[77], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[34] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27393,7 +27393,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[28] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[34] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27402,7 +27402,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[36] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -27418,17 +27418,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1190 - FFV1_0( w_fp[38], w_fp[77], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] += amp_sv[0]; jamp_sv[28] -= amp_sv[0]; jamp_sv[34] -= amp_sv[0]; jamp_sv[44] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[77], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[28] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; jamp_sv[34] -= amp_sv[0]; jamp_sv[42] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[77], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[59], COUPs[1], 1.0, &_fp[0] ); jamp_sv[25] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; jamp_sv[42] += amp_sv[0]; @@ -27437,22 +27437,22 @@ namespace mg5amcCpu // *** DIAGRAM 1191 OF 1240 *** // Wavefunction(s) for diagram number 1191 - FFV1_1( w_fp[2], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[29] ); - FFV1_1( w_fp[2], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[68] ); - FFV1_1( w_fp[2], w_fp[59], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[29] ); + FFV1_1( w_fp[2], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[68] ); + FFV1_1( w_fp[2], w_fp[59], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 1191 - FFV1_0( w_fp[52], w_fp[29], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[29], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[67] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[68], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[68], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[21] -= amp_sv[0]; jamp_sv[53] += amp_sv[0]; jamp_sv[67] -= amp_sv[0]; jamp_sv[99] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] -= amp_sv[0]; jamp_sv[53] += amp_sv[0]; jamp_sv[99] += amp_sv[0]; @@ -27464,7 +27464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1192 - FFV1_0( w_fp[52], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27473,7 +27473,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27482,7 +27482,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -27498,17 +27498,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1193 - FFV1_0( w_fp[52], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[75] += amp_sv[0]; jamp_sv[77] -= amp_sv[0]; jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[77] -= amp_sv[0]; jamp_sv[85] += amp_sv[0]; jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[39], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[59], COUPs[1], 1.0, &_fp[0] ); jamp_sv[75] -= amp_sv[0]; jamp_sv[85] += amp_sv[0]; jamp_sv[91] += amp_sv[0]; @@ -27520,7 +27520,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1194 - FFV1_0( w_fp[3], w_fp[29], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[29], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27529,7 +27529,7 @@ namespace mg5amcCpu jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[68], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[68], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -27538,7 +27538,7 @@ namespace mg5amcCpu jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[23], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -27554,7 +27554,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1195 - FFV1_0( w_fp[24], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[24], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[36] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27563,7 +27563,7 @@ namespace mg5amcCpu jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[60], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27572,7 +27572,7 @@ namespace mg5amcCpu jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[72], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[72], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[36] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -27588,7 +27588,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1196 - VVV1_0( w_fp[21], w_fp[66], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[66], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[20] += amp_sv[0]; @@ -27605,7 +27605,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVV1_0( w_fp[71], w_fp[66], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[66], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[20] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -27622,7 +27622,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[98] -= amp_sv[0]; jamp_sv[99] += amp_sv[0]; - VVV1_0( w_fp[59], w_fp[66], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[59], w_fp[66], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[10] += amp_sv[0]; jamp_sv[11] -= amp_sv[0]; jamp_sv[36] -= amp_sv[0]; @@ -27646,7 +27646,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1197 - VVVV1_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[25] -= amp_sv[0]; @@ -27663,7 +27663,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - VVVV3_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] += amp_sv[0]; jamp_sv[11] -= amp_sv[0]; jamp_sv[20] -= amp_sv[0]; @@ -27680,7 +27680,7 @@ namespace mg5amcCpu jamp_sv[83] += amp_sv[0]; jamp_sv[108] += amp_sv[0]; jamp_sv[109] -= amp_sv[0]; - VVVV4_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[11] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; jamp_sv[25] += amp_sv[0]; @@ -27697,7 +27697,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[109] -= amp_sv[0]; - VVVV1_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -27714,7 +27714,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVVV3_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; jamp_sv[37] += amp_sv[0]; @@ -27731,7 +27731,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV4_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[21] += amp_sv[0]; jamp_sv[28] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -27748,7 +27748,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV1_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -27765,7 +27765,7 @@ namespace mg5amcCpu jamp_sv[94] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVVV3_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; jamp_sv[36] += amp_sv[0]; @@ -27782,7 +27782,7 @@ namespace mg5amcCpu jamp_sv[99] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV4_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[25] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -27803,12 +27803,12 @@ namespace mg5amcCpu // *** DIAGRAM 1198 OF 1240 *** // Wavefunction(s) for diagram number 1198 - VVV1P0_1( w_fp[21], w_fp[1], COUPs[0], 0., 0., w_fp[66] ); - VVV1P0_1( w_fp[71], w_fp[1], COUPs[0], 0., 0., w_fp[21] ); - VVV1P0_1( w_fp[59], w_fp[1], COUPs[0], 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[21], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[66] ); + VVV1P0_1( w_fp[71], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[59], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[71] ); // Amplitude(s) for diagram number 1198 - VVV1_0( w_fp[8], w_fp[5], w_fp[66], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[66], COUPs[0], 1.0, &_fp[0] ); jamp_sv[10] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[25] -= amp_sv[0]; @@ -27825,7 +27825,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -27842,7 +27842,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[71], COUPs[0], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -27866,7 +27866,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1199 - VVV1_0( w_fp[1], w_fp[8], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[98], COUPs[0], 1.0, &_fp[0] ); jamp_sv[11] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; jamp_sv[25] += amp_sv[0]; @@ -27883,7 +27883,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[109] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); jamp_sv[21] += amp_sv[0]; jamp_sv[28] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -27900,7 +27900,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[16], COUPs[0], 1.0, &_fp[0] ); jamp_sv[11] += amp_sv[0]; jamp_sv[25] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -27924,7 +27924,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1200 - FFV1_0( w_fp[3], w_fp[39], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27933,7 +27933,7 @@ namespace mg5amcCpu jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27942,7 +27942,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27958,17 +27958,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1201 - FFV1_0( w_fp[24], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[24], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[78] += amp_sv[0]; jamp_sv[79] -= amp_sv[0]; jamp_sv[81] -= amp_sv[0]; jamp_sv[83] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[79] -= amp_sv[0]; jamp_sv[80] += amp_sv[0]; jamp_sv[81] -= amp_sv[0]; jamp_sv[82] += amp_sv[0]; - FFV1_0( w_fp[72], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[72], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[78] -= amp_sv[0]; jamp_sv[80] += amp_sv[0]; jamp_sv[82] += amp_sv[0]; @@ -27980,7 +27980,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1202 - FFV1_0( w_fp[38], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27989,7 +27989,7 @@ namespace mg5amcCpu jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -27998,7 +27998,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28014,17 +28014,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1203 - FFV1_0( w_fp[38], w_fp[29], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[29], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[66] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[68], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[68], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[20] -= amp_sv[0]; jamp_sv[52] += amp_sv[0]; jamp_sv[66] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[23], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[23], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[10] -= amp_sv[0]; jamp_sv[52] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; @@ -28033,25 +28033,25 @@ namespace mg5amcCpu // *** DIAGRAM 1204 OF 1240 *** // Wavefunction(s) for diagram number 1204 - VVVV1P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[23] ); - VVVV3P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[68] ); - VVVV4P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[29] ); - FFV1_2( w_fp[3], w_fp[23], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); - FFV1_2( w_fp[3], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); - FFV1_2( w_fp[3], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[66] ); + VVVV1P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[23] ); + VVVV3P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[68] ); + VVVV4P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[29] ); + FFV1_2( w_fp[3], w_fp[23], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); + FFV1_2( w_fp[3], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[3], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[66] ); // Amplitude(s) for diagram number 1204 - FFV1_0( w_fp[71], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[30] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; jamp_sv[33] -= amp_sv[0]; jamp_sv[35] += amp_sv[0]; - FFV1_0( w_fp[21], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[31] -= amp_sv[0]; jamp_sv[32] += amp_sv[0]; jamp_sv[33] -= amp_sv[0]; jamp_sv[34] += amp_sv[0]; - FFV1_0( w_fp[66], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[66], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[30] -= amp_sv[0]; jamp_sv[32] += amp_sv[0]; jamp_sv[34] += amp_sv[0]; @@ -28060,12 +28060,12 @@ namespace mg5amcCpu // *** DIAGRAM 1205 OF 1240 *** // Wavefunction(s) for diagram number 1205 - VVV1P0_1( w_fp[23], w_fp[4], COUPs[0], 0., 0., w_fp[72] ); - VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 0., 0., w_fp[60] ); - VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 0., 0., w_fp[24] ); + VVV1P0_1( w_fp[23], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[72] ); + VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 1205 - FFV1_0( w_fp[3], w_fp[77], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28074,7 +28074,7 @@ namespace mg5amcCpu jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[29] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28083,7 +28083,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28099,17 +28099,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1206 - FFV1_0( w_fp[46], w_fp[77], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[27] += amp_sv[0]; jamp_sv[29] -= amp_sv[0]; jamp_sv[40] -= amp_sv[0]; jamp_sv[46] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[77], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[29] -= amp_sv[0]; jamp_sv[37] += amp_sv[0]; jamp_sv[40] -= amp_sv[0]; jamp_sv[43] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[27] -= amp_sv[0]; jamp_sv[37] += amp_sv[0]; jamp_sv[43] += amp_sv[0]; @@ -28118,22 +28118,22 @@ namespace mg5amcCpu // *** DIAGRAM 1207 OF 1240 *** // Wavefunction(s) for diagram number 1207 - FFV1_1( w_fp[2], w_fp[23], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); - FFV1_1( w_fp[2], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_1( w_fp[2], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[27] ); + FFV1_1( w_fp[2], w_fp[23], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); + FFV1_1( w_fp[2], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[2], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[27] ); // Amplitude(s) for diagram number 1207 - FFV1_0( w_fp[52], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[17] += amp_sv[0]; jamp_sv[23] -= amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[16], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[16], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[23] -= amp_sv[0]; jamp_sv[77] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[27], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[27], w_fp[4], COUPs[1], 1.0, &_fp[0] ); jamp_sv[17] -= amp_sv[0]; jamp_sv[77] += amp_sv[0]; jamp_sv[101] += amp_sv[0]; @@ -28145,7 +28145,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1208 - FFV1_0( w_fp[52], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28154,7 +28154,7 @@ namespace mg5amcCpu jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28163,7 +28163,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28179,17 +28179,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1209 - FFV1_0( w_fp[52], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[51] += amp_sv[0]; jamp_sv[53] -= amp_sv[0]; jamp_sv[64] -= amp_sv[0]; jamp_sv[70] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[33], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[53] -= amp_sv[0]; jamp_sv[61] += amp_sv[0]; jamp_sv[64] -= amp_sv[0]; jamp_sv[67] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); jamp_sv[51] -= amp_sv[0]; jamp_sv[61] += amp_sv[0]; jamp_sv[67] += amp_sv[0]; @@ -28201,7 +28201,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1210 - FFV1_0( w_fp[3], w_fp[77], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28210,7 +28210,7 @@ namespace mg5amcCpu jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[16], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[16], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -28219,7 +28219,7 @@ namespace mg5amcCpu jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[27], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[27], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -28235,7 +28235,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1211 - FFV1_0( w_fp[71], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[30] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28244,7 +28244,7 @@ namespace mg5amcCpu jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[21], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[31] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[33] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28253,7 +28253,7 @@ namespace mg5amcCpu jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[66], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[66], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[30] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[32] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[34] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -28269,7 +28269,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1212 - VVV1_0( w_fp[23], w_fp[61], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[23], w_fp[61], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[22] += amp_sv[0]; @@ -28286,7 +28286,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[68], w_fp[61], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[68], w_fp[61], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[22] += amp_sv[0]; jamp_sv[23] -= amp_sv[0]; jamp_sv[31] -= amp_sv[0]; @@ -28303,7 +28303,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[100] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[29], w_fp[61], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[29], w_fp[61], w_fp[8], COUPs[0], 1.0, &_fp[0] ); jamp_sv[16] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[30] -= amp_sv[0]; @@ -28327,7 +28327,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1213 - VVVV1_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] += amp_sv[0]; jamp_sv[22] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; @@ -28344,7 +28344,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - VVVV3_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[22] -= amp_sv[0]; @@ -28361,7 +28361,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV4_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[17] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; jamp_sv[27] += amp_sv[0]; @@ -28378,7 +28378,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV1_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -28395,7 +28395,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV3_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -28412,7 +28412,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[23] += amp_sv[0]; jamp_sv[29] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -28429,7 +28429,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV1_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -28446,7 +28446,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV3_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -28463,7 +28463,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV4_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[17] += amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -28484,12 +28484,12 @@ namespace mg5amcCpu // *** DIAGRAM 1214 OF 1240 *** // Wavefunction(s) for diagram number 1214 - VVV1P0_1( w_fp[23], w_fp[1], COUPs[0], 0., 0., w_fp[61] ); - VVV1P0_1( w_fp[68], w_fp[1], COUPs[0], 0., 0., w_fp[23] ); - VVV1P0_1( w_fp[29], w_fp[1], COUPs[0], 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[23], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[61] ); + VVV1P0_1( w_fp[68], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[29], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 1214 - VVV1_0( w_fp[8], w_fp[4], w_fp[61], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[61], COUPs[0], 1.0, &_fp[0] ); jamp_sv[16] += amp_sv[0]; jamp_sv[22] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; @@ -28506,7 +28506,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -28523,7 +28523,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[68], COUPs[0], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; @@ -28547,7 +28547,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1215 - VVV1_0( w_fp[1], w_fp[8], w_fp[72], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[72], COUPs[0], 1.0, &_fp[0] ); jamp_sv[17] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; jamp_sv[27] += amp_sv[0]; @@ -28564,7 +28564,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[60], COUPs[0], 1.0, &_fp[0] ); jamp_sv[23] += amp_sv[0]; jamp_sv[29] -= amp_sv[0]; jamp_sv[31] += amp_sv[0]; @@ -28581,7 +28581,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); jamp_sv[17] += amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[30] += amp_sv[0]; @@ -28605,7 +28605,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1216 - FFV1_0( w_fp[3], w_fp[33], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28614,7 +28614,7 @@ namespace mg5amcCpu jamp_sv[59] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[53] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28623,7 +28623,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28639,17 +28639,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1217 - FFV1_0( w_fp[71], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[54] += amp_sv[0]; jamp_sv[55] -= amp_sv[0]; jamp_sv[57] -= amp_sv[0]; jamp_sv[59] += amp_sv[0]; - FFV1_0( w_fp[21], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[55] -= amp_sv[0]; jamp_sv[56] += amp_sv[0]; jamp_sv[57] -= amp_sv[0]; jamp_sv[58] += amp_sv[0]; - FFV1_0( w_fp[66], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[66], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[54] -= amp_sv[0]; jamp_sv[56] += amp_sv[0]; jamp_sv[58] += amp_sv[0]; @@ -28661,7 +28661,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1218 - FFV1_0( w_fp[46], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28670,7 +28670,7 @@ namespace mg5amcCpu jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28679,7 +28679,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; @@ -28695,17 +28695,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1219 - FFV1_0( w_fp[46], w_fp[77], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] += amp_sv[0]; jamp_sv[22] -= amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[16], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[16], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[22] -= amp_sv[0]; jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[27], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[27], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[16] -= amp_sv[0]; jamp_sv[76] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; @@ -28717,7 +28717,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1220 - VVVV1_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28734,7 +28734,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28751,7 +28751,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -28768,7 +28768,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28785,7 +28785,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28802,7 +28802,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[19] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -28819,7 +28819,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -28836,7 +28836,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -28853,7 +28853,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[20] -= amp_sv[0]; jamp_sv[22] -= amp_sv[0]; @@ -28874,12 +28874,12 @@ namespace mg5amcCpu // *** DIAGRAM 1221 OF 1240 *** // Wavefunction(s) for diagram number 1221 - VVV1P0_1( w_fp[0], w_fp[73], COUPs[0], 0., 0., w_fp[27] ); - VVV1P0_1( w_fp[0], w_fp[79], COUPs[0], 0., 0., w_fp[1] ); - VVV1P0_1( w_fp[0], w_fp[80], COUPs[0], 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[0], w_fp[73], COUPs[0], 1.0, 0., 0., w_fp[27] ); + VVV1P0_1( w_fp[0], w_fp[79], COUPs[0], 1.0, 0., 0., w_fp[1] ); + VVV1P0_1( w_fp[0], w_fp[80], COUPs[0], 1.0, 0., 0., w_fp[16] ); // Amplitude(s) for diagram number 1221 - VVV1_0( w_fp[8], w_fp[6], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[27], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28896,7 +28896,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[1], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[1], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28913,7 +28913,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -28937,7 +28937,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1222 - VVV1_0( w_fp[73], w_fp[6], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[73], w_fp[6], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28954,7 +28954,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[79], w_fp[6], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[79], w_fp[6], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -28971,7 +28971,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[80], w_fp[6], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[80], w_fp[6], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -28995,7 +28995,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1223 - FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29004,7 +29004,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29013,7 +29013,7 @@ namespace mg5amcCpu jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -29029,17 +29029,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1224 - FFV1_0( w_fp[3], w_fp[113], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] += amp_sv[0]; jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[113], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[97] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[113], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[96] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; @@ -29051,7 +29051,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1225 - FFV1_0( w_fp[41], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29060,7 +29060,7 @@ namespace mg5amcCpu jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[1], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29069,7 +29069,7 @@ namespace mg5amcCpu jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -29085,17 +29085,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1226 - FFV1_0( w_fp[62], w_fp[2], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[73], COUPs[1], 1.0, &_fp[0] ); jamp_sv[32] += amp_sv[0]; jamp_sv[38] -= amp_sv[0]; jamp_sv[62] -= amp_sv[0]; jamp_sv[86] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[38] -= amp_sv[0]; jamp_sv[56] += amp_sv[0]; jamp_sv[62] -= amp_sv[0]; jamp_sv[80] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[32] -= amp_sv[0]; jamp_sv[56] += amp_sv[0]; jamp_sv[80] += amp_sv[0]; @@ -29107,7 +29107,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1227 - VVVV1_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29124,7 +29124,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29141,7 +29141,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[15] += amp_sv[0]; @@ -29158,7 +29158,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29175,7 +29175,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29192,7 +29192,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[13] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; @@ -29209,7 +29209,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[18] += amp_sv[0]; @@ -29226,7 +29226,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -29243,7 +29243,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[14] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -29264,12 +29264,12 @@ namespace mg5amcCpu // *** DIAGRAM 1228 OF 1240 *** // Wavefunction(s) for diagram number 1228 - VVV1P0_1( w_fp[0], w_fp[57], COUPs[0], 0., 0., w_fp[62] ); - VVV1P0_1( w_fp[0], w_fp[81], COUPs[0], 0., 0., w_fp[80] ); - VVV1P0_1( w_fp[0], w_fp[82], COUPs[0], 0., 0., w_fp[79] ); + VVV1P0_1( w_fp[0], w_fp[57], COUPs[0], 1.0, 0., 0., w_fp[62] ); + VVV1P0_1( w_fp[0], w_fp[81], COUPs[0], 1.0, 0., 0., w_fp[80] ); + VVV1P0_1( w_fp[0], w_fp[82], COUPs[0], 1.0, 0., 0., w_fp[79] ); // Amplitude(s) for diagram number 1228 - VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29286,7 +29286,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[80], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[80], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29303,7 +29303,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[79], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[79], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[18] += amp_sv[0]; @@ -29327,7 +29327,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1229 - VVV1_0( w_fp[57], w_fp[5], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[57], w_fp[5], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29344,7 +29344,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[81], w_fp[5], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[81], w_fp[5], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29361,7 +29361,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVV1_0( w_fp[82], w_fp[5], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[82], w_fp[5], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -29385,7 +29385,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1230 - FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29394,7 +29394,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29403,7 +29403,7 @@ namespace mg5amcCpu jamp_sv[87] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -29419,17 +29419,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1231 - FFV1_0( w_fp[3], w_fp[102], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] += amp_sv[0]; jamp_sv[73] -= amp_sv[0]; jamp_sv[75] -= amp_sv[0]; jamp_sv[77] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[73] -= amp_sv[0]; jamp_sv[74] += amp_sv[0]; jamp_sv[75] -= amp_sv[0]; jamp_sv[76] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[72] -= amp_sv[0]; jamp_sv[74] += amp_sv[0]; jamp_sv[76] += amp_sv[0]; @@ -29441,7 +29441,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1232 - FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29450,7 +29450,7 @@ namespace mg5amcCpu jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29459,7 +29459,7 @@ namespace mg5amcCpu jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -29475,17 +29475,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1233 - FFV1_0( w_fp[104], w_fp[2], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[57], COUPs[1], 1.0, &_fp[0] ); jamp_sv[34] += amp_sv[0]; jamp_sv[44] -= amp_sv[0]; jamp_sv[68] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - FFV1_0( w_fp[104], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[44] -= amp_sv[0]; jamp_sv[58] += amp_sv[0]; jamp_sv[68] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; - FFV1_0( w_fp[104], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[34] -= amp_sv[0]; jamp_sv[58] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; @@ -29497,7 +29497,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1234 - VVVV1_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -29514,7 +29514,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -29531,7 +29531,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[9] += amp_sv[0]; @@ -29548,7 +29548,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -29565,7 +29565,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -29582,7 +29582,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[7] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[9] += amp_sv[0]; @@ -29599,7 +29599,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[19] += amp_sv[0]; @@ -29616,7 +29616,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -29633,7 +29633,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[107] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; @@ -29654,12 +29654,12 @@ namespace mg5amcCpu // *** DIAGRAM 1235 OF 1240 *** // Wavefunction(s) for diagram number 1235 - VVV1P0_1( w_fp[0], w_fp[55], COUPs[0], 0., 0., w_fp[104] ); - VVV1P0_1( w_fp[0], w_fp[83], COUPs[0], 0., 0., w_fp[82] ); - VVV1P0_1( w_fp[0], w_fp[84], COUPs[0], 0., 0., w_fp[81] ); + VVV1P0_1( w_fp[0], w_fp[55], COUPs[0], 1.0, 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[0], w_fp[83], COUPs[0], 1.0, 0., 0., w_fp[82] ); + VVV1P0_1( w_fp[0], w_fp[84], COUPs[0], 1.0, 0., 0., w_fp[81] ); // Amplitude(s) for diagram number 1235 - VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -29676,7 +29676,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[82], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[82], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; @@ -29693,7 +29693,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[81], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[81], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[19] += amp_sv[0]; @@ -29717,7 +29717,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1236 - VVV1_0( w_fp[55], w_fp[4], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[55], w_fp[4], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[6] -= amp_sv[0]; @@ -29734,7 +29734,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[83], w_fp[4], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[83], w_fp[4], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -29751,7 +29751,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVV1_0( w_fp[84], w_fp[4], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[84], w_fp[4], w_fp[56], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; @@ -29775,7 +29775,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1237 - FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29784,7 +29784,7 @@ namespace mg5amcCpu jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29793,7 +29793,7 @@ namespace mg5amcCpu jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -29809,17 +29809,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1238 - FFV1_0( w_fp[3], w_fp[114], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] += amp_sv[0]; jamp_sv[49] -= amp_sv[0]; jamp_sv[51] -= amp_sv[0]; jamp_sv[53] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[114], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[49] -= amp_sv[0]; jamp_sv[50] += amp_sv[0]; jamp_sv[51] -= amp_sv[0]; jamp_sv[52] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[114], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[48] -= amp_sv[0]; jamp_sv[50] += amp_sv[0]; jamp_sv[52] += amp_sv[0]; @@ -29831,7 +29831,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1239 - FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29840,7 +29840,7 @@ namespace mg5amcCpu jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; @@ -29849,7 +29849,7 @@ namespace mg5amcCpu jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -29865,17 +29865,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1240 - FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], 1.0, &_fp[0] ); jamp_sv[40] += amp_sv[0]; jamp_sv[46] -= amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], 1.0, &_fp[0] ); jamp_sv[46] -= amp_sv[0]; jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], 1.0, &_fp[0] ); jamp_sv[40] -= amp_sv[0]; jamp_sv[82] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; @@ -30633,8 +30633,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/auto_dsig1.f b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/auto_dsig1.f index e6d2fc3099..6828f1c252 100644 --- a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/auto_dsig1.f +++ b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -126,11 +127,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/matrix1.f b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/matrix1.f index 51965a0fe6..dbf975d89a 100644 --- a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/matrix1.f +++ b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/P1_gg_ttxggg/matrix1.f @@ -455,7 +455,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(2768) + COMPLEX*16 ZTEMP, TMP_JAMP(3030) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -13529,5081 +13529,5242 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) JAMP(:,:) = (0D0,0D0) C JAMPs contributing to orders ALL_ORDERS=1 - TMP_JAMP(210) = AMP(1370) - AMP(1382) ! used 16 times - TMP_JAMP(209) = AMP(1358) - AMP(1361) ! used 16 times - TMP_JAMP(208) = AMP(1329) + AMP(1811) ! used 16 times - TMP_JAMP(207) = AMP(1327) - AMP(1810) ! used 16 times - TMP_JAMP(206) = AMP(1322) + AMP(1388) ! used 16 times - TMP_JAMP(205) = AMP(1320) + AMP(1324) ! used 16 times - TMP_JAMP(204) = AMP(1310) - AMP(1313) ! used 16 times - TMP_JAMP(203) = AMP(1309) + AMP(1311) ! used 16 times - TMP_JAMP(202) = AMP(1103) + AMP(1359) ! used 16 times - TMP_JAMP(201) = AMP(1102) + AMP(1486) ! used 16 times - TMP_JAMP(200) = AMP(1098) - AMP(1817) ! used 16 times - TMP_JAMP(199) = AMP(1096) + AMP(1816) ! used 16 times - TMP_JAMP(198) = AMP(1089) - AMP(1487) ! used 16 times - TMP_JAMP(197) = AMP(1085) + AMP(1087) ! used 16 times - TMP_JAMP(196) = AMP(1084) - AMP(1100) ! used 16 times - TMP_JAMP(195) = AMP(1080) + AMP(1082) ! used 16 times - TMP_JAMP(194) = AMP(1079) - AMP(1099) ! used 16 times - TMP_JAMP(193) = AMP(1076) + AMP(1078) ! used 16 times - TMP_JAMP(192) = AMP(45) + AMP(1323) ! used 16 times - TMP_JAMP(191) = AMP(43) - AMP(1371) ! used 16 times - TMP_JAMP(190) = AMP(41) - AMP(1492) ! used 16 times - TMP_JAMP(189) = AMP(37) + AMP(40) ! used 16 times - TMP_JAMP(188) = AMP(29) - AMP(1326) ! used 16 times - TMP_JAMP(187) = AMP(25) + AMP(28) ! used 16 times - TMP_JAMP(186) = AMP(18) + AMP(1493) ! used 16 times - TMP_JAMP(185) = AMP(16) + AMP(26) ! used 16 times - TMP_JAMP(184) = AMP(5) - AMP(38) ! used 16 times - TMP_JAMP(183) = AMP(2) + AMP(4) ! used 16 times - TMP_JAMP(182) = AMP(1378) + AMP(1383) ! used 16 times - TMP_JAMP(181) = AMP(1367) + AMP(1369) ! used 16 times - TMP_JAMP(180) = AMP(1332) - AMP(1677) ! used 16 times - TMP_JAMP(179) = AMP(1330) - AMP(1389) ! used 16 times - TMP_JAMP(178) = AMP(1325) - AMP(1675) ! used 16 times - TMP_JAMP(177) = AMP(1319) + AMP(1321) ! used 16 times - TMP_JAMP(176) = AMP(1315) - AMP(1318) ! used 16 times - TMP_JAMP(175) = AMP(1314) + AMP(1316) ! used 16 times - TMP_JAMP(174) = AMP(579) - AMP(1380) ! used 16 times - TMP_JAMP(173) = AMP(577) - AMP(1489) ! used 16 times - TMP_JAMP(172) = AMP(573) + AMP(1683) ! used 16 times - TMP_JAMP(171) = AMP(571) + AMP(576) ! used 16 times - TMP_JAMP(170) = AMP(567) + AMP(1490) ! used 16 times - TMP_JAMP(169) = AMP(566) + AMP(1681) ! used 16 times - TMP_JAMP(168) = AMP(556) - AMP(559) ! used 16 times - TMP_JAMP(167) = AMP(555) + AMP(557) ! used 16 times - TMP_JAMP(166) = AMP(554) - AMP(574) ! used 16 times - TMP_JAMP(165) = AMP(551) + AMP(553) ! used 16 times - TMP_JAMP(164) = AMP(1377) + AMP(1865) ! used 16 times - TMP_JAMP(163) = AMP(1357) + AMP(1360) ! used 16 times - TMP_JAMP(162) = AMP(1176) - AMP(1814) ! used 16 times - TMP_JAMP(161) = AMP(1174) + AMP(1813) ! used 16 times - TMP_JAMP(160) = AMP(1173) - AMP(1871) ! used 16 times - TMP_JAMP(159) = AMP(1163) + AMP(1165) ! used 16 times - TMP_JAMP(158) = AMP(1159) + AMP(1161) ! used 16 times - TMP_JAMP(157) = AMP(1158) + AMP(1160) ! used 16 times - TMP_JAMP(156) = AMP(636) - AMP(1172) ! used 16 times - TMP_JAMP(155) = AMP(634) + AMP(1376) ! used 16 times - TMP_JAMP(154) = AMP(575) + AMP(578) ! used 16 times - TMP_JAMP(153) = AMP(565) - AMP(1166) ! used 16 times - TMP_JAMP(152) = AMP(521) + AMP(524) ! used 16 times - TMP_JAMP(151) = AMP(520) + AMP(523) ! used 16 times - TMP_JAMP(150) = AMP(1375) - AMP(1864) ! used 16 times - TMP_JAMP(149) = AMP(1368) + AMP(1372) ! used 16 times - TMP_JAMP(148) = AMP(1171) + AMP(1870) ! used 16 times - TMP_JAMP(147) = AMP(1170) - AMP(1542) ! used 16 times - TMP_JAMP(146) = AMP(1167) - AMP(1541) ! used 16 times - TMP_JAMP(145) = AMP(1164) + AMP(1168) ! used 16 times - TMP_JAMP(144) = AMP(1154) + AMP(1156) ! used 16 times - TMP_JAMP(143) = AMP(1153) + AMP(1155) ! used 16 times - TMP_JAMP(142) = AMP(42) - AMP(1374) ! used 16 times - TMP_JAMP(141) = AMP(24) + AMP(1548) ! used 16 times - TMP_JAMP(140) = AMP(22) + AMP(39) ! used 16 times - TMP_JAMP(139) = AMP(17) + AMP(1547) ! used 16 times - TMP_JAMP(138) = AMP(7) + AMP(9) ! used 16 times - TMP_JAMP(137) = AMP(6) + AMP(8) ! used 16 times - TMP_JAMP(136) = AMP(1379) - AMP(1785) ! used 16 times - TMP_JAMP(135) = AMP(1365) + AMP(1780) ! used 16 times - TMP_JAMP(134) = AMP(1362) + AMP(1364) ! used 16 times - TMP_JAMP(133) = AMP(1101) + AMP(1104) ! used 16 times - TMP_JAMP(132) = AMP(732) + AMP(1680) ! used 16 times - TMP_JAMP(131) = AMP(731) + AMP(1791) ! used 16 times - TMP_JAMP(130) = AMP(725) + AMP(1678) ! used 16 times - TMP_JAMP(129) = AMP(724) - AMP(1088) ! used 16 times - TMP_JAMP(128) = AMP(722) - AMP(1782) ! used 16 times - TMP_JAMP(127) = AMP(719) + AMP(721) ! used 16 times - TMP_JAMP(126) = AMP(715) - AMP(718) ! used 16 times - TMP_JAMP(125) = AMP(714) + AMP(716) ! used 16 times - TMP_JAMP(124) = AMP(681) + AMP(684) ! used 16 times - TMP_JAMP(123) = AMP(679) + AMP(682) ! used 16 times - TMP_JAMP(122) = AMP(1373) - AMP(1783) ! used 16 times - TMP_JAMP(121) = AMP(1363) - AMP(1366) ! used 16 times - TMP_JAMP(120) = AMP(729) + AMP(1545) ! used 16 times - TMP_JAMP(119) = AMP(728) + AMP(1789) ! used 16 times - TMP_JAMP(118) = AMP(726) + AMP(1544) ! used 16 times - TMP_JAMP(117) = AMP(720) - AMP(723) ! used 16 times - TMP_JAMP(116) = AMP(710) + AMP(712) ! used 16 times - TMP_JAMP(115) = AMP(709) + AMP(711) ! used 16 times - TMP_JAMP(114) = AMP(1346) + AMP(1385) ! used 16 times - TMP_JAMP(113) = AMP(1334) - AMP(1337) ! used 16 times - TMP_JAMP(112) = AMP(1181) + AMP(1336) ! used 16 times - TMP_JAMP(111) = AMP(1180) + AMP(1540) ! used 16 times - TMP_JAMP(110) = AMP(1162) - AMP(1178) ! used 16 times - TMP_JAMP(109) = AMP(1157) - AMP(1177) ! used 16 times - TMP_JAMP(108) = AMP(44) + AMP(1347) ! used 16 times - TMP_JAMP(107) = AMP(36) - AMP(1546) ! used 16 times - TMP_JAMP(106) = AMP(31) + AMP(34) ! used 16 times - TMP_JAMP(105) = AMP(10) - AMP(33) ! used 16 times - TMP_JAMP(104) = AMP(1354) - AMP(1386) ! used 16 times - TMP_JAMP(103) = AMP(1343) + AMP(1345) ! used 16 times - TMP_JAMP(102) = AMP(738) - AMP(1355) ! used 16 times - TMP_JAMP(101) = AMP(736) - AMP(1543) ! used 16 times - TMP_JAMP(100) = AMP(730) + AMP(735) ! used 16 times - TMP_JAMP(99) = AMP(713) - AMP(733) ! used 16 times - TMP_JAMP(98) = AMP(1353) + AMP(1838) ! used 16 times - TMP_JAMP(97) = AMP(1333) + AMP(1335) ! used 16 times - TMP_JAMP(96) = AMP(1095) - AMP(1844) ! used 16 times - TMP_JAMP(95) = AMP(1081) + AMP(1083) ! used 16 times - TMP_JAMP(94) = AMP(795) - AMP(1094) ! used 16 times - TMP_JAMP(93) = AMP(793) + AMP(1352) ! used 16 times - TMP_JAMP(92) = AMP(734) + AMP(737) ! used 16 times - TMP_JAMP(91) = AMP(680) + AMP(683) ! used 16 times - TMP_JAMP(90) = AMP(1351) - AMP(1837) ! used 16 times - TMP_JAMP(89) = AMP(1344) + AMP(1348) ! used 16 times - TMP_JAMP(88) = AMP(1093) + AMP(1843) ! used 16 times - TMP_JAMP(87) = AMP(1092) - AMP(1488) ! used 16 times - TMP_JAMP(86) = AMP(1086) + AMP(1090) ! used 16 times - TMP_JAMP(85) = AMP(1075) + AMP(1077) ! used 16 times - TMP_JAMP(84) = AMP(35) - AMP(1350) ! used 16 times - TMP_JAMP(83) = AMP(21) + AMP(1494) ! used 16 times - TMP_JAMP(82) = AMP(19) + AMP(32) ! used 16 times - TMP_JAMP(81) = AMP(1) + AMP(3) ! used 16 times - TMP_JAMP(80) = AMP(1356) - AMP(1731) ! used 16 times - TMP_JAMP(79) = AMP(1341) + AMP(1726) ! used 16 times - TMP_JAMP(78) = AMP(1338) + AMP(1340) ! used 16 times - TMP_JAMP(77) = AMP(1179) + AMP(1182) ! used 16 times - TMP_JAMP(76) = AMP(572) + AMP(1737) ! used 16 times - TMP_JAMP(75) = AMP(563) - AMP(1728) ! used 16 times - TMP_JAMP(74) = AMP(560) + AMP(562) ! used 16 times - TMP_JAMP(73) = AMP(522) + AMP(525) ! used 16 times - TMP_JAMP(72) = AMP(1349) - AMP(1729) ! used 16 times - TMP_JAMP(71) = AMP(1339) - AMP(1342) ! used 16 times - TMP_JAMP(70) = AMP(570) + AMP(1491) ! used 16 times - TMP_JAMP(69) = AMP(569) + AMP(1735) ! used 16 times - TMP_JAMP(68) = AMP(561) - AMP(564) ! used 16 times - TMP_JAMP(67) = AMP(550) + AMP(552) ! used 16 times - TMP_JAMP(66) = AMP(1317) + AMP(1672) ! used 16 times - TMP_JAMP(65) = AMP(1259) + AMP(1312) ! used 16 times - TMP_JAMP(64) = AMP(1257) + AMP(1260) ! used 16 times - TMP_JAMP(63) = AMP(1251) - AMP(1868) ! used 16 times - TMP_JAMP(62) = AMP(1240) - AMP(1256) ! used 16 times - TMP_JAMP(61) = AMP(1237) + AMP(1239) ! used 16 times - TMP_JAMP(60) = AMP(635) - AMP(1250) ! used 16 times - TMP_JAMP(59) = AMP(558) - AMP(1674) ! used 16 times - TMP_JAMP(58) = AMP(540) + AMP(543) ! used 16 times - TMP_JAMP(57) = AMP(539) + AMP(542) ! used 16 times - TMP_JAMP(56) = AMP(1249) + AMP(1867) ! used 16 times - TMP_JAMP(55) = AMP(1242) + AMP(1246) ! used 16 times - TMP_JAMP(54) = AMP(727) - AMP(1247) ! used 16 times - TMP_JAMP(53) = AMP(717) - AMP(1673) ! used 16 times - TMP_JAMP(52) = AMP(699) + AMP(702) ! used 16 times - TMP_JAMP(51) = AMP(697) + AMP(700) ! used 16 times - TMP_JAMP(50) = AMP(1254) - AMP(1841) ! used 16 times - TMP_JAMP(49) = AMP(1236) + AMP(1238) ! used 16 times - TMP_JAMP(48) = AMP(794) - AMP(1253) ! used 16 times - TMP_JAMP(47) = AMP(698) + AMP(701) ! used 16 times - TMP_JAMP(46) = AMP(1252) + AMP(1840) ! used 16 times - TMP_JAMP(45) = AMP(1241) + AMP(1243) ! used 16 times - TMP_JAMP(44) = AMP(568) - AMP(1244) ! used 16 times - TMP_JAMP(43) = AMP(538) + AMP(541) ! used 16 times - TMP_JAMP(42) = AMP(1258) + AMP(1594) ! used 16 times - TMP_JAMP(41) = AMP(1248) - AMP(1596) ! used 16 times - TMP_JAMP(40) = AMP(1235) - AMP(1255) ! used 16 times - TMP_JAMP(39) = AMP(1231) + AMP(1233) ! used 16 times - TMP_JAMP(38) = AMP(30) - AMP(1600) ! used 16 times - TMP_JAMP(37) = AMP(23) + AMP(1602) ! used 16 times - TMP_JAMP(36) = AMP(15) - AMP(27) ! used 16 times - TMP_JAMP(35) = AMP(11) + AMP(13) ! used 16 times - TMP_JAMP(34) = AMP(1245) - AMP(1595) ! used 16 times - TMP_JAMP(33) = AMP(1232) + AMP(1234) ! used 16 times - TMP_JAMP(32) = AMP(20) + AMP(1601) ! used 16 times - TMP_JAMP(31) = AMP(12) + AMP(14) ! used 16 times - TMP_JAMP(30) = AMP(954) - AMP(1097) ! used 16 times - TMP_JAMP(29) = AMP(952) + AMP(1328) ! used 16 times - TMP_JAMP(28) = AMP(897) - AMP(1331) ! used 16 times - TMP_JAMP(27) = AMP(893) + AMP(896) ! used 16 times - TMP_JAMP(26) = AMP(890) + AMP(1788) ! used 16 times - TMP_JAMP(25) = AMP(889) + AMP(894) ! used 16 times - TMP_JAMP(24) = AMP(881) - AMP(1781) ! used 16 times - TMP_JAMP(23) = AMP(878) + AMP(880) ! used 16 times - TMP_JAMP(22) = AMP(840) + AMP(843) ! used 16 times - TMP_JAMP(21) = AMP(839) + AMP(842) ! used 16 times - TMP_JAMP(20) = AMP(953) - AMP(1175) ! used 16 times - TMP_JAMP(19) = AMP(887) + AMP(1786) ! used 16 times - TMP_JAMP(18) = AMP(886) - AMP(1169) ! used 16 times - TMP_JAMP(17) = AMP(879) - AMP(882) ! used 16 times - TMP_JAMP(16) = AMP(857) + AMP(860) ! used 16 times - TMP_JAMP(15) = AMP(856) + AMP(859) ! used 16 times - TMP_JAMP(14) = AMP(891) + AMP(1734) ! used 16 times - TMP_JAMP(13) = AMP(876) - AMP(1727) ! used 16 times - TMP_JAMP(12) = AMP(873) + AMP(875) ! used 16 times - TMP_JAMP(11) = AMP(858) + AMP(861) ! used 16 times - TMP_JAMP(10) = AMP(884) + AMP(1732) ! used 16 times - TMP_JAMP(9) = AMP(883) - AMP(1091) ! used 16 times - TMP_JAMP(8) = AMP(874) - AMP(877) ! used 16 times - TMP_JAMP(7) = AMP(838) + AMP(841) ! used 16 times - TMP_JAMP(6) = AMP(895) - AMP(1597) ! used 16 times - TMP_JAMP(5) = AMP(888) + AMP(1599) ! used 16 times - TMP_JAMP(4) = AMP(872) - AMP(892) ! used 16 times - TMP_JAMP(3) = AMP(868) + AMP(870) ! used 16 times - TMP_JAMP(2) = AMP(885) + AMP(1598) ! used 16 times - TMP_JAMP(1) = AMP(869) + AMP(871) ! used 16 times - TMP_JAMP(315) = TMP_JAMP(186) + TMP_JAMP(183) ! used 16 times - TMP_JAMP(314) = TMP_JAMP(188) + TMP_JAMP(185) ! used 16 times - TMP_JAMP(313) = TMP_JAMP(190) - TMP_JAMP(184) ! used 16 times - TMP_JAMP(312) = TMP_JAMP(191) + TMP_JAMP(189) ! used 16 times - TMP_JAMP(311) = TMP_JAMP(192) - TMP_JAMP(187) ! used 16 times - TMP_JAMP(310) = TMP_JAMP(198) + TMP_JAMP(193) ! used 16 times - TMP_JAMP(309) = TMP_JAMP(199) - TMP_JAMP(197) ! used 16 times - TMP_JAMP(308) = TMP_JAMP(200) + TMP_JAMP(195) ! used 16 times - TMP_JAMP(307) = TMP_JAMP(201) - TMP_JAMP(194) ! used 16 times - TMP_JAMP(306) = TMP_JAMP(202) - TMP_JAMP(196) ! used 16 times - TMP_JAMP(305) = TMP_JAMP(206) - TMP_JAMP(204) ! used 16 times - TMP_JAMP(304) = TMP_JAMP(207) - TMP_JAMP(205) ! used 16 times - TMP_JAMP(303) = TMP_JAMP(208) + TMP_JAMP(203) ! used 16 times - TMP_JAMP(302) = TMP_JAMP(210) - TMP_JAMP(209) ! used 16 times - TMP_JAMP(301) = TMP_JAMP(169) - TMP_JAMP(168) ! used 16 times - TMP_JAMP(300) = TMP_JAMP(170) + TMP_JAMP(165) ! used 16 times - TMP_JAMP(299) = TMP_JAMP(172) + TMP_JAMP(167) ! used 16 times - TMP_JAMP(298) = TMP_JAMP(173) - TMP_JAMP(166) ! used 16 times - TMP_JAMP(297) = TMP_JAMP(174) + TMP_JAMP(171) ! used 16 times - TMP_JAMP(296) = TMP_JAMP(178) - TMP_JAMP(176) ! used 16 times - TMP_JAMP(295) = TMP_JAMP(179) - TMP_JAMP(177) ! used 16 times - TMP_JAMP(294) = TMP_JAMP(180) + TMP_JAMP(175) ! used 16 times - TMP_JAMP(293) = TMP_JAMP(182) - TMP_JAMP(181) ! used 16 times - TMP_JAMP(292) = TMP_JAMP(153) + TMP_JAMP(151) ! used 16 times - TMP_JAMP(291) = TMP_JAMP(155) - TMP_JAMP(154) ! used 16 times - TMP_JAMP(290) = TMP_JAMP(156) + TMP_JAMP(152) ! used 16 times - TMP_JAMP(289) = TMP_JAMP(160) + TMP_JAMP(158) ! used 16 times - TMP_JAMP(288) = TMP_JAMP(161) - TMP_JAMP(159) ! used 16 times - TMP_JAMP(287) = TMP_JAMP(162) + TMP_JAMP(157) ! used 16 times - TMP_JAMP(286) = TMP_JAMP(164) + TMP_JAMP(163) ! used 16 times - TMP_JAMP(285) = TMP_JAMP(139) + TMP_JAMP(138) ! used 16 times - TMP_JAMP(284) = TMP_JAMP(141) + TMP_JAMP(137) ! used 16 times - TMP_JAMP(283) = TMP_JAMP(142) + TMP_JAMP(140) ! used 16 times - TMP_JAMP(282) = TMP_JAMP(146) + TMP_JAMP(144) ! used 16 times - TMP_JAMP(281) = TMP_JAMP(147) + TMP_JAMP(143) ! used 16 times - TMP_JAMP(280) = TMP_JAMP(148) - TMP_JAMP(145) ! used 16 times - TMP_JAMP(279) = TMP_JAMP(150) - TMP_JAMP(149) ! used 16 times - TMP_JAMP(278) = TMP_JAMP(128) + TMP_JAMP(124) ! used 16 times - TMP_JAMP(277) = TMP_JAMP(129) + TMP_JAMP(123) ! used 16 times - TMP_JAMP(276) = TMP_JAMP(130) - TMP_JAMP(126) ! used 16 times - TMP_JAMP(275) = TMP_JAMP(131) + TMP_JAMP(127) ! used 16 times - TMP_JAMP(274) = TMP_JAMP(132) + TMP_JAMP(125) ! used 16 times - TMP_JAMP(273) = TMP_JAMP(135) + TMP_JAMP(133) ! used 16 times - TMP_JAMP(272) = TMP_JAMP(136) + TMP_JAMP(134) ! used 16 times - TMP_JAMP(271) = TMP_JAMP(118) + TMP_JAMP(116) ! used 16 times - TMP_JAMP(270) = TMP_JAMP(119) - TMP_JAMP(117) ! used 16 times - TMP_JAMP(269) = TMP_JAMP(120) + TMP_JAMP(115) ! used 16 times - TMP_JAMP(268) = TMP_JAMP(122) - TMP_JAMP(121) ! used 16 times - TMP_JAMP(267) = TMP_JAMP(107) - TMP_JAMP(105) ! used 16 times - TMP_JAMP(266) = TMP_JAMP(108) - TMP_JAMP(106) ! used 16 times - TMP_JAMP(265) = TMP_JAMP(111) - TMP_JAMP(109) ! used 16 times - TMP_JAMP(264) = TMP_JAMP(112) - TMP_JAMP(110) ! used 16 times - TMP_JAMP(263) = TMP_JAMP(114) - TMP_JAMP(113) ! used 16 times - TMP_JAMP(262) = TMP_JAMP(101) - TMP_JAMP(99) ! used 16 times - TMP_JAMP(261) = TMP_JAMP(102) + TMP_JAMP(100) ! used 16 times - TMP_JAMP(260) = TMP_JAMP(104) - TMP_JAMP(103) ! used 16 times - TMP_JAMP(259) = TMP_JAMP(93) - TMP_JAMP(92) ! used 16 times - TMP_JAMP(258) = TMP_JAMP(94) + TMP_JAMP(91) ! used 16 times - TMP_JAMP(257) = TMP_JAMP(96) + TMP_JAMP(95) ! used 16 times - TMP_JAMP(256) = TMP_JAMP(98) + TMP_JAMP(97) ! used 16 times - TMP_JAMP(255) = TMP_JAMP(83) + TMP_JAMP(81) ! used 16 times - TMP_JAMP(254) = TMP_JAMP(84) + TMP_JAMP(82) ! used 16 times - TMP_JAMP(253) = TMP_JAMP(87) + TMP_JAMP(85) ! used 16 times - TMP_JAMP(252) = TMP_JAMP(88) - TMP_JAMP(86) ! used 16 times - TMP_JAMP(251) = TMP_JAMP(90) - TMP_JAMP(89) ! used 16 times - TMP_JAMP(250) = TMP_JAMP(75) + TMP_JAMP(73) ! used 16 times - TMP_JAMP(249) = TMP_JAMP(76) + TMP_JAMP(74) ! used 16 times - TMP_JAMP(248) = TMP_JAMP(79) + TMP_JAMP(77) ! used 16 times - TMP_JAMP(247) = TMP_JAMP(80) + TMP_JAMP(78) ! used 16 times - TMP_JAMP(246) = TMP_JAMP(69) - TMP_JAMP(68) ! used 16 times - TMP_JAMP(245) = TMP_JAMP(70) + TMP_JAMP(67) ! used 16 times - TMP_JAMP(244) = TMP_JAMP(72) - TMP_JAMP(71) ! used 16 times - TMP_JAMP(243) = TMP_JAMP(59) + TMP_JAMP(58) ! used 16 times - TMP_JAMP(242) = TMP_JAMP(60) + TMP_JAMP(57) ! used 16 times - TMP_JAMP(241) = TMP_JAMP(63) + TMP_JAMP(61) ! used 16 times - TMP_JAMP(240) = TMP_JAMP(65) - TMP_JAMP(62) ! used 16 times - TMP_JAMP(239) = TMP_JAMP(66) + TMP_JAMP(64) ! used 16 times - TMP_JAMP(238) = TMP_JAMP(53) + TMP_JAMP(52) ! used 16 times - TMP_JAMP(237) = TMP_JAMP(54) + TMP_JAMP(51) ! used 16 times - TMP_JAMP(236) = TMP_JAMP(56) - TMP_JAMP(55) ! used 16 times - TMP_JAMP(235) = TMP_JAMP(48) + TMP_JAMP(47) ! used 16 times - TMP_JAMP(234) = TMP_JAMP(50) + TMP_JAMP(49) ! used 16 times - TMP_JAMP(233) = TMP_JAMP(44) + TMP_JAMP(43) ! used 16 times - TMP_JAMP(232) = TMP_JAMP(46) - TMP_JAMP(45) ! used 16 times - TMP_JAMP(231) = TMP_JAMP(37) + TMP_JAMP(35) ! used 16 times - TMP_JAMP(230) = TMP_JAMP(38) - TMP_JAMP(36) ! used 16 times - TMP_JAMP(229) = TMP_JAMP(41) + TMP_JAMP(39) ! used 16 times - TMP_JAMP(228) = TMP_JAMP(42) - TMP_JAMP(40) ! used 16 times - TMP_JAMP(227) = TMP_JAMP(32) + TMP_JAMP(31) ! used 16 times - TMP_JAMP(226) = TMP_JAMP(34) + TMP_JAMP(33) ! used 16 times - TMP_JAMP(225) = TMP_JAMP(24) + TMP_JAMP(22) ! used 16 times - TMP_JAMP(224) = TMP_JAMP(26) + TMP_JAMP(23) ! used 16 times - TMP_JAMP(223) = TMP_JAMP(28) + TMP_JAMP(25) ! used 16 times - TMP_JAMP(222) = TMP_JAMP(29) - TMP_JAMP(27) ! used 16 times - TMP_JAMP(221) = TMP_JAMP(30) + TMP_JAMP(21) ! used 16 times - TMP_JAMP(220) = TMP_JAMP(18) + TMP_JAMP(15) ! used 16 times - TMP_JAMP(219) = TMP_JAMP(19) - TMP_JAMP(17) ! used 16 times - TMP_JAMP(218) = TMP_JAMP(20) + TMP_JAMP(16) ! used 16 times - TMP_JAMP(217) = TMP_JAMP(13) + TMP_JAMP(11) ! used 16 times - TMP_JAMP(216) = TMP_JAMP(14) + TMP_JAMP(12) ! used 16 times - TMP_JAMP(215) = TMP_JAMP(9) + TMP_JAMP(7) ! used 16 times - TMP_JAMP(214) = TMP_JAMP(10) - TMP_JAMP(8) ! used 16 times - TMP_JAMP(213) = TMP_JAMP(5) + TMP_JAMP(3) ! used 16 times - TMP_JAMP(212) = TMP_JAMP(6) - TMP_JAMP(4) ! used 16 times - TMP_JAMP(211) = TMP_JAMP(2) + TMP_JAMP(1) ! used 16 times - TMP_JAMP(405) = TMP_JAMP(302) - AMP(1390) ! used 16 times - TMP_JAMP(404) = TMP_JAMP(303) + AMP(1822) ! used 16 times - TMP_JAMP(403) = TMP_JAMP(304) - AMP(1819) ! used 16 times - TMP_JAMP(402) = TMP_JAMP(305) + AMP(1392) ! used 16 times - TMP_JAMP(401) = TMP_JAMP(307) + AMP(1501) ! used 16 times - TMP_JAMP(400) = TMP_JAMP(308) - AMP(1824) ! used 16 times - TMP_JAMP(399) = TMP_JAMP(309) + AMP(1821) ! used 16 times - TMP_JAMP(398) = TMP_JAMP(310) - AMP(1495) ! used 16 times - TMP_JAMP(397) = TMP_JAMP(311) + AMP(1387) ! used 16 times - TMP_JAMP(396) = TMP_JAMP(312) + AMP(1381) ! used 16 times - TMP_JAMP(395) = TMP_JAMP(313) - AMP(1503) ! used 16 times - TMP_JAMP(394) = TMP_JAMP(315) + AMP(1497) ! used 16 times - TMP_JAMP(393) = TMP_JAMP(293) + AMP(1393) ! used 16 times - TMP_JAMP(392) = TMP_JAMP(294) - AMP(1687) ! used 16 times - TMP_JAMP(391) = TMP_JAMP(295) - AMP(1395) ! used 16 times - TMP_JAMP(390) = TMP_JAMP(296) - AMP(1684) ! used 16 times - TMP_JAMP(389) = TMP_JAMP(298) - AMP(1502) ! used 16 times - TMP_JAMP(388) = TMP_JAMP(299) + AMP(1689) ! used 16 times - TMP_JAMP(387) = TMP_JAMP(300) + AMP(1496) ! used 16 times - TMP_JAMP(386) = TMP_JAMP(301) + AMP(1686) ! used 16 times - TMP_JAMP(385) = TMP_JAMP(286) + AMP(1876) ! used 16 times - TMP_JAMP(384) = TMP_JAMP(287) - AMP(1823) ! used 16 times - TMP_JAMP(383) = TMP_JAMP(288) + AMP(1820) ! used 16 times - TMP_JAMP(382) = TMP_JAMP(289) - AMP(1878) ! used 16 times - TMP_JAMP(381) = TMP_JAMP(290) + AMP(1872) ! used 16 times - TMP_JAMP(380) = TMP_JAMP(291) + AMP(1866) ! used 16 times - TMP_JAMP(379) = TMP_JAMP(279) - AMP(1873) ! used 16 times - TMP_JAMP(378) = TMP_JAMP(280) + AMP(1875) ! used 16 times - TMP_JAMP(377) = TMP_JAMP(281) - AMP(1552) ! used 16 times - TMP_JAMP(376) = TMP_JAMP(282) - AMP(1549) ! used 16 times - TMP_JAMP(375) = TMP_JAMP(284) + AMP(1554) ! used 16 times - TMP_JAMP(374) = TMP_JAMP(285) + AMP(1551) ! used 16 times - TMP_JAMP(373) = TMP_JAMP(272) - AMP(1795) ! used 16 times - TMP_JAMP(372) = TMP_JAMP(273) - AMP(1784) ! used 16 times - TMP_JAMP(371) = TMP_JAMP(274) + AMP(1688) ! used 16 times - TMP_JAMP(370) = TMP_JAMP(275) + AMP(1797) ! used 16 times - TMP_JAMP(369) = TMP_JAMP(276) + AMP(1685) ! used 16 times - TMP_JAMP(368) = TMP_JAMP(278) + AMP(1790) ! used 16 times - TMP_JAMP(367) = TMP_JAMP(268) - AMP(1792) ! used 16 times - TMP_JAMP(366) = TMP_JAMP(269) + AMP(1553) ! used 16 times - TMP_JAMP(365) = TMP_JAMP(270) + AMP(1794) ! used 16 times - TMP_JAMP(364) = TMP_JAMP(271) + AMP(1550) ! used 16 times - TMP_JAMP(363) = TMP_JAMP(263) + AMP(1391) ! used 16 times - TMP_JAMP(362) = TMP_JAMP(265) + AMP(1555) ! used 16 times - TMP_JAMP(361) = TMP_JAMP(266) + AMP(1384) ! used 16 times - TMP_JAMP(360) = TMP_JAMP(267) - AMP(1557) ! used 16 times - TMP_JAMP(359) = TMP_JAMP(260) - AMP(1394) ! used 16 times - TMP_JAMP(358) = TMP_JAMP(262) - AMP(1556) ! used 16 times - TMP_JAMP(357) = TMP_JAMP(256) + AMP(1849) ! used 16 times - TMP_JAMP(356) = TMP_JAMP(257) - AMP(1851) ! used 16 times - TMP_JAMP(355) = TMP_JAMP(258) + AMP(1845) ! used 16 times - TMP_JAMP(354) = TMP_JAMP(259) + AMP(1839) ! used 16 times - TMP_JAMP(353) = TMP_JAMP(251) - AMP(1846) ! used 16 times - TMP_JAMP(352) = TMP_JAMP(252) + AMP(1848) ! used 16 times - TMP_JAMP(351) = TMP_JAMP(253) - AMP(1498) ! used 16 times - TMP_JAMP(350) = TMP_JAMP(255) + AMP(1500) ! used 16 times - TMP_JAMP(349) = TMP_JAMP(247) - AMP(1741) ! used 16 times - TMP_JAMP(348) = TMP_JAMP(248) - AMP(1730) ! used 16 times - TMP_JAMP(347) = TMP_JAMP(249) + AMP(1743) ! used 16 times - TMP_JAMP(346) = TMP_JAMP(250) + AMP(1736) ! used 16 times - TMP_JAMP(345) = TMP_JAMP(244) - AMP(1738) ! used 16 times - TMP_JAMP(344) = TMP_JAMP(245) + AMP(1499) ! used 16 times - TMP_JAMP(343) = TMP_JAMP(246) + AMP(1740) ! used 16 times - TMP_JAMP(342) = TMP_JAMP(239) - AMP(1676) ! used 16 times - TMP_JAMP(341) = TMP_JAMP(241) - AMP(1877) ! used 16 times - TMP_JAMP(340) = TMP_JAMP(242) + AMP(1869) ! used 16 times - TMP_JAMP(339) = TMP_JAMP(243) + AMP(1682) ! used 16 times - TMP_JAMP(338) = TMP_JAMP(236) + AMP(1874) ! used 16 times - TMP_JAMP(337) = TMP_JAMP(238) + AMP(1679) ! used 16 times - TMP_JAMP(336) = TMP_JAMP(234) - AMP(1850) ! used 16 times - TMP_JAMP(335) = TMP_JAMP(235) + AMP(1842) ! used 16 times - TMP_JAMP(334) = TMP_JAMP(232) + AMP(1847) ! used 16 times - TMP_JAMP(333) = TMP_JAMP(228) + AMP(1609) ! used 16 times - TMP_JAMP(332) = TMP_JAMP(229) - AMP(1606) ! used 16 times - TMP_JAMP(331) = TMP_JAMP(230) - AMP(1611) ! used 16 times - TMP_JAMP(330) = TMP_JAMP(231) + AMP(1608) ! used 16 times - TMP_JAMP(329) = TMP_JAMP(226) - AMP(1603) ! used 16 times - TMP_JAMP(328) = TMP_JAMP(227) + AMP(1605) ! used 16 times - TMP_JAMP(327) = TMP_JAMP(221) + AMP(1818) ! used 16 times - TMP_JAMP(326) = TMP_JAMP(222) + AMP(1812) ! used 16 times - TMP_JAMP(325) = TMP_JAMP(224) + AMP(1796) ! used 16 times - TMP_JAMP(324) = TMP_JAMP(225) + AMP(1787) ! used 16 times - TMP_JAMP(323) = TMP_JAMP(218) + AMP(1815) ! used 16 times - TMP_JAMP(322) = TMP_JAMP(219) + AMP(1793) ! used 16 times - TMP_JAMP(321) = TMP_JAMP(216) + AMP(1742) ! used 16 times - TMP_JAMP(320) = TMP_JAMP(217) + AMP(1733) ! used 16 times - TMP_JAMP(319) = TMP_JAMP(214) + AMP(1739) ! used 16 times - TMP_JAMP(318) = TMP_JAMP(212) - AMP(1610) ! used 16 times - TMP_JAMP(317) = TMP_JAMP(213) + AMP(1607) ! used 16 times - TMP_JAMP(316) = TMP_JAMP(211) + AMP(1604) ! used 16 times - TMP_JAMP(1030) = AMP(1455) + AMP(1456) ! used 8 times - TMP_JAMP(1029) = AMP(1147) + AMP(1537) ! used 8 times - TMP_JAMP(1028) = AMP(1125) - AMP(1516) ! used 8 times - TMP_JAMP(1027) = AMP(1122) + AMP(1123) ! used 8 times - TMP_JAMP(1026) = AMP(1117) + AMP(1125) ! used 8 times - TMP_JAMP(1025) = AMP(439) - AMP(442) ! used 8 times - TMP_JAMP(1024) = AMP(421) - AMP(424) ! used 8 times - TMP_JAMP(1023) = AMP(420) + AMP(422) ! used 8 times - TMP_JAMP(1022) = AMP(353) + AMP(440) ! used 8 times - TMP_JAMP(1021) = AMP(341) - AMP(353) ! used 8 times - TMP_JAMP(1020) = AMP(339) - AMP(447) ! used 8 times - TMP_JAMP(1019) = AMP(337) + AMP(339) ! used 8 times - TMP_JAMP(1018) = AMP(152) - AMP(1539) ! used 8 times - TMP_JAMP(1017) = AMP(151) + AMP(157) ! used 8 times - TMP_JAMP(1016) = AMP(139) - AMP(159) ! used 8 times - TMP_JAMP(1015) = AMP(99) - AMP(1458) ! used 8 times - TMP_JAMP(1014) = AMP(90) + AMP(1518) ! used 8 times - TMP_JAMP(1013) = AMP(88) + AMP(99) ! used 8 times - TMP_JAMP(1012) = AMP(84) + AMP(90) ! used 8 times - TMP_JAMP(1011) = TMP_JAMP(306) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(341) ! used 8 times - TMP_JAMP(1010) = TMP_JAMP(314) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(88) ! used 8 times - TMP_JAMP(1009) = TMP_JAMP(394) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(84) ! used 8 times - TMP_JAMP(1008) = TMP_JAMP(395) - TMP_JAMP(394) ! used 8 times - TMP_JAMP(1007) = TMP_JAMP(397) - TMP_JAMP(396) ! used 8 times - TMP_JAMP(1006) = TMP_JAMP(398) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1117) ! used 8 times - TMP_JAMP(1005) = TMP_JAMP(400) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(337) ! used 8 times - TMP_JAMP(1004) = TMP_JAMP(400) - TMP_JAMP(399) ! used 8 times - TMP_JAMP(1003) = TMP_JAMP(401) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1147) ! used 8 times - TMP_JAMP(1002) = TMP_JAMP(401) - TMP_JAMP(398) ! used 8 times - TMP_JAMP(1001) = TMP_JAMP(404) - TMP_JAMP(403) ! used 8 times - TMP_JAMP(1000) = TMP_JAMP(405) + TMP_JAMP(402) ! used 8 times - TMP_JAMP(999) = AMP(1457) - AMP(1690) ! used 8 times - TMP_JAMP(998) = AMP(1453) - AMP(1457) ! used 8 times - TMP_JAMP(997) = AMP(1064) - AMP(1066) ! used 8 times - TMP_JAMP(996) = AMP(1046) - AMP(1048) ! used 8 times - TMP_JAMP(995) = AMP(1044) + AMP(1050) ! used 8 times - TMP_JAMP(994) = AMP(622) - AMP(1538) ! used 8 times - TMP_JAMP(993) = AMP(597) - AMP(599) ! used 8 times - TMP_JAMP(992) = AMP(592) + AMP(600) ! used 8 times - TMP_JAMP(991) = AMP(513) - AMP(1068) ! used 8 times - TMP_JAMP(990) = AMP(504) + AMP(1662) ! used 8 times - TMP_JAMP(989) = AMP(502) + AMP(513) ! used 8 times - TMP_JAMP(988) = AMP(498) + AMP(504) ! used 8 times - TMP_JAMP(987) = TMP_JAMP(297) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(502) ! used 8 times - TMP_JAMP(986) = TMP_JAMP(387) + TMP_JAMP(386) ! used 8 times - TMP_JAMP(985) = TMP_JAMP(388) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(498) ! used 8 times - TMP_JAMP(984) = TMP_JAMP(388) - TMP_JAMP(386) ! used 8 times - TMP_JAMP(983) = TMP_JAMP(389) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(622) ! used 8 times - TMP_JAMP(982) = TMP_JAMP(389) - TMP_JAMP(387) ! used 8 times - TMP_JAMP(981) = TMP_JAMP(390) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1453) ! used 8 times - TMP_JAMP(980) = TMP_JAMP(392) - TMP_JAMP(390) ! used 8 times - TMP_JAMP(979) = TMP_JAMP(393) + TMP_JAMP(391) ! used 8 times - TMP_JAMP(978) = TMP_JAMP(394) + TMP_JAMP(387) ! used 8 times - TMP_JAMP(977) = TMP_JAMP(395) + TMP_JAMP(389) ! used 8 times - TMP_JAMP(976) = TMP_JAMP(396) - TMP_JAMP(393) ! used 8 times - TMP_JAMP(975) = TMP_JAMP(397) + TMP_JAMP(391) ! used 8 times - TMP_JAMP(974) = AMP(1201) - AMP(1826) ! used 8 times - TMP_JAMP(973) = AMP(1200) + AMP(1201) ! used 8 times - TMP_JAMP(972) = AMP(626) + AMP(631) ! used 8 times - TMP_JAMP(971) = AMP(598) - AMP(1202) ! used 8 times - TMP_JAMP(970) = AMP(526) + AMP(598) ! used 8 times - TMP_JAMP(969) = AMP(517) - AMP(633) ! used 8 times - TMP_JAMP(968) = AMP(441) + AMP(463) ! used 8 times - TMP_JAMP(967) = AMP(438) + AMP(441) ! used 8 times - TMP_JAMP(966) = AMP(356) + AMP(358) ! used 8 times - TMP_JAMP(965) = AMP(355) + AMP(357) ! used 8 times - TMP_JAMP(964) = TMP_JAMP(292) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(526) ! used 8 times - TMP_JAMP(963) = TMP_JAMP(380) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(626) ! used 8 times - TMP_JAMP(962) = TMP_JAMP(381) - TMP_JAMP(380) ! used 8 times - TMP_JAMP(961) = TMP_JAMP(383) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1200) ! used 8 times - TMP_JAMP(960) = TMP_JAMP(384) - TMP_JAMP(383) ! used 8 times - TMP_JAMP(959) = TMP_JAMP(385) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(438) ! used 8 times - TMP_JAMP(958) = TMP_JAMP(385) + TMP_JAMP(380) ! used 8 times - TMP_JAMP(957) = TMP_JAMP(385) + TMP_JAMP(382) ! used 8 times - TMP_JAMP(956) = TMP_JAMP(387) - TMP_JAMP(292) ! used 8 times - TMP_JAMP(955) = TMP_JAMP(398) - TMP_JAMP(387) ! used 8 times - TMP_JAMP(954) = TMP_JAMP(399) + TMP_JAMP(383) ! used 8 times - TMP_JAMP(953) = TMP_JAMP(400) + TMP_JAMP(384) ! used 8 times - TMP_JAMP(952) = TMP_JAMP(401) - TMP_JAMP(389) ! used 8 times - TMP_JAMP(951) = AMP(1464) + AMP(1465) ! used 8 times - TMP_JAMP(950) = AMP(1212) + AMP(1213) ! used 8 times - TMP_JAMP(949) = AMP(1207) + AMP(1215) ! used 8 times - TMP_JAMP(948) = AMP(1203) - AMP(1570) ! used 8 times - TMP_JAMP(947) = AMP(1195) + AMP(1203) ! used 8 times - TMP_JAMP(946) = AMP(111) - AMP(1467) ! used 8 times - TMP_JAMP(945) = AMP(108) + AMP(1581) ! used 8 times - TMP_JAMP(944) = AMP(106) + AMP(111) ! used 8 times - TMP_JAMP(943) = AMP(102) + AMP(108) ! used 8 times - TMP_JAMP(942) = AMP(89) + AMP(1572) ! used 8 times - TMP_JAMP(941) = AMP(86) + AMP(89) ! used 8 times - TMP_JAMP(940) = TMP_JAMP(283) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(106) ! used 8 times - TMP_JAMP(939) = TMP_JAMP(374) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(86) ! used 8 times - TMP_JAMP(938) = TMP_JAMP(375) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(102) ! used 8 times - TMP_JAMP(937) = TMP_JAMP(376) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1195) ! used 8 times - TMP_JAMP(936) = TMP_JAMP(377) + TMP_JAMP(376) ! used 8 times - TMP_JAMP(935) = TMP_JAMP(379) + TMP_JAMP(378) ! used 8 times - TMP_JAMP(934) = TMP_JAMP(380) + TMP_JAMP(379) ! used 8 times - TMP_JAMP(933) = TMP_JAMP(381) - TMP_JAMP(378) ! used 8 times - TMP_JAMP(932) = TMP_JAMP(394) + TMP_JAMP(374) ! used 8 times - TMP_JAMP(931) = TMP_JAMP(395) + TMP_JAMP(283) ! used 8 times - TMP_JAMP(930) = AMP(1150) + AMP(1774) ! used 8 times - TMP_JAMP(929) = AMP(1067) - AMP(1768) ! used 8 times - TMP_JAMP(928) = AMP(1062) + AMP(1067) ! used 8 times - TMP_JAMP(927) = AMP(758) + AMP(1691) ! used 8 times - TMP_JAMP(926) = AMP(757) - AMP(1124) ! used 8 times - TMP_JAMP(925) = AMP(756) - AMP(758) ! used 8 times - TMP_JAMP(924) = AMP(685) + AMP(757) ! used 8 times - TMP_JAMP(923) = AMP(678) - AMP(1776) ! used 8 times - TMP_JAMP(922) = AMP(663) + AMP(1661) ! used 8 times - TMP_JAMP(921) = AMP(659) + AMP(662) ! used 8 times - TMP_JAMP(920) = AMP(657) + AMP(663) ! used 8 times - TMP_JAMP(919) = TMP_JAMP(277) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(685) ! used 8 times - TMP_JAMP(918) = TMP_JAMP(368) + ((0.000000000000000D+00 + TMP_JAMP(15) = AMP(37) + AMP(40) ! used 16 times + TMP_JAMP(14) = AMP(25) + AMP(28) ! used 16 times + TMP_JAMP(13) = AMP(16) + AMP(26) ! used 16 times + TMP_JAMP(12) = AMP(5) - AMP(38) ! used 16 times + TMP_JAMP(11) = AMP(2) + AMP(4) ! used 16 times + TMP_JAMP(10) = AMP(22) + AMP(39) ! used 16 times + TMP_JAMP(9) = AMP(7) + AMP(9) ! used 16 times + TMP_JAMP(8) = AMP(6) + AMP(8) ! used 16 times + TMP_JAMP(7) = AMP(31) + AMP(34) ! used 16 times + TMP_JAMP(6) = AMP(10) - AMP(33) ! used 16 times + TMP_JAMP(5) = AMP(19) + AMP(32) ! used 16 times + TMP_JAMP(4) = AMP(1) + AMP(3) ! used 16 times + TMP_JAMP(3) = AMP(15) - AMP(27) ! used 16 times + TMP_JAMP(2) = AMP(11) + AMP(13) ! used 16 times + TMP_JAMP(1) = AMP(12) + AMP(14) ! used 16 times + TMP_JAMP(30) = TMP_JAMP(15) + AMP(43) ! used 16 times + TMP_JAMP(29) = TMP_JAMP(14) - AMP(45) ! used 16 times + TMP_JAMP(28) = TMP_JAMP(13) + AMP(29) ! used 16 times + TMP_JAMP(27) = TMP_JAMP(12) - AMP(41) ! used 16 times + TMP_JAMP(26) = TMP_JAMP(11) + AMP(18) ! used 16 times + TMP_JAMP(25) = TMP_JAMP(10) + AMP(42) ! used 16 times + TMP_JAMP(24) = TMP_JAMP(9) + AMP(17) ! used 16 times + TMP_JAMP(23) = TMP_JAMP(8) + AMP(24) ! used 16 times + TMP_JAMP(22) = TMP_JAMP(7) - AMP(44) ! used 16 times + TMP_JAMP(21) = TMP_JAMP(6) - AMP(36) ! used 16 times + TMP_JAMP(20) = TMP_JAMP(5) + AMP(35) ! used 16 times + TMP_JAMP(19) = TMP_JAMP(4) + AMP(21) ! used 16 times + TMP_JAMP(18) = TMP_JAMP(3) - AMP(30) ! used 16 times + TMP_JAMP(17) = TMP_JAMP(2) + AMP(23) ! used 16 times + TMP_JAMP(16) = TMP_JAMP(1) + AMP(20) ! used 16 times + TMP_JAMP(113) = TMP_JAMP(30) + TMP_JAMP(29) ! used 8 times + TMP_JAMP(112) = TMP_JAMP(30) - TMP_JAMP(22) ! used 8 times + TMP_JAMP(111) = TMP_JAMP(30) - TMP_JAMP(25) ! used 8 times + TMP_JAMP(110) = TMP_JAMP(29) + TMP_JAMP(28) ! used 8 times + TMP_JAMP(109) = TMP_JAMP(29) + TMP_JAMP(22) ! used 8 times + TMP_JAMP(108) = TMP_JAMP(28) - TMP_JAMP(26) ! used 8 times + TMP_JAMP(107) = TMP_JAMP(28) + TMP_JAMP(24) ! used 8 times + TMP_JAMP(106) = TMP_JAMP(27) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(152) ! used 8 times + TMP_JAMP(105) = TMP_JAMP(27) + TMP_JAMP(26) ! used 8 times + TMP_JAMP(104) = TMP_JAMP(27) - TMP_JAMP(25) ! used 8 times + TMP_JAMP(103) = TMP_JAMP(27) - TMP_JAMP(19) ! used 8 times + TMP_JAMP(102) = TMP_JAMP(27) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(153) ! used 8 times + TMP_JAMP(101) = TMP_JAMP(26) + TMP_JAMP(24) ! used 8 times + TMP_JAMP(100) = TMP_JAMP(26) + TMP_JAMP(19) ! used 8 times + TMP_JAMP(99) = TMP_JAMP(25) - TMP_JAMP(23) ! used 8 times + TMP_JAMP(98) = TMP_JAMP(25) + TMP_JAMP(17) ! used 8 times + TMP_JAMP(97) = TMP_JAMP(24) + TMP_JAMP(23) ! used 8 times + TMP_JAMP(96) = TMP_JAMP(23) + TMP_JAMP(17) ! used 8 times + TMP_JAMP(95) = TMP_JAMP(22) + TMP_JAMP(20) ! used 8 times + TMP_JAMP(94) = TMP_JAMP(21) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(146) ! used 8 times + TMP_JAMP(93) = TMP_JAMP(21) - TMP_JAMP(20) ! used 8 times + TMP_JAMP(92) = TMP_JAMP(21) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(147) ! used 8 times + TMP_JAMP(91) = TMP_JAMP(20) - TMP_JAMP(19) ! used 8 times + TMP_JAMP(90) = TMP_JAMP(20) + TMP_JAMP(16) ! used 8 times + TMP_JAMP(89) = TMP_JAMP(19) + TMP_JAMP(16) ! used 8 times + TMP_JAMP(88) = TMP_JAMP(18) - TMP_JAMP(17) ! used 8 times + TMP_JAMP(87) = TMP_JAMP(18) + TMP_JAMP(16) ! used 8 times + TMP_JAMP(86) = TMP_JAMP(18) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(140) ! used 8 times + TMP_JAMP(85) = TMP_JAMP(17) + TMP_JAMP(16) ! used 8 times + TMP_JAMP(84) = AMP(439) - AMP(442) ! used 8 times + TMP_JAMP(83) = AMP(421) - AMP(424) ! used 8 times + TMP_JAMP(82) = AMP(420) + AMP(422) ! used 8 times + TMP_JAMP(81) = AMP(341) - AMP(353) ! used 8 times + TMP_JAMP(80) = AMP(337) + AMP(339) ! used 8 times + TMP_JAMP(79) = AMP(151) + AMP(157) ! used 8 times + TMP_JAMP(78) = AMP(139) - AMP(159) ! used 8 times + TMP_JAMP(77) = AMP(88) + AMP(99) ! used 8 times + TMP_JAMP(76) = AMP(84) + AMP(90) ! used 8 times + TMP_JAMP(75) = AMP(438) + AMP(441) ! used 8 times + TMP_JAMP(74) = AMP(356) + AMP(358) ! used 8 times + TMP_JAMP(73) = AMP(355) + AMP(357) ! used 8 times + TMP_JAMP(72) = AMP(106) + AMP(111) ! used 8 times + TMP_JAMP(71) = AMP(102) + AMP(108) ! used 8 times + TMP_JAMP(70) = AMP(86) + AMP(89) ! used 8 times + TMP_JAMP(69) = AMP(430) - AMP(433) ! used 8 times + TMP_JAMP(68) = AMP(359) - AMP(371) ! used 8 times + TMP_JAMP(67) = AMP(145) - AMP(158) ! used 8 times + TMP_JAMP(66) = AMP(429) + AMP(431) ! used 8 times + TMP_JAMP(65) = AMP(338) + AMP(340) ! used 8 times + TMP_JAMP(64) = AMP(118) + AMP(123) ! used 8 times + TMP_JAMP(63) = AMP(114) + AMP(120) ! used 8 times + TMP_JAMP(62) = AMP(377) - AMP(389) ! used 8 times + TMP_JAMP(61) = AMP(374) + AMP(376) ! used 8 times + TMP_JAMP(60) = AMP(373) + AMP(375) ! used 8 times + TMP_JAMP(59) = AMP(104) + AMP(107) ! used 8 times + TMP_JAMP(58) = AMP(116) + AMP(119) ! used 8 times + TMP_JAMP(57) = AMP(70) + AMP(81) ! used 8 times + TMP_JAMP(56) = AMP(66) + AMP(72) ! used 8 times + TMP_JAMP(55) = AMP(68) + AMP(71) ! used 8 times + TMP_JAMP(54) = AMP(130) + AMP(135) ! used 8 times + TMP_JAMP(53) = AMP(126) + AMP(132) ! used 8 times + TMP_JAMP(52) = AMP(128) + AMP(131) ! used 8 times + TMP_JAMP(51) = AMP(52) + AMP(63) ! used 8 times + TMP_JAMP(50) = AMP(48) + AMP(54) ! used 8 times + TMP_JAMP(49) = AMP(50) + AMP(53) ! used 8 times + TMP_JAMP(48) = AMP(149) + AMP(154) ! used 8 times + TMP_JAMP(47) = AMP(137) - AMP(156) ! used 8 times + TMP_JAMP(46) = AMP(143) - AMP(155) ! used 8 times + TMP_JAMP(45) = AMP(280) - AMP(283) ! used 8 times + TMP_JAMP(44) = AMP(262) - AMP(265) ! used 8 times + TMP_JAMP(43) = AMP(261) + AMP(263) ! used 8 times + TMP_JAMP(42) = AMP(182) - AMP(194) ! used 8 times + TMP_JAMP(41) = AMP(178) + AMP(180) ! used 8 times + TMP_JAMP(40) = AMP(279) + AMP(282) ! used 8 times + TMP_JAMP(39) = AMP(197) + AMP(199) ! used 8 times + TMP_JAMP(38) = AMP(196) + AMP(198) ! used 8 times + TMP_JAMP(37) = AMP(271) - AMP(274) ! used 8 times + TMP_JAMP(36) = AMP(200) - AMP(212) ! used 8 times + TMP_JAMP(35) = AMP(270) + AMP(272) ! used 8 times + TMP_JAMP(34) = AMP(179) + AMP(181) ! used 8 times + TMP_JAMP(33) = AMP(218) - AMP(230) ! used 8 times + TMP_JAMP(32) = AMP(215) + AMP(217) ! used 8 times + TMP_JAMP(31) = AMP(214) + AMP(216) ! used 8 times + TMP_JAMP(140) = TMP_JAMP(82) + AMP(445) ! used 8 times + TMP_JAMP(139) = TMP_JAMP(81) - AMP(440) ! used 8 times + TMP_JAMP(138) = TMP_JAMP(80) - AMP(447) ! used 8 times + TMP_JAMP(137) = TMP_JAMP(75) + AMP(463) ! used 8 times + TMP_JAMP(136) = TMP_JAMP(74) - AMP(465) ! used 8 times + TMP_JAMP(135) = TMP_JAMP(73) - AMP(446) ! used 8 times + TMP_JAMP(134) = TMP_JAMP(68) - AMP(432) ! used 8 times + TMP_JAMP(133) = TMP_JAMP(66) + AMP(454) ! used 8 times + TMP_JAMP(132) = TMP_JAMP(65) - AMP(456) ! used 8 times + TMP_JAMP(131) = TMP_JAMP(62) - AMP(423) ! used 8 times + TMP_JAMP(130) = TMP_JAMP(61) - AMP(464) ! used 8 times + TMP_JAMP(129) = TMP_JAMP(60) - AMP(455) ! used 8 times + TMP_JAMP(128) = TMP_JAMP(45) + AMP(316) ! used 8 times + TMP_JAMP(127) = TMP_JAMP(44) - AMP(318) ! used 8 times + TMP_JAMP(126) = TMP_JAMP(43) + AMP(286) ! used 8 times + TMP_JAMP(125) = TMP_JAMP(42) - AMP(281) ! used 8 times + TMP_JAMP(124) = TMP_JAMP(41) - AMP(288) ! used 8 times + TMP_JAMP(123) = TMP_JAMP(40) + AMP(304) ! used 8 times + TMP_JAMP(122) = TMP_JAMP(39) - AMP(306) ! used 8 times + TMP_JAMP(121) = TMP_JAMP(38) - AMP(287) ! used 8 times + TMP_JAMP(120) = TMP_JAMP(37) - AMP(317) ! used 8 times + TMP_JAMP(119) = TMP_JAMP(36) - AMP(273) ! used 8 times + TMP_JAMP(118) = TMP_JAMP(35) + AMP(295) ! used 8 times + TMP_JAMP(117) = TMP_JAMP(34) - AMP(297) ! used 8 times + TMP_JAMP(116) = TMP_JAMP(33) - AMP(264) ! used 8 times + TMP_JAMP(115) = TMP_JAMP(32) - AMP(305) ! used 8 times + TMP_JAMP(114) = TMP_JAMP(31) - AMP(296) ! used 8 times + TMP_JAMP(312) = TMP_JAMP(140) + TMP_JAMP(138) ! used 4 times + TMP_JAMP(311) = TMP_JAMP(140) - TMP_JAMP(135) ! used 4 times + TMP_JAMP(310) = TMP_JAMP(139) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(352) ! used 4 times + TMP_JAMP(309) = TMP_JAMP(139) - TMP_JAMP(138) ! used 4 times + TMP_JAMP(308) = TMP_JAMP(139) - TMP_JAMP(137) ! used 4 times + TMP_JAMP(307) = TMP_JAMP(139) + TMP_JAMP(132) ! used 4 times + TMP_JAMP(306) = TMP_JAMP(139) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(354) ! used 4 times + TMP_JAMP(305) = TMP_JAMP(138) + TMP_JAMP(135) ! used 4 times + TMP_JAMP(304) = TMP_JAMP(138) + TMP_JAMP(132) ! used 4 times + TMP_JAMP(303) = TMP_JAMP(137) + TMP_JAMP(136) ! used 4 times + TMP_JAMP(302) = TMP_JAMP(137) - TMP_JAMP(84) ! used 4 times + TMP_JAMP(301) = TMP_JAMP(136) + TMP_JAMP(135) ! used 4 times + TMP_JAMP(300) = TMP_JAMP(136) + TMP_JAMP(130) ! used 4 times + TMP_JAMP(299) = TMP_JAMP(134) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(370) ! used 4 times + TMP_JAMP(298) = TMP_JAMP(134) - TMP_JAMP(133) ! used 4 times + TMP_JAMP(297) = TMP_JAMP(134) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(372) ! used 4 times + TMP_JAMP(296) = TMP_JAMP(133) + TMP_JAMP(132) ! used 4 times + TMP_JAMP(295) = TMP_JAMP(133) - TMP_JAMP(129) ! used 4 times + TMP_JAMP(294) = TMP_JAMP(132) + TMP_JAMP(129) ! used 4 times + TMP_JAMP(293) = TMP_JAMP(131) + TMP_JAMP(130) ! used 4 times + TMP_JAMP(292) = TMP_JAMP(131) - TMP_JAMP(129) ! used 4 times + TMP_JAMP(291) = TMP_JAMP(131) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(388) ! used 4 times + TMP_JAMP(290) = TMP_JAMP(130) + TMP_JAMP(129) ! used 4 times + TMP_JAMP(289) = TMP_JAMP(128) + TMP_JAMP(127) ! used 4 times + TMP_JAMP(288) = TMP_JAMP(128) - TMP_JAMP(120) ! used 4 times + TMP_JAMP(287) = TMP_JAMP(128) - TMP_JAMP(123) ! used 4 times + TMP_JAMP(286) = TMP_JAMP(127) + TMP_JAMP(126) ! used 4 times + TMP_JAMP(285) = TMP_JAMP(127) + TMP_JAMP(120) ! used 4 times + TMP_JAMP(284) = TMP_JAMP(126) + TMP_JAMP(124) ! used 4 times + TMP_JAMP(283) = TMP_JAMP(126) - TMP_JAMP(121) ! used 4 times + TMP_JAMP(282) = TMP_JAMP(125) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(195) ! used 4 times + TMP_JAMP(281) = TMP_JAMP(125) - TMP_JAMP(124) ! used 4 times + TMP_JAMP(280) = TMP_JAMP(125) - TMP_JAMP(123) ! used 4 times + TMP_JAMP(279) = TMP_JAMP(125) + TMP_JAMP(117) ! used 4 times + TMP_JAMP(278) = TMP_JAMP(125) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(193) ! used 4 times + TMP_JAMP(277) = TMP_JAMP(124) + TMP_JAMP(121) ! used 4 times + TMP_JAMP(276) = TMP_JAMP(124) + TMP_JAMP(117) ! used 4 times + TMP_JAMP(275) = TMP_JAMP(123) + TMP_JAMP(122) ! used 4 times + TMP_JAMP(274) = TMP_JAMP(123) - TMP_JAMP(115) ! used 4 times + TMP_JAMP(273) = TMP_JAMP(122) + TMP_JAMP(121) ! used 4 times + TMP_JAMP(272) = TMP_JAMP(122) + TMP_JAMP(115) ! used 4 times + TMP_JAMP(271) = TMP_JAMP(120) + TMP_JAMP(118) ! used 4 times + TMP_JAMP(270) = TMP_JAMP(119) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(213) ! used 4 times + TMP_JAMP(269) = TMP_JAMP(119) - TMP_JAMP(118) ! used 4 times + TMP_JAMP(268) = TMP_JAMP(119) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(211) ! used 4 times + TMP_JAMP(267) = TMP_JAMP(118) + TMP_JAMP(117) ! used 4 times + TMP_JAMP(266) = TMP_JAMP(118) - TMP_JAMP(114) ! used 4 times + TMP_JAMP(265) = TMP_JAMP(117) + TMP_JAMP(114) ! used 4 times + TMP_JAMP(264) = TMP_JAMP(116) + TMP_JAMP(115) ! used 4 times + TMP_JAMP(263) = TMP_JAMP(116) - TMP_JAMP(114) ! used 4 times + TMP_JAMP(262) = TMP_JAMP(116) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(231) ! used 4 times + TMP_JAMP(261) = TMP_JAMP(115) + TMP_JAMP(114) ! used 4 times + TMP_JAMP(260) = TMP_JAMP(112) - TMP_JAMP(91) ! used 4 times + TMP_JAMP(259) = TMP_JAMP(112) - TMP_JAMP(99) ! used 4 times + TMP_JAMP(258) = TMP_JAMP(109) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(67) ! used 4 times + TMP_JAMP(257) = TMP_JAMP(109) + TMP_JAMP(107) ! used 4 times + TMP_JAMP(256) = TMP_JAMP(108) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(54) ! used 4 times + TMP_JAMP(255) = TMP_JAMP(107) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(54) ! used 4 times + TMP_JAMP(254) = TMP_JAMP(102) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(51) ! used 4 times + TMP_JAMP(253) = TMP_JAMP(101) - TMP_JAMP(91) ! used 4 times + TMP_JAMP(252) = TMP_JAMP(97) + TMP_JAMP(26) ! used 4 times + TMP_JAMP(251) = TMP_JAMP(97) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(71) ! used 4 times + TMP_JAMP(250) = TMP_JAMP(91) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(64) ! used 4 times + TMP_JAMP(249) = TMP_JAMP(91) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(56) ! used 4 times + TMP_JAMP(248) = TMP_JAMP(86) + AMP(134) ! used 4 times + TMP_JAMP(247) = TMP_JAMP(85) + TMP_JAMP(25) ! used 4 times + TMP_JAMP(246) = TMP_JAMP(85) + TMP_JAMP(23) ! used 4 times + TMP_JAMP(245) = TMP_JAMP(85) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(58) ! used 4 times + TMP_JAMP(244) = TMP_JAMP(84) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(437) ! used 4 times + TMP_JAMP(243) = TMP_JAMP(84) + TMP_JAMP(83) ! used 4 times + TMP_JAMP(242) = TMP_JAMP(84) - TMP_JAMP(69) ! used 4 times + TMP_JAMP(241) = TMP_JAMP(83) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(419) ! used 4 times + TMP_JAMP(240) = TMP_JAMP(83) + TMP_JAMP(69) ! used 4 times + TMP_JAMP(239) = TMP_JAMP(79) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(437) ! used 4 times + TMP_JAMP(238) = TMP_JAMP(79) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(150) ! used 4 times + TMP_JAMP(237) = TMP_JAMP(79) - TMP_JAMP(67) ! used 4 times + TMP_JAMP(236) = TMP_JAMP(78) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(419) ! used 4 times + TMP_JAMP(235) = TMP_JAMP(78) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(98) ! used 4 times + TMP_JAMP(234) = TMP_JAMP(78) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(138) ! used 4 times + TMP_JAMP(233) = TMP_JAMP(77) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(98) ! used 4 times + TMP_JAMP(232) = TMP_JAMP(77) - TMP_JAMP(76) ! used 4 times + TMP_JAMP(231) = TMP_JAMP(77) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(28) ! used 4 times + TMP_JAMP(230) = TMP_JAMP(76) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(85) ! used 4 times + TMP_JAMP(229) = TMP_JAMP(76) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(96) ! used 4 times + TMP_JAMP(228) = TMP_JAMP(72) - TMP_JAMP(71) ! used 4 times + TMP_JAMP(227) = TMP_JAMP(72) + TMP_JAMP(59) ! used 4 times + TMP_JAMP(226) = TMP_JAMP(71) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(103) ! used 4 times + TMP_JAMP(225) = TMP_JAMP(70) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(93) ! used 4 times + TMP_JAMP(224) = TMP_JAMP(70) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(87) ! used 4 times + TMP_JAMP(223) = TMP_JAMP(69) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(428) ! used 4 times + TMP_JAMP(222) = TMP_JAMP(67) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(428) ! used 4 times + TMP_JAMP(221) = TMP_JAMP(67) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(144) ! used 4 times + TMP_JAMP(220) = TMP_JAMP(64) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(122) ! used 4 times + TMP_JAMP(219) = TMP_JAMP(64) + TMP_JAMP(58) ! used 4 times + TMP_JAMP(218) = TMP_JAMP(63) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(96) ! used 4 times + TMP_JAMP(217) = TMP_JAMP(63) + TMP_JAMP(58) ! used 4 times + TMP_JAMP(216) = TMP_JAMP(63) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(115) ! used 4 times + TMP_JAMP(215) = TMP_JAMP(59) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(105) ! used 4 times + TMP_JAMP(214) = TMP_JAMP(58) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(117) ! used 4 times + TMP_JAMP(213) = TMP_JAMP(57) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(80) ! used 4 times + TMP_JAMP(212) = TMP_JAMP(57) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(79) ! used 4 times + TMP_JAMP(211) = TMP_JAMP(56) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(67) ! used 4 times + TMP_JAMP(210) = TMP_JAMP(55) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(75) ! used 4 times + TMP_JAMP(209) = TMP_JAMP(55) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(69) ! used 4 times + TMP_JAMP(208) = TMP_JAMP(54) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(134) ! used 4 times + TMP_JAMP(207) = TMP_JAMP(54) + TMP_JAMP(52) ! used 4 times + TMP_JAMP(206) = TMP_JAMP(53) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(78) ! used 4 times + TMP_JAMP(205) = TMP_JAMP(53) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(127) ! used 4 times + TMP_JAMP(204) = TMP_JAMP(52) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(129) ! used 4 times + TMP_JAMP(203) = TMP_JAMP(51) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(62) ! used 4 times + TMP_JAMP(202) = TMP_JAMP(50) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(49) ! used 4 times + TMP_JAMP(201) = TMP_JAMP(50) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(60) ! used 4 times + TMP_JAMP(200) = TMP_JAMP(49) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(57) ! used 4 times + TMP_JAMP(199) = TMP_JAMP(49) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(51) ! used 4 times + TMP_JAMP(198) = TMP_JAMP(48) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(109) ! used 4 times + TMP_JAMP(197) = TMP_JAMP(48) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(148) ! used 4 times + TMP_JAMP(196) = TMP_JAMP(47) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(29) ! used 4 times + TMP_JAMP(195) = TMP_JAMP(47) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(133) ! used 4 times + TMP_JAMP(194) = TMP_JAMP(46) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(121) ! used 4 times + TMP_JAMP(193) = TMP_JAMP(46) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(142) ! used 4 times + TMP_JAMP(192) = TMP_JAMP(28) - AMP(97) ! used 4 times + TMP_JAMP(191) = TMP_JAMP(25) - AMP(61) ! used 4 times + TMP_JAMP(190) = AMP(416) + AMP(451) ! used 4 times + TMP_JAMP(189) = AMP(350) - AMP(453) ! used 4 times + TMP_JAMP(188) = AMP(85) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(152) ! used 4 times + TMP_JAMP(187) = AMP(443) + AMP(466) ! used 4 times + TMP_JAMP(186) = AMP(368) - AMP(452) ! used 4 times + TMP_JAMP(185) = AMP(361) - AMP(468) ! used 4 times + TMP_JAMP(184) = AMP(110) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(152) ! used 4 times + TMP_JAMP(183) = AMP(434) + AMP(457) ! used 4 times + TMP_JAMP(182) = AMP(343) - AMP(459) ! used 4 times + TMP_JAMP(181) = AMP(379) - AMP(467) ! used 4 times + TMP_JAMP(180) = AMP(381) - AMP(458) ! used 4 times + TMP_JAMP(179) = AMP(97) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(141) ! used 4 times + TMP_JAMP(178) = AMP(117) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(141) ! used 4 times + TMP_JAMP(177) = AMP(407) + AMP(460) ! used 4 times + TMP_JAMP(176) = AMP(347) - AMP(462) ! used 4 times + TMP_JAMP(175) = AMP(386) - AMP(461) ! used 4 times + TMP_JAMP(174) = AMP(425) + AMP(448) ! used 4 times + TMP_JAMP(173) = AMP(345) - AMP(450) ! used 4 times + TMP_JAMP(172) = AMP(363) - AMP(449) ! used 4 times + TMP_JAMP(171) = AMP(398) + AMP(469) ! used 4 times + TMP_JAMP(170) = AMP(365) - AMP(471) ! used 4 times + TMP_JAMP(169) = AMP(383) - AMP(470) ! used 4 times + TMP_JAMP(168) = AMP(331) + AMP(334) ! used 4 times + TMP_JAMP(167) = AMP(325) - AMP(336) ! used 4 times + TMP_JAMP(166) = AMP(328) - AMP(335) ! used 4 times + TMP_JAMP(165) = AMP(136) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(141) ! used 4 times + TMP_JAMP(164) = AMP(266) + AMP(289) ! used 4 times + TMP_JAMP(163) = AMP(186) - AMP(291) ! used 4 times + TMP_JAMP(162) = AMP(172) + AMP(175) ! used 4 times + TMP_JAMP(161) = AMP(166) - AMP(177) ! used 4 times + TMP_JAMP(160) = AMP(239) + AMP(310) ! used 4 times + TMP_JAMP(159) = AMP(206) - AMP(312) ! used 4 times + TMP_JAMP(158) = AMP(204) - AMP(290) ! used 4 times + TMP_JAMP(157) = AMP(169) - AMP(176) ! used 4 times + TMP_JAMP(156) = AMP(248) + AMP(301) ! used 4 times + TMP_JAMP(155) = AMP(188) - AMP(303) ! used 4 times + TMP_JAMP(154) = AMP(224) - AMP(311) ! used 4 times + TMP_JAMP(153) = AMP(227) - AMP(302) ! used 4 times + TMP_JAMP(152) = AMP(275) + AMP(298) ! used 4 times + TMP_JAMP(151) = AMP(184) - AMP(300) ! used 4 times + TMP_JAMP(150) = AMP(222) - AMP(299) ! used 4 times + TMP_JAMP(149) = AMP(257) + AMP(292) ! used 4 times + TMP_JAMP(148) = AMP(191) - AMP(294) ! used 4 times + TMP_JAMP(147) = AMP(209) - AMP(293) ! used 4 times + TMP_JAMP(146) = AMP(284) + AMP(307) ! used 4 times + TMP_JAMP(145) = AMP(202) - AMP(309) ! used 4 times + TMP_JAMP(144) = AMP(220) - AMP(308) ! used 4 times + TMP_JAMP(143) = AMP(278) + AMP(313) ! used 4 times + TMP_JAMP(142) = AMP(260) - AMP(315) ! used 4 times + TMP_JAMP(141) = AMP(269) - AMP(314) ! used 4 times + TMP_JAMP(324) = TMP_JAMP(254) - TMP_JAMP(191) ! used 4 times + TMP_JAMP(323) = TMP_JAMP(234) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(86) ! used 4 times + TMP_JAMP(322) = TMP_JAMP(224) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(94) ! used 4 times + TMP_JAMP(321) = TMP_JAMP(221) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(94) ! used 4 times + TMP_JAMP(320) = TMP_JAMP(215) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(88) ! used 4 times + TMP_JAMP(319) = TMP_JAMP(212) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(92) ! used 4 times + TMP_JAMP(318) = TMP_JAMP(209) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(86) ! used 4 times + TMP_JAMP(317) = TMP_JAMP(204) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(92) ! used 4 times + TMP_JAMP(316) = TMP_JAMP(198) - TMP_JAMP(72) ! used 4 times + TMP_JAMP(315) = TMP_JAMP(197) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(102) ! used 4 times + TMP_JAMP(314) = TMP_JAMP(196) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(165) ! used 4 times + TMP_JAMP(313) = TMP_JAMP(193) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(92) ! used 4 times + TMP_JAMP(325) = TMP_JAMP(190) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(140) ! used 3 times + TMP_JAMP(531) = TMP_JAMP(325) + TMP_JAMP(189) ! used 2 times + TMP_JAMP(530) = TMP_JAMP(325) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(417) ! used 2 times + TMP_JAMP(529) = TMP_JAMP(324) - TMP_JAMP(245) ! used 2 times + TMP_JAMP(528) = TMP_JAMP(324) + TMP_JAMP(252) ! used 2 times + TMP_JAMP(527) = TMP_JAMP(322) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(253) ! used 2 times + TMP_JAMP(526) = TMP_JAMP(321) + TMP_JAMP(299) ! used 2 times + TMP_JAMP(525) = TMP_JAMP(321) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(259) ! used 2 times + TMP_JAMP(524) = TMP_JAMP(320) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(251) ! used 2 times + TMP_JAMP(523) = TMP_JAMP(320) - TMP_JAMP(314) ! used 2 times + TMP_JAMP(522) = TMP_JAMP(318) + TMP_JAMP(234) ! used 2 times + TMP_JAMP(521) = TMP_JAMP(317) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(249) ! used 2 times + TMP_JAMP(520) = TMP_JAMP(316) + TMP_JAMP(314) ! used 2 times + TMP_JAMP(519) = TMP_JAMP(316) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(160) ! used 2 times + TMP_JAMP(518) = TMP_JAMP(315) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(250) ! used 2 times + TMP_JAMP(517) = TMP_JAMP(315) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(256) ! used 2 times + TMP_JAMP(516) = TMP_JAMP(315) - TMP_JAMP(278) ! used 2 times + TMP_JAMP(515) = TMP_JAMP(314) + TMP_JAMP(214) ! used 2 times + TMP_JAMP(514) = TMP_JAMP(313) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(259) ! used 2 times + TMP_JAMP(513) = TMP_JAMP(313) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(255) ! used 2 times + TMP_JAMP(512) = TMP_JAMP(313) + TMP_JAMP(268) ! used 2 times + TMP_JAMP(511) = TMP_JAMP(312) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(174) ! used 2 times + TMP_JAMP(510) = TMP_JAMP(311) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(174) ! used 2 times + TMP_JAMP(509) = TMP_JAMP(306) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(171) ! used 2 times + TMP_JAMP(508) = TMP_JAMP(305) + TMP_JAMP(296) ! used 2 times + TMP_JAMP(507) = TMP_JAMP(302) - TMP_JAMP(239) ! used 2 times + TMP_JAMP(506) = TMP_JAMP(301) + TMP_JAMP(138) ! used 2 times + TMP_JAMP(505) = TMP_JAMP(296) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(176) ! used 2 times + TMP_JAMP(504) = TMP_JAMP(296) - TMP_JAMP(242) ! used 2 times + TMP_JAMP(503) = TMP_JAMP(293) - AMP(378) ! used 2 times + TMP_JAMP(502) = TMP_JAMP(291) + AMP(418) ! used 2 times + TMP_JAMP(501) = TMP_JAMP(291) - AMP(426) ! used 2 times + TMP_JAMP(500) = TMP_JAMP(290) + TMP_JAMP(136) ! used 2 times + TMP_JAMP(499) = TMP_JAMP(290) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(180) ! used 2 times + TMP_JAMP(498) = TMP_JAMP(288) - TMP_JAMP(267) ! used 2 times + TMP_JAMP(497) = TMP_JAMP(288) - TMP_JAMP(275) ! used 2 times + TMP_JAMP(496) = TMP_JAMP(285) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(157) ! used 2 times + TMP_JAMP(495) = TMP_JAMP(285) + TMP_JAMP(283) ! used 2 times + TMP_JAMP(494) = TMP_JAMP(278) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(146) ! used 2 times + TMP_JAMP(493) = TMP_JAMP(277) + TMP_JAMP(267) ! used 2 times + TMP_JAMP(492) = TMP_JAMP(273) + TMP_JAMP(124) ! used 2 times + TMP_JAMP(491) = TMP_JAMP(267) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(151) ! used 2 times + TMP_JAMP(490) = TMP_JAMP(262) - AMP(258) ! used 2 times + TMP_JAMP(489) = TMP_JAMP(261) - TMP_JAMP(123) ! used 2 times + TMP_JAMP(488) = TMP_JAMP(261) + TMP_JAMP(122) ! used 2 times + TMP_JAMP(487) = TMP_JAMP(261) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(153) ! used 2 times + TMP_JAMP(486) = TMP_JAMP(257) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(233) ! used 2 times + TMP_JAMP(485) = TMP_JAMP(256) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(205) ! used 2 times + TMP_JAMP(484) = TMP_JAMP(255) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(204) ! used 2 times + TMP_JAMP(483) = TMP_JAMP(250) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(216) ! used 2 times + TMP_JAMP(482) = TMP_JAMP(246) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(226) ! used 2 times + TMP_JAMP(481) = TMP_JAMP(246) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(219) ! used 2 times + TMP_JAMP(480) = TMP_JAMP(240) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(167) ! used 2 times + TMP_JAMP(479) = TMP_JAMP(239) - TMP_JAMP(203) ! used 2 times + TMP_JAMP(478) = TMP_JAMP(238) - AMP(436) ! used 2 times + TMP_JAMP(477) = TMP_JAMP(238) + TMP_JAMP(235) ! used 2 times + TMP_JAMP(476) = TMP_JAMP(234) + TMP_JAMP(213) ! used 2 times + TMP_JAMP(475) = TMP_JAMP(232) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(188) ! used 2 times + TMP_JAMP(474) = TMP_JAMP(231) + TMP_JAMP(225) ! used 2 times + TMP_JAMP(473) = TMP_JAMP(230) + TMP_JAMP(228) ! used 2 times + TMP_JAMP(472) = TMP_JAMP(229) - TMP_JAMP(217) ! used 2 times + TMP_JAMP(471) = TMP_JAMP(227) - TMP_JAMP(211) ! used 2 times + TMP_JAMP(470) = TMP_JAMP(226) + AMP(101) ! used 2 times + TMP_JAMP(469) = TMP_JAMP(225) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(184) ! used 2 times + TMP_JAMP(468) = TMP_JAMP(224) + AMP(82) ! used 2 times + TMP_JAMP(467) = TMP_JAMP(223) + AMP(427) ! used 2 times + TMP_JAMP(466) = TMP_JAMP(222) + TMP_JAMP(213) ! used 2 times + TMP_JAMP(465) = TMP_JAMP(220) - TMP_JAMP(218) ! used 2 times + TMP_JAMP(464) = TMP_JAMP(216) - TMP_JAMP(200) ! used 2 times + TMP_JAMP(463) = TMP_JAMP(216) - TMP_JAMP(194) ! used 2 times + TMP_JAMP(462) = TMP_JAMP(214) + TMP_JAMP(194) ! used 2 times + TMP_JAMP(461) = TMP_JAMP(213) - TMP_JAMP(211) ! used 2 times + TMP_JAMP(460) = TMP_JAMP(212) + TMP_JAMP(206) ! used 2 times + TMP_JAMP(459) = TMP_JAMP(210) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(184) ! used 2 times + TMP_JAMP(458) = TMP_JAMP(210) - TMP_JAMP(59) ! used 2 times + TMP_JAMP(457) = TMP_JAMP(208) - TMP_JAMP(206) ! used 2 times + TMP_JAMP(456) = TMP_JAMP(207) - TMP_JAMP(201) ! used 2 times + TMP_JAMP(455) = TMP_JAMP(205) - TMP_JAMP(201) ! used 2 times + TMP_JAMP(454) = TMP_JAMP(205) - TMP_JAMP(195) ! used 2 times + TMP_JAMP(453) = TMP_JAMP(204) + TMP_JAMP(195) ! used 2 times + TMP_JAMP(452) = TMP_JAMP(203) - AMP(397) ! used 2 times + TMP_JAMP(451) = TMP_JAMP(203) - TMP_JAMP(79) ! used 2 times + TMP_JAMP(450) = TMP_JAMP(202) + AMP(47) ! used 2 times + TMP_JAMP(449) = TMP_JAMP(202) + TMP_JAMP(200) ! used 2 times + TMP_JAMP(448) = TMP_JAMP(199) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(113) ! used 2 times + TMP_JAMP(447) = TMP_JAMP(199) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(107) ! used 2 times + TMP_JAMP(446) = TMP_JAMP(195) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(149) ! used 2 times + TMP_JAMP(445) = TMP_JAMP(194) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(156) ! used 2 times + TMP_JAMP(444) = TMP_JAMP(192) + TMP_JAMP(178) ! used 2 times + TMP_JAMP(443) = TMP_JAMP(189) + TMP_JAMP(186) ! used 2 times + TMP_JAMP(442) = TMP_JAMP(189) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(351) ! used 2 times + TMP_JAMP(441) = TMP_JAMP(187) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(332) ! used 2 times + TMP_JAMP(440) = TMP_JAMP(186) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(369) ! used 2 times + TMP_JAMP(439) = TMP_JAMP(186) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(367) ! used 2 times + TMP_JAMP(438) = TMP_JAMP(185) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(369) ! used 2 times + TMP_JAMP(437) = TMP_JAMP(185) + TMP_JAMP(181) ! used 2 times + TMP_JAMP(436) = TMP_JAMP(185) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(360) ! used 2 times + TMP_JAMP(435) = TMP_JAMP(183) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(435) ! used 2 times + TMP_JAMP(434) = TMP_JAMP(183) - TMP_JAMP(180) ! used 2 times + TMP_JAMP(433) = TMP_JAMP(182) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(351) ! used 2 times + TMP_JAMP(432) = TMP_JAMP(182) + TMP_JAMP(180) ! used 2 times + TMP_JAMP(431) = TMP_JAMP(182) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(342) ! used 2 times + TMP_JAMP(430) = TMP_JAMP(181) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(137) ! used 2 times + TMP_JAMP(429) = TMP_JAMP(180) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(380) ! used 2 times + TMP_JAMP(428) = TMP_JAMP(179) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(91) ! used 2 times + TMP_JAMP(427) = TMP_JAMP(177) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(406) ! used 2 times + TMP_JAMP(426) = TMP_JAMP(177) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(408) ! used 2 times + TMP_JAMP(425) = TMP_JAMP(176) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(346) ! used 2 times + TMP_JAMP(424) = TMP_JAMP(175) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(387) ! used 2 times + TMP_JAMP(423) = TMP_JAMP(175) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(385) ! used 2 times + TMP_JAMP(422) = TMP_JAMP(174) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(426) ! used 2 times + TMP_JAMP(421) = TMP_JAMP(174) - TMP_JAMP(172) ! used 2 times + TMP_JAMP(420) = TMP_JAMP(173) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(348) ! used 2 times + TMP_JAMP(419) = TMP_JAMP(173) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(344) ! used 2 times + TMP_JAMP(418) = TMP_JAMP(172) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(362) ! used 2 times + TMP_JAMP(417) = TMP_JAMP(171) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(397) ! used 2 times + TMP_JAMP(416) = TMP_JAMP(171) + TMP_JAMP(170) ! used 2 times + TMP_JAMP(415) = TMP_JAMP(170) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(366) ! used 2 times + TMP_JAMP(414) = TMP_JAMP(169) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(384) ! used 2 times + TMP_JAMP(413) = TMP_JAMP(169) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(382) ! used 2 times + TMP_JAMP(412) = TMP_JAMP(168) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(332) ! used 2 times + TMP_JAMP(411) = TMP_JAMP(168) + TMP_JAMP(167) ! used 2 times + TMP_JAMP(410) = TMP_JAMP(168) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(333) ! used 2 times + TMP_JAMP(409) = TMP_JAMP(167) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(327) ! used 2 times + TMP_JAMP(408) = TMP_JAMP(166) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(330) ! used 2 times + TMP_JAMP(407) = TMP_JAMP(166) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(329) ! used 2 times + TMP_JAMP(406) = TMP_JAMP(164) + TMP_JAMP(163) ! used 2 times + TMP_JAMP(405) = TMP_JAMP(163) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(185) ! used 2 times + TMP_JAMP(404) = TMP_JAMP(163) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(189) ! used 2 times + TMP_JAMP(403) = TMP_JAMP(162) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(174) ! used 2 times + TMP_JAMP(402) = TMP_JAMP(162) - TMP_JAMP(157) ! used 2 times + TMP_JAMP(401) = TMP_JAMP(161) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(168) ! used 2 times + TMP_JAMP(400) = TMP_JAMP(161) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(167) ! used 2 times + TMP_JAMP(399) = TMP_JAMP(160) + TMP_JAMP(159) ! used 2 times + TMP_JAMP(398) = TMP_JAMP(160) - TMP_JAMP(154) ! used 2 times + TMP_JAMP(397) = TMP_JAMP(159) + TMP_JAMP(154) ! used 2 times + TMP_JAMP(396) = TMP_JAMP(159) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(205) ! used 2 times + TMP_JAMP(395) = TMP_JAMP(158) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(207) ! used 2 times + TMP_JAMP(394) = TMP_JAMP(158) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(203) ! used 2 times + TMP_JAMP(393) = TMP_JAMP(157) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(170) ! used 2 times + TMP_JAMP(392) = TMP_JAMP(156) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(249) ! used 2 times + TMP_JAMP(391) = TMP_JAMP(156) - TMP_JAMP(153) ! used 2 times + TMP_JAMP(390) = TMP_JAMP(155) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(189) ! used 2 times + TMP_JAMP(389) = TMP_JAMP(155) + TMP_JAMP(153) ! used 2 times + TMP_JAMP(388) = TMP_JAMP(155) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(187) ! used 2 times + TMP_JAMP(387) = TMP_JAMP(154) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(223) ! used 2 times + TMP_JAMP(386) = TMP_JAMP(153) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(226) ! used 2 times + TMP_JAMP(385) = TMP_JAMP(152) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(171) ! used 2 times + TMP_JAMP(384) = TMP_JAMP(152) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(276) ! used 2 times + TMP_JAMP(383) = TMP_JAMP(151) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(183) ! used 2 times + TMP_JAMP(382) = TMP_JAMP(150) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(225) ! used 2 times + TMP_JAMP(381) = TMP_JAMP(150) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(221) ! used 2 times + TMP_JAMP(380) = TMP_JAMP(149) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(258) ! used 2 times + TMP_JAMP(379) = TMP_JAMP(149) - TMP_JAMP(147) ! used 2 times + TMP_JAMP(378) = TMP_JAMP(148) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(192) ! used 2 times + TMP_JAMP(377) = TMP_JAMP(148) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(190) ! used 2 times + TMP_JAMP(376) = TMP_JAMP(147) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(208) ! used 2 times + TMP_JAMP(375) = TMP_JAMP(146) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(173) ! used 2 times + TMP_JAMP(374) = TMP_JAMP(145) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(201) ! used 2 times + TMP_JAMP(373) = TMP_JAMP(145) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(210) ! used 2 times + TMP_JAMP(372) = TMP_JAMP(144) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(228) ! used 2 times + TMP_JAMP(371) = TMP_JAMP(144) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(219) ! used 2 times + TMP_JAMP(370) = TMP_JAMP(143) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(238) ! used 2 times + TMP_JAMP(369) = TMP_JAMP(143) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(277) ! used 2 times + TMP_JAMP(368) = TMP_JAMP(142) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(127) ! used 2 times + TMP_JAMP(367) = TMP_JAMP(142) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(256) ! used 2 times + TMP_JAMP(366) = TMP_JAMP(141) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(247) ! used 2 times + TMP_JAMP(365) = TMP_JAMP(141) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(268) ! used 2 times + TMP_JAMP(364) = TMP_JAMP(137) + AMP(399) ! used 2 times + TMP_JAMP(363) = TMP_JAMP(136) - AMP(364) ! used 2 times + TMP_JAMP(362) = TMP_JAMP(126) + AMP(267) ! used 2 times + TMP_JAMP(361) = TMP_JAMP(123) + AMP(285) ! used 2 times + TMP_JAMP(360) = TMP_JAMP(113) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(125) ! used 2 times + TMP_JAMP(359) = TMP_JAMP(112) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(113) ! used 2 times + TMP_JAMP(358) = TMP_JAMP(111) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(100) ! used 2 times + TMP_JAMP(357) = TMP_JAMP(110) - TMP_JAMP(105) ! used 2 times + TMP_JAMP(356) = TMP_JAMP(109) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(124) ! used 2 times + TMP_JAMP(355) = TMP_JAMP(108) - TMP_JAMP(89) ! used 2 times + TMP_JAMP(354) = TMP_JAMP(106) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(65) ! used 2 times + TMP_JAMP(353) = TMP_JAMP(104) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(92) ! used 2 times + TMP_JAMP(352) = TMP_JAMP(103) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(74) ! used 2 times + TMP_JAMP(351) = TMP_JAMP(101) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(76) ! used 2 times + TMP_JAMP(350) = TMP_JAMP(100) + TMP_JAMP(87) ! used 2 times + TMP_JAMP(349) = TMP_JAMP(98) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(46) ! used 2 times + TMP_JAMP(348) = TMP_JAMP(96) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(59) ! used 2 times + TMP_JAMP(347) = TMP_JAMP(95) + TMP_JAMP(87) ! used 2 times + TMP_JAMP(346) = TMP_JAMP(93) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(146) ! used 2 times + TMP_JAMP(345) = TMP_JAMP(90) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(64) ! used 2 times + TMP_JAMP(344) = TMP_JAMP(77) - AMP(94) ! used 2 times + TMP_JAMP(343) = TMP_JAMP(76) - AMP(95) ! used 2 times + TMP_JAMP(342) = TMP_JAMP(64) + AMP(112) ! used 2 times + TMP_JAMP(341) = TMP_JAMP(56) - AMP(77) ! used 2 times + TMP_JAMP(340) = TMP_JAMP(52) - AMP(58) ! used 2 times + TMP_JAMP(339) = TMP_JAMP(30) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(83) ! used 2 times + TMP_JAMP(338) = TMP_JAMP(20) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(73) ! used 2 times + TMP_JAMP(337) = TMP_JAMP(19) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(55) ! used 2 times + TMP_JAMP(336) = AMP(349) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(352) ! used 2 times + TMP_JAMP(335) = AMP(352) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(444) ! used 2 times + TMP_JAMP(334) = AMP(378) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(390) ! used 2 times + TMP_JAMP(333) = AMP(380) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(390) ! used 2 times + TMP_JAMP(332) = AMP(56) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(122) ! used 2 times + TMP_JAMP(331) = AMP(326) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(390) ! used 2 times + TMP_JAMP(330) = AMP(185) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(195) ! used 2 times + TMP_JAMP(329) = AMP(195) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(240) ! used 2 times + TMP_JAMP(328) = AMP(223) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(229) ! used 2 times + TMP_JAMP(327) = AMP(226) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(229) ! used 2 times + TMP_JAMP(326) = AMP(229) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(259) ! used 2 times + TMP_JAMP(578) = TMP_JAMP(525) - TMP_JAMP(450) ! used 2 times + TMP_JAMP(577) = TMP_JAMP(519) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(370) ! used 2 times + TMP_JAMP(576) = TMP_JAMP(516) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(369) ! used 2 times + TMP_JAMP(575) = TMP_JAMP(512) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(365) ! used 2 times + TMP_JAMP(574) = TMP_JAMP(509) - TMP_JAMP(364) ! used 2 times + TMP_JAMP(573) = TMP_JAMP(494) - TMP_JAMP(361) ! used 2 times + TMP_JAMP(572) = TMP_JAMP(486) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(468) ! used 2 times + TMP_JAMP(571) = TMP_JAMP(482) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(458) ! used 2 times + TMP_JAMP(570) = TMP_JAMP(481) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(449) ! used 2 times + TMP_JAMP(569) = TMP_JAMP(477) + TMP_JAMP(475) ! used 2 times + TMP_JAMP(568) = TMP_JAMP(474) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(428) ! used 2 times + TMP_JAMP(567) = TMP_JAMP(473) + TMP_JAMP(469) ! used 2 times + TMP_JAMP(566) = TMP_JAMP(472) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(444) ! used 2 times + TMP_JAMP(565) = TMP_JAMP(471) - TMP_JAMP(459) ! used 2 times + TMP_JAMP(564) = TMP_JAMP(465) + TMP_JAMP(343) ! used 2 times + TMP_JAMP(563) = TMP_JAMP(464) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(337) ! used 2 times + TMP_JAMP(562) = TMP_JAMP(460) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(351) ! used 2 times + TMP_JAMP(561) = TMP_JAMP(457) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(355) ! used 2 times + TMP_JAMP(560) = TMP_JAMP(456) - TMP_JAMP(447) ! used 2 times + TMP_JAMP(559) = TMP_JAMP(455) + TMP_JAMP(340) ! used 2 times + TMP_JAMP(558) = TMP_JAMP(446) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(367) ! used 2 times + TMP_JAMP(557) = TMP_JAMP(445) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(366) ! used 2 times + TMP_JAMP(556) = TMP_JAMP(426) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(297) ! used 2 times + TMP_JAMP(555) = TMP_JAMP(418) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(297) ! used 2 times + TMP_JAMP(554) = TMP_JAMP(410) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(306) ! used 2 times + TMP_JAMP(553) = TMP_JAMP(408) + TMP_JAMP(183) ! used 2 times + TMP_JAMP(552) = TMP_JAMP(407) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(297) ! used 2 times + TMP_JAMP(551) = TMP_JAMP(400) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(262) ! used 2 times + TMP_JAMP(550) = TMP_JAMP(394) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(270) ! used 2 times + TMP_JAMP(549) = TMP_JAMP(393) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(270) ! used 2 times + TMP_JAMP(548) = TMP_JAMP(384) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(268) ! used 2 times + TMP_JAMP(547) = TMP_JAMP(381) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(262) ! used 2 times + TMP_JAMP(546) = TMP_JAMP(375) - TMP_JAMP(162) ! used 2 times + TMP_JAMP(545) = TMP_JAMP(368) - TMP_JAMP(326) ! used 2 times + TMP_JAMP(544) = TMP_JAMP(362) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(164) ! used 2 times + TMP_JAMP(543) = TMP_JAMP(357) + TMP_JAMP(339) ! used 2 times + TMP_JAMP(542) = TMP_JAMP(354) - TMP_JAMP(260) ! used 2 times + TMP_JAMP(541) = TMP_JAMP(353) + TMP_JAMP(252) ! used 2 times + TMP_JAMP(540) = TMP_JAMP(352) - TMP_JAMP(247) ! used 2 times + TMP_JAMP(539) = TMP_JAMP(350) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(344) ! used 2 times + TMP_JAMP(538) = TMP_JAMP(349) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(323) ! used 2 times + TMP_JAMP(537) = TMP_JAMP(348) - TMP_JAMP(248) ! used 2 times + TMP_JAMP(536) = TMP_JAMP(347) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(342) ! used 2 times + TMP_JAMP(535) = TMP_JAMP(346) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(332) ! used 2 times + TMP_JAMP(534) = TMP_JAMP(341) + TMP_JAMP(318) ! used 2 times + TMP_JAMP(533) = TMP_JAMP(338) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(319) ! used 2 times + TMP_JAMP(532) = TMP_JAMP(335) - TMP_JAMP(187) ! used 2 times + TMP_JAMP(593) = TMP_JAMP(571) + TMP_JAMP(533) ! used 2 times + TMP_JAMP(592) = TMP_JAMP(570) - TMP_JAMP(535) ! used 2 times + TMP_JAMP(591) = TMP_JAMP(569) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(543) ! used 2 times + TMP_JAMP(590) = TMP_JAMP(568) - TMP_JAMP(524) ! used 2 times + TMP_JAMP(589) = TMP_JAMP(567) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(541) ! used 2 times + TMP_JAMP(588) = TMP_JAMP(566) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(539) ! used 2 times + TMP_JAMP(587) = TMP_JAMP(565) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(540) ! used 2 times + TMP_JAMP(586) = TMP_JAMP(564) + TMP_JAMP(527) ! used 2 times + TMP_JAMP(585) = TMP_JAMP(563) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(529) ! used 2 times + TMP_JAMP(584) = TMP_JAMP(562) + TMP_JAMP(521) ! used 2 times + TMP_JAMP(583) = TMP_JAMP(561) + TMP_JAMP(534) ! used 2 times + TMP_JAMP(582) = TMP_JAMP(560) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(537) ! used 2 times + TMP_JAMP(581) = TMP_JAMP(559) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(528) ! used 2 times + TMP_JAMP(580) = TMP_JAMP(542) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(461) ! used 2 times + TMP_JAMP(579) = TMP_JAMP(538) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(448) ! used 2 times + TMP_JAMP(638) = AMP(571) + AMP(576) ! used 16 times + TMP_JAMP(637) = AMP(556) - AMP(559) ! used 16 times + TMP_JAMP(636) = AMP(555) + AMP(557) ! used 16 times + TMP_JAMP(635) = AMP(554) - AMP(574) ! used 16 times + TMP_JAMP(634) = AMP(551) + AMP(553) ! used 16 times + TMP_JAMP(633) = AMP(575) + AMP(578) ! used 16 times + TMP_JAMP(632) = AMP(521) + AMP(524) ! used 16 times + TMP_JAMP(631) = AMP(520) + AMP(523) ! used 16 times + TMP_JAMP(630) = AMP(719) + AMP(721) ! used 16 times + TMP_JAMP(629) = AMP(715) - AMP(718) ! used 16 times + TMP_JAMP(628) = AMP(714) + AMP(716) ! used 16 times + TMP_JAMP(627) = AMP(681) + AMP(684) ! used 16 times + TMP_JAMP(626) = AMP(679) + AMP(682) ! used 16 times + TMP_JAMP(625) = AMP(720) - AMP(723) ! used 16 times + TMP_JAMP(624) = AMP(710) + AMP(712) ! used 16 times + TMP_JAMP(623) = AMP(709) + AMP(711) ! used 16 times + TMP_JAMP(622) = AMP(730) + AMP(735) ! used 16 times + TMP_JAMP(621) = AMP(713) - AMP(733) ! used 16 times + TMP_JAMP(620) = AMP(734) + AMP(737) ! used 16 times + TMP_JAMP(619) = AMP(680) + AMP(683) ! used 16 times + TMP_JAMP(618) = AMP(560) + AMP(562) ! used 16 times + TMP_JAMP(617) = AMP(522) + AMP(525) ! used 16 times + TMP_JAMP(616) = AMP(561) - AMP(564) ! used 16 times + TMP_JAMP(615) = AMP(550) + AMP(552) ! used 16 times + TMP_JAMP(614) = AMP(540) + AMP(543) ! used 16 times + TMP_JAMP(613) = AMP(539) + AMP(542) ! used 16 times + TMP_JAMP(612) = AMP(699) + AMP(702) ! used 16 times + TMP_JAMP(611) = AMP(697) + AMP(700) ! used 16 times + TMP_JAMP(610) = AMP(698) + AMP(701) ! used 16 times + TMP_JAMP(609) = AMP(538) + AMP(541) ! used 16 times + TMP_JAMP(608) = AMP(893) + AMP(896) ! used 16 times + TMP_JAMP(607) = AMP(889) + AMP(894) ! used 16 times + TMP_JAMP(606) = AMP(878) + AMP(880) ! used 16 times + TMP_JAMP(605) = AMP(840) + AMP(843) ! used 16 times + TMP_JAMP(604) = AMP(839) + AMP(842) ! used 16 times + TMP_JAMP(603) = AMP(879) - AMP(882) ! used 16 times + TMP_JAMP(602) = AMP(857) + AMP(860) ! used 16 times + TMP_JAMP(601) = AMP(856) + AMP(859) ! used 16 times + TMP_JAMP(600) = AMP(873) + AMP(875) ! used 16 times + TMP_JAMP(599) = AMP(858) + AMP(861) ! used 16 times + TMP_JAMP(598) = AMP(874) - AMP(877) ! used 16 times + TMP_JAMP(597) = AMP(838) + AMP(841) ! used 16 times + TMP_JAMP(596) = AMP(872) - AMP(892) ! used 16 times + TMP_JAMP(595) = AMP(868) + AMP(870) ! used 16 times + TMP_JAMP(594) = AMP(869) + AMP(871) ! used 16 times + TMP_JAMP(680) = TMP_JAMP(638) + AMP(579) ! used 16 times + TMP_JAMP(679) = TMP_JAMP(637) - AMP(566) ! used 16 times + TMP_JAMP(678) = TMP_JAMP(636) + AMP(573) ! used 16 times + TMP_JAMP(677) = TMP_JAMP(635) - AMP(577) ! used 16 times + TMP_JAMP(676) = TMP_JAMP(634) + AMP(567) ! used 16 times + TMP_JAMP(675) = TMP_JAMP(633) - AMP(634) ! used 16 times + TMP_JAMP(674) = TMP_JAMP(632) + AMP(636) ! used 16 times + TMP_JAMP(673) = TMP_JAMP(631) + AMP(565) ! used 16 times + TMP_JAMP(672) = TMP_JAMP(630) + AMP(731) ! used 16 times + TMP_JAMP(671) = TMP_JAMP(629) - AMP(725) ! used 16 times + TMP_JAMP(670) = TMP_JAMP(628) + AMP(732) ! used 16 times + TMP_JAMP(669) = TMP_JAMP(627) + AMP(722) ! used 16 times + TMP_JAMP(668) = TMP_JAMP(626) + AMP(724) ! used 16 times + TMP_JAMP(667) = TMP_JAMP(625) - AMP(728) ! used 16 times + TMP_JAMP(666) = TMP_JAMP(624) + AMP(726) ! used 16 times + TMP_JAMP(665) = TMP_JAMP(623) + AMP(729) ! used 16 times + TMP_JAMP(664) = TMP_JAMP(622) + AMP(738) ! used 16 times + TMP_JAMP(663) = TMP_JAMP(621) - AMP(736) ! used 16 times + TMP_JAMP(662) = TMP_JAMP(620) - AMP(793) ! used 16 times + TMP_JAMP(661) = TMP_JAMP(619) + AMP(795) ! used 16 times + TMP_JAMP(660) = TMP_JAMP(618) + AMP(572) ! used 16 times + TMP_JAMP(659) = TMP_JAMP(617) + AMP(563) ! used 16 times + TMP_JAMP(658) = TMP_JAMP(616) - AMP(569) ! used 16 times + TMP_JAMP(657) = TMP_JAMP(615) + AMP(570) ! used 16 times + TMP_JAMP(656) = TMP_JAMP(614) + AMP(558) ! used 16 times + TMP_JAMP(655) = TMP_JAMP(613) + AMP(635) ! used 16 times + TMP_JAMP(654) = TMP_JAMP(612) + AMP(717) ! used 16 times + TMP_JAMP(653) = TMP_JAMP(611) + AMP(727) ! used 16 times + TMP_JAMP(652) = TMP_JAMP(610) + AMP(794) ! used 16 times + TMP_JAMP(651) = TMP_JAMP(609) + AMP(568) ! used 16 times + TMP_JAMP(650) = TMP_JAMP(607) + AMP(897) ! used 16 times + TMP_JAMP(649) = TMP_JAMP(606) + AMP(890) ! used 16 times + TMP_JAMP(648) = TMP_JAMP(605) + AMP(881) ! used 16 times + TMP_JAMP(647) = TMP_JAMP(603) - AMP(887) ! used 16 times + TMP_JAMP(646) = TMP_JAMP(601) + AMP(886) ! used 16 times + TMP_JAMP(645) = TMP_JAMP(600) + AMP(891) ! used 16 times + TMP_JAMP(644) = TMP_JAMP(599) + AMP(876) ! used 16 times + TMP_JAMP(643) = TMP_JAMP(598) - AMP(884) ! used 16 times + TMP_JAMP(642) = TMP_JAMP(597) + AMP(883) ! used 16 times + TMP_JAMP(641) = TMP_JAMP(596) - AMP(895) ! used 16 times + TMP_JAMP(640) = TMP_JAMP(595) + AMP(888) ! used 16 times + TMP_JAMP(639) = TMP_JAMP(594) + AMP(885) ! used 16 times + TMP_JAMP(835) = TMP_JAMP(680) - TMP_JAMP(678) ! used 8 times + TMP_JAMP(834) = TMP_JAMP(680) + TMP_JAMP(660) ! used 8 times + TMP_JAMP(833) = TMP_JAMP(680) + TMP_JAMP(675) ! used 8 times + TMP_JAMP(832) = TMP_JAMP(679) - TMP_JAMP(676) ! used 8 times + TMP_JAMP(831) = TMP_JAMP(679) + TMP_JAMP(678) ! used 8 times + TMP_JAMP(830) = TMP_JAMP(679) + TMP_JAMP(671) ! used 8 times + TMP_JAMP(829) = TMP_JAMP(679) - TMP_JAMP(673) ! used 8 times + TMP_JAMP(828) = TMP_JAMP(678) + TMP_JAMP(670) ! used 8 times + TMP_JAMP(827) = TMP_JAMP(678) + TMP_JAMP(660) ! used 8 times + TMP_JAMP(826) = TMP_JAMP(677) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(622) ! used 8 times + TMP_JAMP(825) = TMP_JAMP(677) + TMP_JAMP(676) ! used 8 times + TMP_JAMP(824) = TMP_JAMP(677) - TMP_JAMP(675) ! used 8 times + TMP_JAMP(823) = TMP_JAMP(677) - TMP_JAMP(657) ! used 8 times + TMP_JAMP(822) = TMP_JAMP(677) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(623) ! used 8 times + TMP_JAMP(821) = TMP_JAMP(676) - TMP_JAMP(673) ! used 8 times + TMP_JAMP(820) = TMP_JAMP(676) + TMP_JAMP(657) ! used 8 times + TMP_JAMP(819) = TMP_JAMP(675) + TMP_JAMP(674) ! used 8 times + TMP_JAMP(818) = TMP_JAMP(675) - TMP_JAMP(655) ! used 8 times + TMP_JAMP(817) = TMP_JAMP(674) + TMP_JAMP(673) ! used 8 times + TMP_JAMP(816) = TMP_JAMP(674) + TMP_JAMP(655) ! used 8 times + TMP_JAMP(815) = TMP_JAMP(672) + TMP_JAMP(670) ! used 8 times + TMP_JAMP(814) = TMP_JAMP(672) + TMP_JAMP(664) ! used 8 times + TMP_JAMP(813) = TMP_JAMP(672) + TMP_JAMP(667) ! used 8 times + TMP_JAMP(812) = TMP_JAMP(671) - TMP_JAMP(668) ! used 8 times + TMP_JAMP(811) = TMP_JAMP(671) + TMP_JAMP(670) ! used 8 times + TMP_JAMP(810) = TMP_JAMP(671) - TMP_JAMP(666) ! used 8 times + TMP_JAMP(809) = TMP_JAMP(670) - TMP_JAMP(664) ! used 8 times + TMP_JAMP(808) = TMP_JAMP(669) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(678) ! used 8 times - TMP_JAMP(917) = TMP_JAMP(369) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(756) ! used 8 times - TMP_JAMP(916) = TMP_JAMP(371) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(657) ! used 8 times - TMP_JAMP(915) = TMP_JAMP(371) - TMP_JAMP(369) ! used 8 times - TMP_JAMP(914) = TMP_JAMP(372) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1150) ! used 8 times - TMP_JAMP(913) = TMP_JAMP(373) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1062) ! used 8 times - TMP_JAMP(912) = TMP_JAMP(373) + TMP_JAMP(370) ! used 8 times - TMP_JAMP(911) = TMP_JAMP(386) + TMP_JAMP(369) ! used 8 times - TMP_JAMP(910) = TMP_JAMP(388) + TMP_JAMP(371) ! used 8 times - TMP_JAMP(909) = TMP_JAMP(398) - TMP_JAMP(277) ! used 8 times - TMP_JAMP(908) = TMP_JAMP(401) - TMP_JAMP(372) ! used 8 times - TMP_JAMP(907) = AMP(1462) - AMP(1466) ! used 8 times - TMP_JAMP(906) = AMP(771) + AMP(1580) ! used 8 times - TMP_JAMP(905) = AMP(768) - AMP(770) ! used 8 times - TMP_JAMP(904) = AMP(763) + AMP(771) ! used 8 times - TMP_JAMP(903) = AMP(751) + AMP(759) ! used 8 times - TMP_JAMP(902) = TMP_JAMP(366) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(763) ! used 8 times - TMP_JAMP(901) = TMP_JAMP(367) + TMP_JAMP(365) ! used 8 times - TMP_JAMP(900) = TMP_JAMP(368) + TMP_JAMP(365) ! used 8 times - TMP_JAMP(899) = TMP_JAMP(372) + TMP_JAMP(367) ! used 8 times - TMP_JAMP(898) = TMP_JAMP(374) + TMP_JAMP(364) ! used 8 times - TMP_JAMP(897) = TMP_JAMP(375) + TMP_JAMP(366) ! used 8 times - TMP_JAMP(896) = AMP(1225) + AMP(1591) ! used 8 times - TMP_JAMP(895) = AMP(430) - AMP(433) ! used 8 times - TMP_JAMP(894) = AMP(371) + AMP(432) ! used 8 times - TMP_JAMP(893) = AMP(359) - AMP(371) ! used 8 times - TMP_JAMP(892) = AMP(146) - AMP(1593) ! used 8 times - TMP_JAMP(891) = AMP(145) - AMP(158) ! used 8 times - TMP_JAMP(890) = TMP_JAMP(264) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(359) ! used 8 times - TMP_JAMP(889) = TMP_JAMP(362) + TMP_JAMP(360) ! used 8 times - TMP_JAMP(888) = TMP_JAMP(363) + TMP_JAMP(361) ! used 8 times - TMP_JAMP(887) = TMP_JAMP(374) + TMP_JAMP(314) ! used 8 times - TMP_JAMP(886) = TMP_JAMP(374) - TMP_JAMP(360) ! used 8 times - TMP_JAMP(885) = TMP_JAMP(376) - TMP_JAMP(362) ! used 8 times - TMP_JAMP(884) = TMP_JAMP(384) + TMP_JAMP(264) ! used 8 times - TMP_JAMP(883) = TMP_JAMP(397) + TMP_JAMP(361) ! used 8 times - TMP_JAMP(882) = TMP_JAMP(402) + TMP_JAMP(363) ! used 8 times - TMP_JAMP(881) = TMP_JAMP(403) - TMP_JAMP(383) ! used 8 times - TMP_JAMP(880) = TMP_JAMP(404) - TMP_JAMP(384) ! used 8 times - TMP_JAMP(879) = AMP(1057) - AMP(1073) ! used 8 times - TMP_JAMP(878) = AMP(1055) - AMP(1057) ! used 8 times - TMP_JAMP(877) = AMP(781) - AMP(1592) ! used 8 times - TMP_JAMP(876) = AMP(672) - AMP(1058) ! used 8 times - TMP_JAMP(875) = AMP(661) + AMP(672) ! used 8 times - TMP_JAMP(874) = TMP_JAMP(261) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(661) ! used 8 times - TMP_JAMP(873) = TMP_JAMP(358) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(781) ! used 8 times - TMP_JAMP(872) = TMP_JAMP(359) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1055) ! used 8 times - TMP_JAMP(871) = TMP_JAMP(360) + TMP_JAMP(358) ! used 8 times - TMP_JAMP(870) = TMP_JAMP(361) + TMP_JAMP(359) ! used 8 times - TMP_JAMP(869) = TMP_JAMP(364) - TMP_JAMP(358) ! used 8 times - TMP_JAMP(868) = TMP_JAMP(390) - TMP_JAMP(369) ! used 8 times - TMP_JAMP(867) = TMP_JAMP(391) + TMP_JAMP(359) ! used 8 times - TMP_JAMP(866) = TMP_JAMP(392) - TMP_JAMP(371) ! used 8 times - TMP_JAMP(865) = AMP(785) + AMP(790) ! used 8 times - TMP_JAMP(864) = AMP(676) - AMP(792) ! used 8 times - TMP_JAMP(863) = AMP(429) + AMP(431) ! used 8 times - TMP_JAMP(862) = AMP(340) - AMP(456) ! used 8 times - TMP_JAMP(861) = AMP(338) + AMP(340) ! used 8 times - TMP_JAMP(860) = TMP_JAMP(355) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(676) ! used 8 times - TMP_JAMP(859) = TMP_JAMP(355) - TMP_JAMP(354) ! used 8 times - TMP_JAMP(858) = TMP_JAMP(356) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(338) ! used 8 times - TMP_JAMP(857) = TMP_JAMP(357) + TMP_JAMP(354) ! used 8 times - TMP_JAMP(856) = TMP_JAMP(357) + TMP_JAMP(356) ! used 8 times - TMP_JAMP(855) = TMP_JAMP(362) - TMP_JAMP(358) ! used 8 times - TMP_JAMP(854) = TMP_JAMP(376) - TMP_JAMP(364) ! used 8 times - TMP_JAMP(853) = TMP_JAMP(399) + TMP_JAMP(277) ! used 8 times - TMP_JAMP(852) = TMP_JAMP(400) + TMP_JAMP(356) ! used 8 times - TMP_JAMP(851) = AMP(1473) + AMP(1474) ! used 8 times - TMP_JAMP(850) = AMP(1134) + AMP(1135) ! used 8 times - TMP_JAMP(849) = AMP(1129) + AMP(1137) ! used 8 times - TMP_JAMP(848) = AMP(123) - AMP(1476) ! used 8 times - TMP_JAMP(847) = AMP(120) + AMP(1527) ! used 8 times - TMP_JAMP(846) = AMP(118) + AMP(123) ! used 8 times - TMP_JAMP(845) = AMP(114) + AMP(120) ! used 8 times - TMP_JAMP(844) = TMP_JAMP(254) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(118) ! used 8 times - TMP_JAMP(843) = TMP_JAMP(350) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(114) ! used 8 times - TMP_JAMP(842) = TMP_JAMP(351) + TMP_JAMP(350) ! used 8 times - TMP_JAMP(841) = TMP_JAMP(353) + TMP_JAMP(352) ! used 8 times - TMP_JAMP(840) = TMP_JAMP(354) + TMP_JAMP(353) ! used 8 times - TMP_JAMP(839) = TMP_JAMP(355) - TMP_JAMP(352) ! used 8 times - TMP_JAMP(838) = TMP_JAMP(360) + TMP_JAMP(254) ! used 8 times - TMP_JAMP(837) = TMP_JAMP(394) + TMP_JAMP(350) ! used 8 times - TMP_JAMP(836) = TMP_JAMP(398) + TMP_JAMP(351) ! used 8 times - TMP_JAMP(835) = AMP(1228) + AMP(1720) ! used 8 times - TMP_JAMP(834) = AMP(1053) + AMP(1059) ! used 8 times - TMP_JAMP(833) = AMP(519) - AMP(1722) ! used 8 times - TMP_JAMP(832) = AMP(503) + AMP(1716) ! used 8 times - TMP_JAMP(831) = AMP(500) + AMP(503) ! used 8 times - TMP_JAMP(830) = TMP_JAMP(346) + ((0.000000000000000D+00 + TMP_JAMP(807) = TMP_JAMP(669) - TMP_JAMP(668) ! used 8 times + TMP_JAMP(806) = TMP_JAMP(669) - TMP_JAMP(667) ! used 8 times + TMP_JAMP(805) = TMP_JAMP(669) + TMP_JAMP(661) ! used 8 times + TMP_JAMP(804) = TMP_JAMP(669) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(677) ! used 8 times + TMP_JAMP(803) = TMP_JAMP(668) - TMP_JAMP(666) ! used 8 times + TMP_JAMP(802) = TMP_JAMP(668) + TMP_JAMP(661) ! used 8 times + TMP_JAMP(801) = TMP_JAMP(667) - TMP_JAMP(665) ! used 8 times + TMP_JAMP(800) = TMP_JAMP(667) + TMP_JAMP(647) ! used 8 times + TMP_JAMP(799) = TMP_JAMP(667) - TMP_JAMP(653) ! used 8 times + TMP_JAMP(798) = TMP_JAMP(666) + TMP_JAMP(665) ! used 8 times + TMP_JAMP(797) = TMP_JAMP(665) - TMP_JAMP(653) ! used 8 times + TMP_JAMP(796) = TMP_JAMP(664) + TMP_JAMP(662) ! used 8 times + TMP_JAMP(795) = TMP_JAMP(663) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(781) ! used 8 times + TMP_JAMP(794) = TMP_JAMP(663) - TMP_JAMP(662) ! used 8 times + TMP_JAMP(793) = TMP_JAMP(663) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(782) ! used 8 times + TMP_JAMP(792) = TMP_JAMP(662) + TMP_JAMP(661) ! used 8 times + TMP_JAMP(791) = TMP_JAMP(662) - TMP_JAMP(652) ! used 8 times + TMP_JAMP(790) = TMP_JAMP(661) + TMP_JAMP(652) ! used 8 times + TMP_JAMP(789) = TMP_JAMP(660) + TMP_JAMP(658) ! used 8 times + TMP_JAMP(788) = TMP_JAMP(659) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(519) ! used 8 times - TMP_JAMP(829) = TMP_JAMP(347) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(500) ! used 8 times - TMP_JAMP(828) = TMP_JAMP(347) + TMP_JAMP(346) ! used 8 times - TMP_JAMP(827) = TMP_JAMP(348) + TMP_JAMP(346) ! used 8 times - TMP_JAMP(826) = TMP_JAMP(349) - TMP_JAMP(261) ! used 8 times - TMP_JAMP(825) = TMP_JAMP(349) + TMP_JAMP(347) ! used 8 times - TMP_JAMP(824) = TMP_JAMP(349) + TMP_JAMP(348) ! used 8 times - TMP_JAMP(823) = TMP_JAMP(362) - TMP_JAMP(348) ! used 8 times - TMP_JAMP(822) = TMP_JAMP(386) + TMP_JAMP(292) ! used 8 times - TMP_JAMP(821) = TMP_JAMP(388) + TMP_JAMP(347) ! used 8 times - TMP_JAMP(820) = AMP(1471) - AMP(1475) ! used 8 times - TMP_JAMP(819) = AMP(612) + AMP(1526) ! used 8 times - TMP_JAMP(818) = AMP(609) - AMP(611) ! used 8 times - TMP_JAMP(817) = AMP(604) + AMP(612) ! used 8 times - TMP_JAMP(816) = TMP_JAMP(344) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(604) ! used 8 times - TMP_JAMP(815) = TMP_JAMP(345) + TMP_JAMP(343) ! used 8 times - TMP_JAMP(814) = TMP_JAMP(346) + TMP_JAMP(343) ! used 8 times - TMP_JAMP(813) = TMP_JAMP(348) + TMP_JAMP(345) ! used 8 times - TMP_JAMP(812) = TMP_JAMP(350) + TMP_JAMP(344) ! used 8 times - TMP_JAMP(811) = TMP_JAMP(387) + TMP_JAMP(344) ! used 8 times - TMP_JAMP(810) = AMP(1305) + AMP(1669) ! used 8 times - TMP_JAMP(809) = AMP(536) - AMP(1671) ! used 8 times - TMP_JAMP(808) = AMP(535) - AMP(632) ! used 8 times - TMP_JAMP(807) = AMP(389) + AMP(423) ! used 8 times - TMP_JAMP(806) = AMP(377) - AMP(389) ! used 8 times - TMP_JAMP(805) = AMP(374) + AMP(376) ! used 8 times - TMP_JAMP(804) = TMP_JAMP(240) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(377) ! used 8 times - TMP_JAMP(803) = TMP_JAMP(341) - TMP_JAMP(340) ! used 8 times - TMP_JAMP(802) = TMP_JAMP(342) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1305) ! used 8 times - TMP_JAMP(801) = TMP_JAMP(342) + TMP_JAMP(339) ! used 8 times - TMP_JAMP(800) = TMP_JAMP(381) + TMP_JAMP(340) ! used 8 times - TMP_JAMP(799) = TMP_JAMP(382) + TMP_JAMP(341) ! used 8 times - TMP_JAMP(798) = TMP_JAMP(386) + TMP_JAMP(339) ! used 8 times - TMP_JAMP(797) = TMP_JAMP(390) + TMP_JAMP(342) ! used 8 times - TMP_JAMP(796) = TMP_JAMP(403) - TMP_JAMP(390) ! used 8 times - TMP_JAMP(795) = TMP_JAMP(404) + TMP_JAMP(240) ! used 8 times - TMP_JAMP(794) = AMP(1291) - AMP(1886) ! used 8 times - TMP_JAMP(793) = AMP(1290) + AMP(1291) ! used 8 times - TMP_JAMP(792) = AMP(769) - AMP(1292) ! used 8 times - TMP_JAMP(791) = AMP(706) + AMP(769) ! used 8 times - TMP_JAMP(790) = AMP(695) - AMP(1670) ! used 8 times - TMP_JAMP(789) = TMP_JAMP(237) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(706) ! used 8 times - TMP_JAMP(788) = TMP_JAMP(338) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1290) ! used 8 times - TMP_JAMP(787) = TMP_JAMP(339) + TMP_JAMP(337) ! used 8 times - TMP_JAMP(786) = TMP_JAMP(340) - TMP_JAMP(338) ! used 8 times - TMP_JAMP(785) = TMP_JAMP(369) + TMP_JAMP(337) ! used 8 times - TMP_JAMP(784) = TMP_JAMP(377) - TMP_JAMP(366) ! used 8 times - TMP_JAMP(783) = TMP_JAMP(378) + TMP_JAMP(338) ! used 8 times - TMP_JAMP(782) = AMP(694) - AMP(791) ! used 8 times - TMP_JAMP(781) = AMP(373) + AMP(375) ! used 8 times - TMP_JAMP(780) = TMP_JAMP(342) - TMP_JAMP(337) ! used 8 times - TMP_JAMP(779) = TMP_JAMP(355) + TMP_JAMP(335) ! used 8 times - TMP_JAMP(778) = TMP_JAMP(356) + TMP_JAMP(336) ! used 8 times - TMP_JAMP(777) = AMP(1300) - AMP(1859) ! used 8 times - TMP_JAMP(776) = AMP(1299) + AMP(1300) ! used 8 times - TMP_JAMP(775) = AMP(610) - AMP(1301) ! used 8 times - TMP_JAMP(774) = AMP(547) + AMP(610) ! used 8 times - TMP_JAMP(773) = TMP_JAMP(233) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(547) ! used 8 times - TMP_JAMP(772) = TMP_JAMP(334) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1299) ! used 8 times - TMP_JAMP(771) = TMP_JAMP(335) - TMP_JAMP(334) ! used 8 times - TMP_JAMP(770) = TMP_JAMP(339) - TMP_JAMP(233) ! used 8 times - TMP_JAMP(769) = TMP_JAMP(344) - TMP_JAMP(233) ! used 8 times - TMP_JAMP(768) = TMP_JAMP(351) - TMP_JAMP(344) ! used 8 times - TMP_JAMP(767) = TMP_JAMP(352) + TMP_JAMP(334) ! used 8 times - TMP_JAMP(766) = AMP(1304) + AMP(1642) ! used 8 times - TMP_JAMP(765) = AMP(1285) + AMP(1293) ! used 8 times - TMP_JAMP(764) = AMP(141) - AMP(1644) ! used 8 times - TMP_JAMP(763) = AMP(107) + AMP(1635) ! used 8 times - TMP_JAMP(762) = AMP(104) + AMP(107) ! used 8 times - TMP_JAMP(761) = TMP_JAMP(330) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(104) ! used 8 times - TMP_JAMP(760) = TMP_JAMP(331) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(141) ! used 8 times - TMP_JAMP(759) = TMP_JAMP(331) + TMP_JAMP(314) ! used 8 times - TMP_JAMP(758) = TMP_JAMP(332) - TMP_JAMP(237) ! used 8 times - TMP_JAMP(757) = TMP_JAMP(333) + TMP_JAMP(332) ! used 8 times - TMP_JAMP(756) = TMP_JAMP(342) - TMP_JAMP(333) ! used 8 times - TMP_JAMP(755) = TMP_JAMP(375) + TMP_JAMP(330) ! used 8 times - TMP_JAMP(754) = AMP(1302) - AMP(1639) ! used 8 times - TMP_JAMP(753) = AMP(1294) + AMP(1302) ! used 8 times - TMP_JAMP(752) = AMP(116) + AMP(119) ! used 8 times - TMP_JAMP(751) = TMP_JAMP(329) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1294) ! used 8 times - TMP_JAMP(750) = TMP_JAMP(329) - TMP_JAMP(233) ! used 8 times - TMP_JAMP(749) = TMP_JAMP(333) - TMP_JAMP(329) ! used 8 times - TMP_JAMP(748) = TMP_JAMP(350) + TMP_JAMP(328) ! used 8 times - TMP_JAMP(747) = AMP(942) + AMP(946) ! used 8 times - TMP_JAMP(746) = AMP(837) - AMP(1775) ! used 8 times - TMP_JAMP(745) = AMP(833) - AMP(948) ! used 8 times - TMP_JAMP(744) = AMP(831) - AMP(1049) ! used 8 times - TMP_JAMP(743) = AMP(821) + AMP(1769) ! used 8 times - TMP_JAMP(742) = AMP(820) + AMP(831) ! used 8 times - TMP_JAMP(741) = AMP(818) + AMP(821) ! used 8 times - TMP_JAMP(740) = TMP_JAMP(223) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(820) ! used 8 times - TMP_JAMP(739) = TMP_JAMP(325) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(818) ! used 8 times - TMP_JAMP(738) = TMP_JAMP(325) + TMP_JAMP(324) ! used 8 times - TMP_JAMP(737) = TMP_JAMP(327) - TMP_JAMP(326) ! used 8 times - TMP_JAMP(736) = TMP_JAMP(368) + TMP_JAMP(324) ! used 8 times - TMP_JAMP(735) = TMP_JAMP(370) + TMP_JAMP(325) ! used 8 times - TMP_JAMP(734) = TMP_JAMP(392) - TMP_JAMP(223) ! used 8 times - TMP_JAMP(733) = TMP_JAMP(399) - TMP_JAMP(327) ! used 8 times - TMP_JAMP(732) = TMP_JAMP(403) + TMP_JAMP(326) ! used 8 times - TMP_JAMP(731) = AMP(929) + AMP(1805) ! used 8 times - TMP_JAMP(730) = AMP(928) - AMP(1214) ! used 8 times - TMP_JAMP(729) = AMP(927) - AMP(929) ! used 8 times - TMP_JAMP(728) = AMP(865) + AMP(928) ! used 8 times - TMP_JAMP(727) = AMP(851) - AMP(947) ! used 8 times - TMP_JAMP(726) = TMP_JAMP(220) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(865) ! used 8 times - TMP_JAMP(725) = TMP_JAMP(322) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(927) ! used 8 times - TMP_JAMP(724) = TMP_JAMP(324) + TMP_JAMP(322) ! used 8 times - TMP_JAMP(723) = TMP_JAMP(327) + TMP_JAMP(323) ! used 8 times - TMP_JAMP(722) = TMP_JAMP(365) + TMP_JAMP(322) ! used 8 times - TMP_JAMP(721) = TMP_JAMP(377) - TMP_JAMP(220) ! used 8 times - TMP_JAMP(720) = TMP_JAMP(383) - TMP_JAMP(323) ! used 8 times - TMP_JAMP(719) = AMP(855) - AMP(1721) ! used 8 times - TMP_JAMP(718) = AMP(816) + AMP(822) ! used 8 times - TMP_JAMP(717) = TMP_JAMP(326) + TMP_JAMP(323) ! used 8 times - TMP_JAMP(716) = TMP_JAMP(346) + TMP_JAMP(320) ! used 8 times - TMP_JAMP(715) = TMP_JAMP(347) + TMP_JAMP(321) ! used 8 times - TMP_JAMP(714) = AMP(938) + AMP(1751) ! used 8 times - TMP_JAMP(713) = AMP(936) - AMP(938) ! used 8 times - TMP_JAMP(712) = AMP(847) + AMP(937) ! used 8 times - TMP_JAMP(711) = TMP_JAMP(319) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(936) ! used 8 times - TMP_JAMP(710) = TMP_JAMP(320) + TMP_JAMP(319) ! used 8 times - TMP_JAMP(709) = TMP_JAMP(343) + TMP_JAMP(319) ! used 8 times - TMP_JAMP(708) = TMP_JAMP(351) - TMP_JAMP(215) ! used 8 times - TMP_JAMP(707) = AMP(941) - AMP(1643) ! used 8 times - TMP_JAMP(706) = AMP(930) + AMP(1634) ! used 8 times - TMP_JAMP(705) = AMP(922) + AMP(930) ! used 8 times - TMP_JAMP(704) = TMP_JAMP(317) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(922) ! used 8 times - TMP_JAMP(703) = TMP_JAMP(330) + TMP_JAMP(317) ! used 8 times - TMP_JAMP(702) = TMP_JAMP(331) + TMP_JAMP(318) ! used 8 times - TMP_JAMP(701) = AMP(939) + AMP(1640) ! used 8 times - TMP_JAMP(700) = AMP(931) + AMP(939) ! used 8 times - TMP_JAMP(699) = TMP_JAMP(316) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(931) ! used 8 times - TMP_JAMP(698) = TMP_JAMP(318) - TMP_JAMP(316) ! used 8 times - TMP_JAMP(697) = TMP_JAMP(328) + TMP_JAMP(316) ! used 8 times - TMP_JAMP(696) = AMP(1435) + AMP(1852) ! used 8 times - TMP_JAMP(695) = AMP(1434) + AMP(1435) ! used 8 times - TMP_JAMP(694) = AMP(1113) - AMP(1507) ! used 8 times - TMP_JAMP(693) = AMP(1111) - AMP(1854) ! used 8 times - TMP_JAMP(692) = AMP(1110) + AMP(1111) ! used 8 times - TMP_JAMP(691) = AMP(1105) + AMP(1113) ! used 8 times - TMP_JAMP(690) = AMP(81) - AMP(1437) ! used 8 times - TMP_JAMP(689) = AMP(72) + AMP(1509) ! used 8 times - TMP_JAMP(688) = AMP(70) + AMP(81) ! used 8 times - TMP_JAMP(687) = AMP(66) + AMP(72) ! used 8 times - TMP_JAMP(686) = TMP_JAMP(254) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(70) ! used 8 times - TMP_JAMP(685) = TMP_JAMP(350) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(66) ! used 8 times - TMP_JAMP(684) = TMP_JAMP(351) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1105) ! used 8 times - TMP_JAMP(683) = TMP_JAMP(352) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1110) ! used 8 times - TMP_JAMP(682) = TMP_JAMP(353) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1434) ! used 8 times - TMP_JAMP(681) = TMP_JAMP(356) - TMP_JAMP(352) ! used 8 times - TMP_JAMP(680) = TMP_JAMP(357) - TMP_JAMP(353) ! used 8 times - TMP_JAMP(679) = TMP_JAMP(395) + TMP_JAMP(350) ! used 8 times - TMP_JAMP(678) = TMP_JAMP(396) + TMP_JAMP(361) ! used 8 times - TMP_JAMP(677) = TMP_JAMP(401) + TMP_JAMP(351) ! used 8 times - TMP_JAMP(676) = TMP_JAMP(405) - TMP_JAMP(363) ! used 8 times - TMP_JAMP(675) = AMP(1436) - AMP(1744) ! used 8 times - TMP_JAMP(674) = AMP(1432) - AMP(1436) ! used 8 times - TMP_JAMP(673) = AMP(588) + AMP(1508) ! used 8 times - TMP_JAMP(672) = AMP(587) + AMP(1746) ! used 8 times - TMP_JAMP(671) = AMP(585) - AMP(587) ! used 8 times - TMP_JAMP(670) = AMP(580) + AMP(588) ! used 8 times - TMP_JAMP(669) = TMP_JAMP(343) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(585) ! used 8 times - TMP_JAMP(668) = TMP_JAMP(344) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(580) ! used 8 times - TMP_JAMP(667) = TMP_JAMP(345) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1432) ! used 8 times - TMP_JAMP(666) = TMP_JAMP(347) - TMP_JAMP(343) ! used 8 times - TMP_JAMP(665) = TMP_JAMP(349) - TMP_JAMP(345) ! used 8 times - TMP_JAMP(664) = TMP_JAMP(389) + TMP_JAMP(344) ! used 8 times - TMP_JAMP(663) = TMP_JAMP(393) - TMP_JAMP(359) ! used 8 times - TMP_JAMP(662) = AMP(1279) - AMP(1853) ! used 8 times - TMP_JAMP(661) = AMP(1278) + AMP(1279) ! used 8 times - TMP_JAMP(660) = AMP(586) - AMP(1280) ! used 8 times - TMP_JAMP(659) = AMP(544) + AMP(586) ! used 8 times - TMP_JAMP(658) = TMP_JAMP(233) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(544) ! used 8 times - TMP_JAMP(657) = TMP_JAMP(334) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1278) ! used 8 times - TMP_JAMP(656) = TMP_JAMP(336) - TMP_JAMP(334) ! used 8 times - TMP_JAMP(655) = TMP_JAMP(380) + TMP_JAMP(340) ! used 8 times - TMP_JAMP(654) = TMP_JAMP(385) - TMP_JAMP(341) ! used 8 times - TMP_JAMP(653) = AMP(1281) - AMP(1624) ! used 8 times - TMP_JAMP(652) = AMP(1273) + AMP(1281) ! used 8 times - TMP_JAMP(651) = AMP(71) + AMP(1626) ! used 8 times - TMP_JAMP(650) = AMP(68) + AMP(71) ! used 8 times - TMP_JAMP(649) = TMP_JAMP(328) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(68) ! used 8 times - TMP_JAMP(648) = TMP_JAMP(329) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1273) ! used 8 times - TMP_JAMP(647) = TMP_JAMP(330) + TMP_JAMP(283) ! used 8 times - TMP_JAMP(646) = TMP_JAMP(330) + TMP_JAMP(328) ! used 8 times - TMP_JAMP(645) = TMP_JAMP(332) + TMP_JAMP(329) ! used 8 times - TMP_JAMP(644) = TMP_JAMP(379) - TMP_JAMP(338) ! used 8 times - TMP_JAMP(643) = AMP(917) + AMP(1745) ! used 8 times - TMP_JAMP(642) = AMP(916) - AMP(1112) ! used 8 times - TMP_JAMP(641) = AMP(915) - AMP(917) ! used 8 times - TMP_JAMP(640) = AMP(844) + AMP(916) ! used 8 times - TMP_JAMP(639) = TMP_JAMP(215) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(844) ! used 8 times - TMP_JAMP(638) = TMP_JAMP(319) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(915) ! used 8 times - TMP_JAMP(637) = TMP_JAMP(321) - TMP_JAMP(319) ! used 8 times - TMP_JAMP(636) = TMP_JAMP(372) - TMP_JAMP(324) ! used 8 times - TMP_JAMP(635) = TMP_JAMP(373) - TMP_JAMP(325) ! used 8 times - TMP_JAMP(634) = AMP(918) + AMP(1625) ! used 8 times - TMP_JAMP(633) = AMP(910) + AMP(918) ! used 8 times - TMP_JAMP(632) = TMP_JAMP(316) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(910) ! used 8 times - TMP_JAMP(631) = TMP_JAMP(317) + TMP_JAMP(316) ! used 8 times - TMP_JAMP(630) = TMP_JAMP(367) - TMP_JAMP(322) ! used 8 times - TMP_JAMP(629) = AMP(1303) + AMP(1645) ! used 8 times - TMP_JAMP(628) = AMP(140) - AMP(1647) ! used 8 times - TMP_JAMP(627) = TMP_JAMP(328) + TMP_JAMP(254) ! used 8 times - TMP_JAMP(626) = TMP_JAMP(331) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(140) ! used 8 times - TMP_JAMP(625) = TMP_JAMP(333) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1303) ! used 8 times - TMP_JAMP(624) = TMP_JAMP(353) - TMP_JAMP(334) ! used 8 times - TMP_JAMP(623) = TMP_JAMP(357) - TMP_JAMP(336) ! used 8 times - TMP_JAMP(622) = TMP_JAMP(397) + TMP_JAMP(331) ! used 8 times - TMP_JAMP(621) = TMP_JAMP(402) + TMP_JAMP(240) ! used 8 times - TMP_JAMP(620) = AMP(940) - AMP(1646) ! used 8 times - TMP_JAMP(619) = TMP_JAMP(318) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(940) ! used 8 times - TMP_JAMP(618) = TMP_JAMP(345) - TMP_JAMP(319) ! used 8 times - TMP_JAMP(617) = TMP_JAMP(349) - TMP_JAMP(321) ! used 8 times - TMP_JAMP(616) = TMP_JAMP(391) - TMP_JAMP(223) ! used 8 times - TMP_JAMP(615) = AMP(944) + AMP(949) ! used 8 times - TMP_JAMP(614) = AMP(835) - AMP(951) ! used 8 times - TMP_JAMP(613) = TMP_JAMP(326) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(944) ! used 8 times - TMP_JAMP(612) = TMP_JAMP(327) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(835) ! used 8 times - TMP_JAMP(611) = TMP_JAMP(329) - TMP_JAMP(316) ! used 8 times - TMP_JAMP(610) = TMP_JAMP(333) - TMP_JAMP(318) ! used 8 times - TMP_JAMP(609) = TMP_JAMP(352) + TMP_JAMP(215) ! used 8 times - TMP_JAMP(608) = TMP_JAMP(400) - TMP_JAMP(327) ! used 8 times - TMP_JAMP(607) = TMP_JAMP(404) + TMP_JAMP(326) ! used 8 times - TMP_JAMP(606) = AMP(1483) + AMP(1831) ! used 8 times - TMP_JAMP(605) = AMP(1146) - AMP(1531) ! used 8 times - TMP_JAMP(604) = AMP(1144) - AMP(1833) ! used 8 times - TMP_JAMP(603) = AMP(135) - AMP(1485) ! used 8 times - TMP_JAMP(602) = AMP(132) + AMP(1533) ! used 8 times - TMP_JAMP(601) = TMP_JAMP(314) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(130) ! used 8 times - TMP_JAMP(600) = TMP_JAMP(394) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(126) ! used 8 times - TMP_JAMP(599) = TMP_JAMP(398) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1138) ! used 8 times - TMP_JAMP(598) = TMP_JAMP(399) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1143) ! used 8 times - TMP_JAMP(597) = TMP_JAMP(403) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1482) ! used 8 times - TMP_JAMP(596) = AMP(1306) + AMP(1666) ! used 8 times - TMP_JAMP(595) = AMP(537) - AMP(1668) ! used 8 times - TMP_JAMP(594) = TMP_JAMP(339) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(537) ! used 8 times - TMP_JAMP(593) = TMP_JAMP(342) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1306) ! used 8 times - TMP_JAMP(592) = TMP_JAMP(343) + TMP_JAMP(233) ! used 8 times - TMP_JAMP(591) = TMP_JAMP(388) + TMP_JAMP(339) ! used 8 times - TMP_JAMP(590) = TMP_JAMP(392) + TMP_JAMP(342) ! used 8 times - TMP_JAMP(589) = AMP(1484) - AMP(1696) ! used 8 times - TMP_JAMP(588) = AMP(621) + AMP(1532) ! used 8 times - TMP_JAMP(587) = AMP(620) + AMP(1698) ! used 8 times - TMP_JAMP(586) = TMP_JAMP(386) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(618) ! used 8 times - TMP_JAMP(585) = TMP_JAMP(387) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(613) ! used 8 times - TMP_JAMP(584) = TMP_JAMP(390) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1480) ! used 8 times - TMP_JAMP(583) = AMP(1227) + AMP(1723) ! used 8 times - TMP_JAMP(582) = AMP(518) - AMP(1725) ! used 8 times - TMP_JAMP(581) = TMP_JAMP(346) + ((-0.000000000000000D+00, + TMP_JAMP(787) = TMP_JAMP(659) - TMP_JAMP(658) ! used 8 times + TMP_JAMP(786) = TMP_JAMP(659) + ((-0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(518) ! used 8 times - TMP_JAMP(580) = TMP_JAMP(348) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1227) ! used 8 times - TMP_JAMP(579) = TMP_JAMP(353) - TMP_JAMP(345) ! used 8 times - TMP_JAMP(578) = TMP_JAMP(381) + TMP_JAMP(346) ! used 8 times - TMP_JAMP(577) = TMP_JAMP(382) - TMP_JAMP(264) ! used 8 times - TMP_JAMP(576) = AMP(854) - AMP(1724) ! used 8 times - TMP_JAMP(575) = TMP_JAMP(320) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(854) ! used 8 times - TMP_JAMP(574) = TMP_JAMP(332) - TMP_JAMP(317) ! used 8 times - TMP_JAMP(573) = TMP_JAMP(378) + TMP_JAMP(220) ! used 8 times - TMP_JAMP(572) = AMP(853) - AMP(950) ! used 8 times - TMP_JAMP(571) = TMP_JAMP(323) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(853) ! used 8 times - TMP_JAMP(570) = TMP_JAMP(348) - TMP_JAMP(320) ! used 8 times - TMP_JAMP(569) = TMP_JAMP(384) - TMP_JAMP(323) ! used 8 times - TMP_JAMP(568) = AMP(1222) - AMP(1832) ! used 8 times - TMP_JAMP(567) = AMP(619) - AMP(1223) ! used 8 times - TMP_JAMP(566) = TMP_JAMP(292) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(529) ! used 8 times - TMP_JAMP(565) = TMP_JAMP(383) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1221) ! used 8 times - TMP_JAMP(564) = AMP(1226) + AMP(1588) ! used 8 times - TMP_JAMP(563) = AMP(147) - AMP(1590) ! used 8 times - TMP_JAMP(562) = TMP_JAMP(360) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(147) ! used 8 times - TMP_JAMP(561) = TMP_JAMP(362) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1226) ! used 8 times - TMP_JAMP(560) = TMP_JAMP(375) + TMP_JAMP(360) ! used 8 times - TMP_JAMP(559) = TMP_JAMP(377) + TMP_JAMP(362) ! used 8 times - TMP_JAMP(558) = AMP(1224) - AMP(1585) ! used 8 times - TMP_JAMP(557) = AMP(131) + AMP(1587) ! used 8 times - TMP_JAMP(556) = TMP_JAMP(374) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(128) ! used 8 times - TMP_JAMP(555) = TMP_JAMP(376) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1216) ! used 8 times - TMP_JAMP(554) = AMP(783) + AMP(787) ! used 8 times - TMP_JAMP(553) = AMP(674) - AMP(789) ! used 8 times - TMP_JAMP(552) = TMP_JAMP(354) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(783) ! used 8 times - TMP_JAMP(551) = TMP_JAMP(355) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(674) ! used 8 times - TMP_JAMP(550) = TMP_JAMP(368) + TMP_JAMP(355) ! used 8 times - TMP_JAMP(549) = TMP_JAMP(370) + TMP_JAMP(261) ! used 8 times - TMP_JAMP(548) = AMP(692) - AMP(788) ! used 8 times - TMP_JAMP(547) = TMP_JAMP(335) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(692) ! used 8 times - TMP_JAMP(546) = TMP_JAMP(365) + TMP_JAMP(237) ! used 8 times - TMP_JAMP(545) = AMP(696) - AMP(1667) ! used 8 times - TMP_JAMP(544) = TMP_JAMP(337) + ((-0.000000000000000D+00 + TMP_JAMP(785) = TMP_JAMP(658) - TMP_JAMP(657) ! used 8 times + TMP_JAMP(784) = TMP_JAMP(658) + TMP_JAMP(643) ! used 8 times + TMP_JAMP(783) = TMP_JAMP(658) - TMP_JAMP(651) ! used 8 times + TMP_JAMP(782) = TMP_JAMP(657) - TMP_JAMP(651) ! used 8 times + TMP_JAMP(781) = TMP_JAMP(656) + TMP_JAMP(655) ! used 8 times + TMP_JAMP(780) = TMP_JAMP(656) - TMP_JAMP(651) ! used 8 times + TMP_JAMP(779) = TMP_JAMP(656) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(537) ! used 8 times + TMP_JAMP(778) = TMP_JAMP(655) + TMP_JAMP(651) ! used 8 times + TMP_JAMP(777) = TMP_JAMP(654) - TMP_JAMP(653) ! used 8 times + TMP_JAMP(776) = TMP_JAMP(654) + TMP_JAMP(652) ! used 8 times + TMP_JAMP(775) = TMP_JAMP(654) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(696) ! used 8 times - TMP_JAMP(543) = TMP_JAMP(354) + TMP_JAMP(335) ! used 8 times - TMP_JAMP(542) = TMP_JAMP(371) + TMP_JAMP(337) ! used 8 times - TMP_JAMP(541) = AMP(779) + AMP(1697) ! used 8 times - TMP_JAMP(540) = AMP(778) - AMP(1145) ! used 8 times - TMP_JAMP(539) = TMP_JAMP(277) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(688) ! used 8 times - TMP_JAMP(538) = TMP_JAMP(369) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(777) ! used 8 times - TMP_JAMP(537) = AMP(782) - AMP(1589) ! used 8 times - TMP_JAMP(536) = TMP_JAMP(358) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(782) ! used 8 times - TMP_JAMP(535) = TMP_JAMP(366) + TMP_JAMP(358) ! used 8 times - TMP_JAMP(534) = AMP(780) + AMP(1586) ! used 8 times - TMP_JAMP(533) = TMP_JAMP(364) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(772) ! used 8 times - TMP_JAMP(532) = AMP(1414) + AMP(1879) ! used 8 times - TMP_JAMP(531) = AMP(1413) + AMP(1414) ! used 8 times - TMP_JAMP(530) = AMP(1191) - AMP(1561) ! used 8 times - TMP_JAMP(529) = AMP(1189) - AMP(1881) ! used 8 times - TMP_JAMP(528) = AMP(1188) + AMP(1189) ! used 8 times - TMP_JAMP(527) = AMP(63) - AMP(1416) ! used 8 times - TMP_JAMP(526) = AMP(54) + AMP(1563) ! used 8 times - TMP_JAMP(525) = AMP(52) + AMP(63) ! used 8 times - TMP_JAMP(524) = TMP_JAMP(283) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(52) ! used 8 times - TMP_JAMP(523) = TMP_JAMP(375) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(48) ! used 8 times - TMP_JAMP(522) = TMP_JAMP(377) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1183) ! used 8 times - TMP_JAMP(521) = TMP_JAMP(378) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1188) ! used 8 times - TMP_JAMP(520) = TMP_JAMP(379) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1413) ! used 8 times - TMP_JAMP(519) = TMP_JAMP(382) - TMP_JAMP(378) ! used 8 times - TMP_JAMP(518) = TMP_JAMP(396) - TMP_JAMP(283) ! used 8 times - TMP_JAMP(517) = TMP_JAMP(405) + TMP_JAMP(385) ! used 8 times - TMP_JAMP(516) = AMP(1415) - AMP(1798) ! used 8 times - TMP_JAMP(515) = AMP(1411) - AMP(1415) ! used 8 times - TMP_JAMP(514) = AMP(747) + AMP(1562) ! used 8 times - TMP_JAMP(513) = AMP(746) + AMP(1800) ! used 8 times - TMP_JAMP(512) = AMP(744) - AMP(746) ! used 8 times - TMP_JAMP(511) = TMP_JAMP(365) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(744) ! used 8 times - TMP_JAMP(510) = TMP_JAMP(366) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(739) ! used 8 times - TMP_JAMP(509) = TMP_JAMP(367) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1411) ! used 8 times - TMP_JAMP(508) = TMP_JAMP(370) - TMP_JAMP(365) ! used 8 times - TMP_JAMP(507) = TMP_JAMP(393) + TMP_JAMP(373) ! used 8 times - TMP_JAMP(506) = AMP(1267) - AMP(1880) ! used 8 times - TMP_JAMP(505) = AMP(1266) + AMP(1267) ! used 8 times - TMP_JAMP(504) = AMP(745) - AMP(1268) ! used 8 times - TMP_JAMP(503) = TMP_JAMP(237) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(703) ! used 8 times - TMP_JAMP(502) = TMP_JAMP(338) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1266) ! used 8 times - TMP_JAMP(501) = TMP_JAMP(341) - TMP_JAMP(338) ! used 8 times - TMP_JAMP(500) = AMP(1269) - AMP(1615) ! used 8 times - TMP_JAMP(499) = AMP(53) + AMP(1617) ! used 8 times - TMP_JAMP(498) = TMP_JAMP(330) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(50) ! used 8 times - TMP_JAMP(497) = TMP_JAMP(332) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1261) ! used 8 times - TMP_JAMP(496) = AMP(905) + AMP(1799) ! used 8 times - TMP_JAMP(495) = AMP(904) - AMP(1190) ! used 8 times - TMP_JAMP(494) = AMP(903) - AMP(905) ! used 8 times - TMP_JAMP(493) = TMP_JAMP(220) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(862) ! used 8 times - TMP_JAMP(492) = TMP_JAMP(322) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(903) ! used 8 times - TMP_JAMP(491) = TMP_JAMP(325) - TMP_JAMP(322) ! used 8 times - TMP_JAMP(490) = AMP(906) + AMP(1616) ! used 8 times - TMP_JAMP(489) = TMP_JAMP(317) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(898) ! used 8 times - TMP_JAMP(488) = AMP(1149) + AMP(1777) ! used 8 times - TMP_JAMP(487) = TMP_JAMP(368) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(677) ! used 8 times - TMP_JAMP(486) = TMP_JAMP(372) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1149) ! used 8 times - TMP_JAMP(485) = TMP_JAMP(372) + TMP_JAMP(306) ! used 8 times - TMP_JAMP(484) = TMP_JAMP(379) - TMP_JAMP(367) ! used 8 times - TMP_JAMP(483) = TMP_JAMP(324) + ((0.000000000000000D+00, + TMP_JAMP(774) = TMP_JAMP(653) + TMP_JAMP(652) ! used 8 times + TMP_JAMP(773) = TMP_JAMP(650) + TMP_JAMP(649) ! used 8 times + TMP_JAMP(772) = TMP_JAMP(650) - TMP_JAMP(645) ! used 8 times + TMP_JAMP(771) = TMP_JAMP(649) + TMP_JAMP(645) ! used 8 times + TMP_JAMP(770) = TMP_JAMP(649) + TMP_JAMP(647) ! used 8 times + TMP_JAMP(769) = TMP_JAMP(648) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(837) ! used 8 times + TMP_JAMP(768) = TMP_JAMP(648) - TMP_JAMP(642) ! used 8 times + TMP_JAMP(767) = TMP_JAMP(648) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(836) ! used 8 times - TMP_JAMP(482) = TMP_JAMP(395) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(153) ! used 8 times - TMP_JAMP(481) = TMP_JAMP(401) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1148) ! used 8 times - TMP_JAMP(480) = AMP(624) + AMP(628) ! used 8 times - TMP_JAMP(479) = TMP_JAMP(380) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(624) ! used 8 times - TMP_JAMP(478) = TMP_JAMP(380) - TMP_JAMP(297) ! used 8 times - TMP_JAMP(477) = TMP_JAMP(381) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(515) ! used 8 times - TMP_JAMP(476) = TMP_JAMP(340) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(533) ! used 8 times - TMP_JAMP(475) = TMP_JAMP(389) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(623) ! used 8 times - TMP_JAMP(474) = AMP(1006) + AMP(1012) ! used 8 times - TMP_JAMP(473) = AMP(1004) - AMP(1006) ! used 8 times - TMP_JAMP(472) = AMP(990) - AMP(1651) ! used 8 times - TMP_JAMP(471) = AMP(988) - AMP(1014) ! used 8 times - TMP_JAMP(470) = AMP(986) - AMP(988) ! used 8 times - TMP_JAMP(469) = AMP(495) - AMP(1008) ! used 8 times - TMP_JAMP(468) = AMP(486) + AMP(1653) ! used 8 times - TMP_JAMP(467) = TMP_JAMP(297) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(484) ! used 8 times - TMP_JAMP(466) = TMP_JAMP(388) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(480) ! used 8 times - TMP_JAMP(465) = TMP_JAMP(391) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(986) ! used 8 times - TMP_JAMP(464) = TMP_JAMP(392) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(984) ! used 8 times - TMP_JAMP(463) = TMP_JAMP(393) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1004) ! used 8 times - TMP_JAMP(462) = TMP_JAMP(402) - TMP_JAMP(391) ! used 8 times - TMP_JAMP(461) = TMP_JAMP(405) - TMP_JAMP(393) ! used 8 times - TMP_JAMP(460) = AMP(1007) - AMP(1759) ! used 8 times - TMP_JAMP(459) = AMP(645) + AMP(1652) ! used 8 times - TMP_JAMP(458) = AMP(644) + AMP(1761) ! used 8 times - TMP_JAMP(457) = TMP_JAMP(370) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(641) ! used 8 times - TMP_JAMP(456) = TMP_JAMP(371) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(639) ! used 8 times - TMP_JAMP(455) = TMP_JAMP(373) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1002) ! used 8 times - TMP_JAMP(454) = AMP(997) - AMP(1013) ! used 8 times - TMP_JAMP(453) = AMP(995) - AMP(997) ! used 8 times - TMP_JAMP(452) = AMP(654) - AMP(998) ! used 8 times - TMP_JAMP(451) = TMP_JAMP(261) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(643) ! used 8 times - TMP_JAMP(450) = TMP_JAMP(359) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(995) ! used 8 times - TMP_JAMP(449) = TMP_JAMP(363) - TMP_JAMP(359) ! used 8 times - TMP_JAMP(448) = AMP(999) - AMP(1705) ! used 8 times - TMP_JAMP(447) = AMP(485) + AMP(1707) ! used 8 times - TMP_JAMP(446) = TMP_JAMP(347) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(482) ! used 8 times - TMP_JAMP(445) = TMP_JAMP(349) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(993) ! used 8 times - TMP_JAMP(444) = AMP(813) - AMP(989) ! used 8 times - TMP_JAMP(443) = AMP(803) + AMP(1760) ! used 8 times - TMP_JAMP(442) = TMP_JAMP(223) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(802) ! used 8 times - TMP_JAMP(441) = TMP_JAMP(325) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(800) ! used 8 times - TMP_JAMP(440) = AMP(804) + AMP(1706) ! used 8 times - TMP_JAMP(439) = TMP_JAMP(321) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(798) ! used 8 times - TMP_JAMP(438) = TMP_JAMP(396) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(149) ! used 8 times - TMP_JAMP(437) = TMP_JAMP(397) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(137) ! used 8 times - TMP_JAMP(436) = TMP_JAMP(361) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(143) ! used 8 times - TMP_JAMP(435) = AMP(283) - AMP(316) ! used 8 times - TMP_JAMP(434) = AMP(265) + AMP(318) ! used 8 times - TMP_JAMP(433) = AMP(263) + AMP(286) ! used 8 times - TMP_JAMP(432) = AMP(194) + AMP(281) ! used 8 times - TMP_JAMP(431) = AMP(180) - AMP(288) ! used 8 times - TMP_JAMP(430) = TMP_JAMP(306) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(182) ! used 8 times - TMP_JAMP(429) = TMP_JAMP(400) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(178) ! used 8 times - TMP_JAMP(428) = TMP_JAMP(402) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(262) ! used 8 times - TMP_JAMP(427) = TMP_JAMP(404) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(261) ! used 8 times - TMP_JAMP(426) = TMP_JAMP(405) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(280) ! used 8 times - TMP_JAMP(425) = AMP(282) + AMP(304) ! used 8 times - TMP_JAMP(424) = AMP(199) - AMP(306) ! used 8 times - TMP_JAMP(423) = AMP(198) - AMP(287) ! used 8 times - TMP_JAMP(422) = TMP_JAMP(382) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(197) ! used 8 times - TMP_JAMP(421) = TMP_JAMP(384) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(196) ! used 8 times - TMP_JAMP(420) = TMP_JAMP(385) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(279) ! used 8 times - TMP_JAMP(419) = AMP(274) + AMP(317) ! used 8 times - TMP_JAMP(418) = AMP(212) + AMP(273) ! used 8 times - TMP_JAMP(417) = TMP_JAMP(264) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(200) ! used 8 times - TMP_JAMP(416) = TMP_JAMP(363) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(271) ! used 8 times - TMP_JAMP(415) = AMP(272) + AMP(295) ! used 8 times - TMP_JAMP(414) = AMP(181) - AMP(297) ! used 8 times - TMP_JAMP(413) = TMP_JAMP(356) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(179) ! used 8 times - TMP_JAMP(412) = TMP_JAMP(357) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(270) ! used 8 times - TMP_JAMP(411) = AMP(230) + AMP(264) ! used 8 times - TMP_JAMP(410) = AMP(217) - AMP(305) ! used 8 times - TMP_JAMP(409) = TMP_JAMP(240) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(218) ! used 8 times - TMP_JAMP(408) = TMP_JAMP(341) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(215) ! used 8 times - TMP_JAMP(407) = AMP(216) - AMP(296) ! used 8 times - TMP_JAMP(406) = TMP_JAMP(336) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(214) ! used 8 times - TMP_JAMP(1123) = TMP_JAMP(1023) + AMP(445) ! used 8 times - TMP_JAMP(1122) = TMP_JAMP(1024) - AMP(477) ! used 8 times - TMP_JAMP(1121) = TMP_JAMP(1025) + AMP(475) ! used 8 times - TMP_JAMP(1120) = TMP_JAMP(1027) - AMP(1827) ! used 8 times - TMP_JAMP(1119) = TMP_JAMP(1030) + AMP(1825) ! used 8 times - TMP_JAMP(1118) = TMP_JAMP(992) + AMP(1517) ! used 8 times - TMP_JAMP(1117) = TMP_JAMP(993) - AMP(1692) ! used 8 times - TMP_JAMP(1116) = TMP_JAMP(995) - AMP(1660) ! used 8 times - TMP_JAMP(1115) = TMP_JAMP(996) + AMP(1074) ! used 8 times - TMP_JAMP(1114) = TMP_JAMP(997) - AMP(1072) ! used 8 times - TMP_JAMP(1113) = TMP_JAMP(965) - AMP(446) ! used 8 times - TMP_JAMP(1112) = TMP_JAMP(966) - AMP(465) ! used 8 times - TMP_JAMP(1111) = TMP_JAMP(949) - AMP(1579) ! used 8 times - TMP_JAMP(1110) = TMP_JAMP(950) - AMP(1887) ! used 8 times - TMP_JAMP(1109) = TMP_JAMP(951) + AMP(1885) ! used 8 times - TMP_JAMP(1108) = TMP_JAMP(921) + AMP(1770) ! used 8 times - TMP_JAMP(1107) = TMP_JAMP(903) + AMP(1571) ! used 8 times - TMP_JAMP(1106) = TMP_JAMP(905) - AMP(1806) ! used 8 times - TMP_JAMP(1105) = TMP_JAMP(907) + AMP(1804) ! used 8 times - TMP_JAMP(1104) = TMP_JAMP(895) - AMP(476) ! used 8 times - TMP_JAMP(1103) = TMP_JAMP(863) + AMP(454) ! used 8 times - TMP_JAMP(1102) = TMP_JAMP(849) - AMP(1525) ! used 8 times - TMP_JAMP(1101) = TMP_JAMP(850) - AMP(1860) ! used 8 times - TMP_JAMP(1100) = TMP_JAMP(851) + AMP(1858) ! used 8 times - TMP_JAMP(1099) = TMP_JAMP(834) - AMP(1714) ! used 8 times - TMP_JAMP(1098) = TMP_JAMP(818) - AMP(1752) ! used 8 times - TMP_JAMP(1097) = TMP_JAMP(820) + AMP(1750) ! used 8 times - TMP_JAMP(1096) = TMP_JAMP(805) - AMP(464) ! used 8 times - TMP_JAMP(1095) = TMP_JAMP(781) - AMP(455) ! used 8 times - TMP_JAMP(1094) = TMP_JAMP(765) - AMP(1633) ! used 8 times - TMP_JAMP(1093) = TMP_JAMP(752) + AMP(1641) ! used 8 times - TMP_JAMP(1092) = TMP_JAMP(718) + AMP(1715) ! used 8 times - TMP_JAMP(1091) = TMP_JAMP(712) - AMP(1136) ! used 8 times - TMP_JAMP(1090) = TMP_JAMP(602) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(600) ! used 8 times - TMP_JAMP(1089) = TMP_JAMP(603) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(601) ! used 8 times - TMP_JAMP(1088) = TMP_JAMP(604) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(598) ! used 8 times - TMP_JAMP(1087) = TMP_JAMP(605) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(599) ! used 8 times - TMP_JAMP(1086) = TMP_JAMP(606) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(597) ! used 8 times - TMP_JAMP(1085) = TMP_JAMP(587) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(586) ! used 8 times - TMP_JAMP(1084) = TMP_JAMP(588) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(585) ! used 8 times - TMP_JAMP(1083) = TMP_JAMP(589) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(584) ! used 8 times - TMP_JAMP(1082) = TMP_JAMP(567) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(566) ! used 8 times - TMP_JAMP(1081) = TMP_JAMP(568) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(565) ! used 8 times - TMP_JAMP(1080) = TMP_JAMP(557) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(556) ! used 8 times - TMP_JAMP(1079) = TMP_JAMP(558) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(555) ! used 8 times - TMP_JAMP(1078) = TMP_JAMP(540) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(539) ! used 8 times - TMP_JAMP(1077) = TMP_JAMP(541) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(538) ! used 8 times - TMP_JAMP(1076) = TMP_JAMP(534) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(533) ! used 8 times - TMP_JAMP(1075) = TMP_JAMP(526) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(523) ! used 8 times - TMP_JAMP(1074) = TMP_JAMP(530) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(522) ! used 8 times - TMP_JAMP(1073) = TMP_JAMP(514) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(510) ! used 8 times - TMP_JAMP(1072) = TMP_JAMP(504) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(503) ! used 8 times - TMP_JAMP(1071) = TMP_JAMP(499) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(498) ! used 8 times - TMP_JAMP(1070) = TMP_JAMP(500) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(497) ! used 8 times - TMP_JAMP(1069) = TMP_JAMP(495) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(493) ! used 8 times - TMP_JAMP(1068) = TMP_JAMP(490) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(489) ! used 8 times - TMP_JAMP(1067) = TMP_JAMP(487) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1779) ! used 8 times - TMP_JAMP(1066) = TMP_JAMP(483) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1778) ! used 8 times - TMP_JAMP(1065) = TMP_JAMP(481) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1534) ! used 8 times - TMP_JAMP(1064) = TMP_JAMP(482) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1536) ! used 8 times - TMP_JAMP(1063) = TMP_JAMP(477) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(630) ! used 8 times - TMP_JAMP(1062) = TMP_JAMP(476) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(629) ! used 8 times - TMP_JAMP(1061) = TMP_JAMP(475) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1535) ! used 8 times - TMP_JAMP(1060) = TMP_JAMP(468) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(466) ! used 8 times - TMP_JAMP(1059) = TMP_JAMP(469) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(467) ! used 8 times - TMP_JAMP(1058) = TMP_JAMP(472) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(464) ! used 8 times - TMP_JAMP(1057) = TMP_JAMP(458) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(457) ! used 8 times - TMP_JAMP(1056) = TMP_JAMP(459) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(456) ! used 8 times - TMP_JAMP(1055) = TMP_JAMP(460) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(455) ! used 8 times - TMP_JAMP(1054) = TMP_JAMP(452) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(451) ! used 8 times - TMP_JAMP(1053) = TMP_JAMP(447) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(446) ! used 8 times - TMP_JAMP(1052) = TMP_JAMP(448) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(445) ! used 8 times - TMP_JAMP(1051) = TMP_JAMP(443) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(441) ! used 8 times - TMP_JAMP(1050) = TMP_JAMP(444) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(442) ! used 8 times - TMP_JAMP(1049) = TMP_JAMP(440) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(439) ! used 8 times - TMP_JAMP(1048) = TMP_JAMP(437) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(156) ! used 8 times - TMP_JAMP(1047) = TMP_JAMP(438) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(154) ! used 8 times - TMP_JAMP(1046) = TMP_JAMP(436) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(155) ! used 8 times - TMP_JAMP(1045) = TMP_JAMP(431) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(429) ! used 8 times - TMP_JAMP(1044) = TMP_JAMP(432) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(430) ! used 8 times - TMP_JAMP(1043) = TMP_JAMP(433) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(427) ! used 8 times - TMP_JAMP(1042) = TMP_JAMP(434) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(428) ! used 8 times - TMP_JAMP(1041) = TMP_JAMP(435) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(426) ! used 8 times - TMP_JAMP(1040) = TMP_JAMP(423) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(421) ! used 8 times - TMP_JAMP(1039) = TMP_JAMP(424) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(422) ! used 8 times - TMP_JAMP(1038) = TMP_JAMP(425) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(420) ! used 8 times - TMP_JAMP(1037) = TMP_JAMP(418) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(417) ! used 8 times - TMP_JAMP(1036) = TMP_JAMP(419) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(416) ! used 8 times - TMP_JAMP(1035) = TMP_JAMP(414) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(413) ! used 8 times - TMP_JAMP(1034) = TMP_JAMP(415) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(412) ! used 8 times - TMP_JAMP(1033) = TMP_JAMP(410) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(408) ! used 8 times - TMP_JAMP(1032) = TMP_JAMP(411) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(409) ! used 8 times - TMP_JAMP(1031) = TMP_JAMP(407) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(406) ! used 8 times - TMP_JAMP(1140) = TMP_JAMP(1012) + AMP(1518) ! used 7 times - TMP_JAMP(1139) = TMP_JAMP(1019) - AMP(447) ! used 7 times - TMP_JAMP(1138) = TMP_JAMP(988) + AMP(1662) ! used 7 times - TMP_JAMP(1137) = TMP_JAMP(998) + AMP(1690) ! used 7 times - TMP_JAMP(1136) = TMP_JAMP(947) - AMP(1570) ! used 7 times - TMP_JAMP(1135) = TMP_JAMP(920) + AMP(1661) ! used 7 times - TMP_JAMP(1134) = TMP_JAMP(925) - AMP(1691) ! used 7 times - TMP_JAMP(1133) = TMP_JAMP(861) - AMP(456) ! used 7 times - TMP_JAMP(1132) = TMP_JAMP(845) + AMP(1527) ! used 7 times - TMP_JAMP(1131) = TMP_JAMP(831) + AMP(1716) ! used 7 times - TMP_JAMP(1130) = TMP_JAMP(774) - AMP(1301) ! used 7 times - TMP_JAMP(1129) = TMP_JAMP(753) - AMP(1639) ! used 7 times - TMP_JAMP(1128) = TMP_JAMP(741) + AMP(1769) ! used 7 times - TMP_JAMP(1127) = TMP_JAMP(705) + AMP(1634) ! used 7 times - TMP_JAMP(1126) = TMP_JAMP(700) + AMP(1640) ! used 7 times - TMP_JAMP(1125) = TMP_JAMP(695) + AMP(1852) ! used 7 times - TMP_JAMP(1124) = TMP_JAMP(674) + AMP(1744) ! used 7 times - TMP_JAMP(1158) = TMP_JAMP(1026) - AMP(1516) ! used 6 times - TMP_JAMP(1157) = TMP_JAMP(967) + AMP(463) ! used 6 times - TMP_JAMP(1156) = TMP_JAMP(973) - AMP(1826) ! used 6 times - TMP_JAMP(1155) = TMP_JAMP(941) + AMP(1572) ! used 6 times - TMP_JAMP(1154) = TMP_JAMP(928) - AMP(1768) ! used 6 times - TMP_JAMP(1153) = TMP_JAMP(904) + AMP(1580) ! used 6 times - TMP_JAMP(1152) = TMP_JAMP(943) + AMP(1581) ! used 6 times - TMP_JAMP(1151) = TMP_JAMP(878) + AMP(1073) ! used 6 times - TMP_JAMP(1150) = TMP_JAMP(846) - AMP(1476) ! used 6 times - TMP_JAMP(1149) = TMP_JAMP(817) + AMP(1526) ! used 6 times - TMP_JAMP(1148) = TMP_JAMP(762) + AMP(1635) ! used 6 times - TMP_JAMP(1147) = TMP_JAMP(742) - AMP(1049) ! used 6 times - TMP_JAMP(1146) = TMP_JAMP(728) - AMP(1214) ! used 6 times - TMP_JAMP(1145) = TMP_JAMP(692) - AMP(1854) ! used 6 times - TMP_JAMP(1144) = TMP_JAMP(671) - AMP(1746) ! used 6 times - TMP_JAMP(1143) = TMP_JAMP(650) + AMP(1626) ! used 6 times - TMP_JAMP(1142) = TMP_JAMP(652) - AMP(1624) ! used 6 times - TMP_JAMP(1141) = TMP_JAMP(633) + AMP(1625) ! used 6 times - TMP_JAMP(1168) = TMP_JAMP(1015) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1010) ! used 5 times - TMP_JAMP(1167) = TMP_JAMP(971) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(964) ! used 5 times - TMP_JAMP(1166) = TMP_JAMP(924) - AMP(1124) ! used 5 times - TMP_JAMP(1165) = TMP_JAMP(894) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(890) ! used 5 times - TMP_JAMP(1164) = TMP_JAMP(876) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(874) ! used 5 times - TMP_JAMP(1163) = TMP_JAMP(793) - AMP(1886) ! used 5 times - TMP_JAMP(1162) = TMP_JAMP(776) - AMP(1859) ! used 5 times - TMP_JAMP(1161) = TMP_JAMP(791) - AMP(1292) ! used 5 times - TMP_JAMP(1160) = TMP_JAMP(729) - AMP(1805) ! used 5 times - TMP_JAMP(1159) = TMP_JAMP(713) - AMP(1751) ! used 5 times - TMP_JAMP(1837) = AMP(437) + AMP(472) ! used 4 times - TMP_JAMP(1836) = AMP(419) - AMP(474) ! used 4 times - TMP_JAMP(1835) = AMP(416) + AMP(451) ! used 4 times - TMP_JAMP(1834) = AMP(350) - AMP(453) ! used 4 times - TMP_JAMP(1833) = AMP(85) - AMP(1515) ! used 4 times - TMP_JAMP(1832) = TMP_JAMP(1011) + AMP(352) ! used 4 times - TMP_JAMP(1831) = TMP_JAMP(1018) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(85) ! used 4 times - TMP_JAMP(1830) = TMP_JAMP(1022) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1011) ! used 4 times - TMP_JAMP(1829) = TMP_JAMP(1029) + TMP_JAMP(1022) ! used 4 times - TMP_JAMP(1828) = TMP_JAMP(1119) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(416) ! used 4 times - TMP_JAMP(1827) = TMP_JAMP(1120) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(350) ! used 4 times - TMP_JAMP(1826) = TMP_JAMP(1120) + TMP_JAMP(1119) ! used 4 times - TMP_JAMP(1825) = TMP_JAMP(1121) + TMP_JAMP(1017) ! used 4 times - TMP_JAMP(1824) = TMP_JAMP(1122) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(419) ! used 4 times - TMP_JAMP(1823) = TMP_JAMP(1123) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(416) ! used 4 times - TMP_JAMP(1822) = TMP_JAMP(1123) + TMP_JAMP(1122) ! used 4 times - TMP_JAMP(1821) = TMP_JAMP(1158) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1118) ! used 4 times - TMP_JAMP(1820) = TMP_JAMP(1168) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(98) ! used 4 times - TMP_JAMP(1819) = TMP_JAMP(1168) + TMP_JAMP(1016) ! used 4 times - TMP_JAMP(1818) = AMP(1061) + AMP(1069) ! used 4 times - TMP_JAMP(1817) = AMP(1043) - AMP(1071) ! used 4 times - TMP_JAMP(1816) = AMP(1041) + AMP(1663) ! used 4 times - TMP_JAMP(1815) = AMP(593) - AMP(1514) ! used 4 times - TMP_JAMP(1814) = AMP(510) - AMP(1665) ! used 4 times - TMP_JAMP(1813) = TMP_JAMP(987) + AMP(511) ! used 4 times - TMP_JAMP(1812) = TMP_JAMP(991) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(987) ! used 4 times - TMP_JAMP(1811) = TMP_JAMP(994) - TMP_JAMP(991) ! used 4 times - TMP_JAMP(1810) = TMP_JAMP(1016) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1043) ! used 4 times - TMP_JAMP(1809) = TMP_JAMP(1114) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1061) ! used 4 times - TMP_JAMP(1808) = TMP_JAMP(1114) + TMP_JAMP(1017) ! used 4 times - TMP_JAMP(1807) = TMP_JAMP(1115) + TMP_JAMP(1016) ! used 4 times - TMP_JAMP(1806) = TMP_JAMP(1116) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1041) ! used 4 times - TMP_JAMP(1805) = TMP_JAMP(1116) + TMP_JAMP(1115) ! used 4 times - TMP_JAMP(1804) = TMP_JAMP(1118) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(593) ! used 4 times - TMP_JAMP(1803) = TMP_JAMP(1137) + TMP_JAMP(1116) ! used 4 times - TMP_JAMP(1802) = TMP_JAMP(1137) + TMP_JAMP(1117) ! used 4 times - TMP_JAMP(1801) = TMP_JAMP(1140) + TMP_JAMP(1118) ! used 4 times - TMP_JAMP(1800) = AMP(443) + AMP(466) ! used 4 times - TMP_JAMP(1799) = AMP(368) - AMP(452) ! used 4 times - TMP_JAMP(1798) = AMP(361) - AMP(468) ! used 4 times - TMP_JAMP(1797) = TMP_JAMP(972) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(627) ! used 4 times - TMP_JAMP(1796) = TMP_JAMP(1029) - TMP_JAMP(994) ! used 4 times - TMP_JAMP(1795) = TMP_JAMP(1112) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(361) ! used 4 times - TMP_JAMP(1794) = TMP_JAMP(1112) - TMP_JAMP(969) ! used 4 times - TMP_JAMP(1793) = TMP_JAMP(1139) + TMP_JAMP(1113) ! used 4 times - TMP_JAMP(1792) = TMP_JAMP(1157) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(443) ! used 4 times - TMP_JAMP(1791) = TMP_JAMP(1157) - TMP_JAMP(972) ! used 4 times - TMP_JAMP(1790) = AMP(1459) + AMP(1888) ! used 4 times - TMP_JAMP(1789) = AMP(1210) - AMP(1890) ! used 4 times - TMP_JAMP(1788) = AMP(1204) + AMP(1573) ! used 4 times - TMP_JAMP(1787) = TMP_JAMP(944) - AMP(1467) ! used 4 times - TMP_JAMP(1786) = TMP_JAMP(969) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1210) ! used 4 times - TMP_JAMP(1785) = TMP_JAMP(1018) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(110) ! used 4 times - TMP_JAMP(1784) = TMP_JAMP(1109) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1459) ! used 4 times - TMP_JAMP(1783) = TMP_JAMP(1111) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1204) ! used 4 times - TMP_JAMP(1782) = TMP_JAMP(1111) - TMP_JAMP(1110) ! used 4 times - TMP_JAMP(1781) = TMP_JAMP(1155) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(93) ! used 4 times - TMP_JAMP(1780) = AMP(1063) + AMP(1765) ! used 4 times - TMP_JAMP(1779) = AMP(669) - AMP(1664) ! used 4 times - TMP_JAMP(1778) = AMP(660) - AMP(1767) ! used 4 times - TMP_JAMP(1777) = TMP_JAMP(930) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1152) ! used 4 times - TMP_JAMP(1776) = TMP_JAMP(1108) + ((0.000000000000000D+00, + TMP_JAMP(766) = TMP_JAMP(647) - TMP_JAMP(646) ! used 8 times + TMP_JAMP(765) = TMP_JAMP(647) - TMP_JAMP(640) ! used 8 times + TMP_JAMP(764) = TMP_JAMP(646) - TMP_JAMP(640) ! used 8 times + TMP_JAMP(763) = TMP_JAMP(645) + TMP_JAMP(643) ! used 8 times + TMP_JAMP(762) = TMP_JAMP(644) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(855) ! used 8 times + TMP_JAMP(761) = TMP_JAMP(644) - TMP_JAMP(643) ! used 8 times + TMP_JAMP(760) = TMP_JAMP(644) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(854) ! used 8 times + TMP_JAMP(759) = TMP_JAMP(643) - TMP_JAMP(642) ! used 8 times + TMP_JAMP(758) = TMP_JAMP(643) - TMP_JAMP(639) ! used 8 times + TMP_JAMP(757) = TMP_JAMP(642) - TMP_JAMP(639) ! used 8 times + TMP_JAMP(756) = TMP_JAMP(641) - TMP_JAMP(640) ! used 8 times + TMP_JAMP(755) = TMP_JAMP(641) + TMP_JAMP(639) ! used 8 times + TMP_JAMP(754) = TMP_JAMP(641) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(940) ! used 8 times + TMP_JAMP(753) = TMP_JAMP(640) + TMP_JAMP(639) ! used 8 times + TMP_JAMP(752) = TMP_JAMP(608) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(942) ! used 8 times + TMP_JAMP(751) = TMP_JAMP(608) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(944) ! used 8 times + TMP_JAMP(750) = TMP_JAMP(604) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(833) ! used 8 times + TMP_JAMP(749) = TMP_JAMP(604) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(835) ! used 8 times + TMP_JAMP(748) = TMP_JAMP(602) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(851) ! used 8 times + TMP_JAMP(747) = TMP_JAMP(602) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(853) ! used 8 times + TMP_JAMP(746) = AMP(597) - AMP(599) ! used 8 times + TMP_JAMP(745) = AMP(592) + AMP(600) ! used 8 times + TMP_JAMP(744) = AMP(502) + AMP(513) ! used 8 times + TMP_JAMP(743) = AMP(498) + AMP(504) ! used 8 times + TMP_JAMP(742) = AMP(626) + AMP(631) ! used 8 times + TMP_JAMP(741) = AMP(526) + AMP(598) ! used 8 times + TMP_JAMP(740) = AMP(517) - AMP(633) ! used 8 times + TMP_JAMP(739) = AMP(756) - AMP(758) ! used 8 times + TMP_JAMP(738) = AMP(685) + AMP(757) ! used 8 times + TMP_JAMP(737) = AMP(659) + AMP(662) ! used 8 times + TMP_JAMP(736) = AMP(657) + AMP(663) ! used 8 times + TMP_JAMP(735) = AMP(768) - AMP(770) ! used 8 times + TMP_JAMP(734) = AMP(763) + AMP(771) ! used 8 times + TMP_JAMP(733) = AMP(751) + AMP(759) ! used 8 times + TMP_JAMP(732) = AMP(661) + AMP(672) ! used 8 times + TMP_JAMP(731) = AMP(785) + AMP(790) ! used 8 times + TMP_JAMP(730) = AMP(676) - AMP(792) ! used 8 times + TMP_JAMP(729) = AMP(500) + AMP(503) ! used 8 times + TMP_JAMP(728) = AMP(609) - AMP(611) ! used 8 times + TMP_JAMP(727) = AMP(604) + AMP(612) ! used 8 times + TMP_JAMP(726) = AMP(535) - AMP(632) ! used 8 times + TMP_JAMP(725) = AMP(706) + AMP(769) ! used 8 times + TMP_JAMP(724) = AMP(694) - AMP(791) ! used 8 times + TMP_JAMP(723) = AMP(547) + AMP(610) ! used 8 times + TMP_JAMP(722) = AMP(820) + AMP(831) ! used 8 times + TMP_JAMP(721) = AMP(818) + AMP(821) ! used 8 times + TMP_JAMP(720) = AMP(927) - AMP(929) ! used 8 times + TMP_JAMP(719) = AMP(865) + AMP(928) ! used 8 times + TMP_JAMP(718) = AMP(816) + AMP(822) ! used 8 times + TMP_JAMP(717) = AMP(936) - AMP(938) ! used 8 times + TMP_JAMP(716) = AMP(847) + AMP(937) ! used 8 times + TMP_JAMP(715) = AMP(922) + AMP(930) ! used 8 times + TMP_JAMP(714) = AMP(931) + AMP(939) ! used 8 times + TMP_JAMP(713) = AMP(585) - AMP(587) ! used 8 times + TMP_JAMP(712) = AMP(580) + AMP(588) ! used 8 times + TMP_JAMP(711) = AMP(544) + AMP(586) ! used 8 times + TMP_JAMP(710) = AMP(915) - AMP(917) ! used 8 times + TMP_JAMP(709) = AMP(844) + AMP(916) ! used 8 times + TMP_JAMP(708) = AMP(910) + AMP(918) ! used 8 times + TMP_JAMP(707) = AMP(618) - AMP(620) ! used 8 times + TMP_JAMP(706) = AMP(613) + AMP(621) ! used 8 times + TMP_JAMP(705) = AMP(529) + AMP(619) ! used 8 times + TMP_JAMP(704) = AMP(783) + AMP(787) ! used 8 times + TMP_JAMP(703) = AMP(674) - AMP(789) ! used 8 times + TMP_JAMP(702) = AMP(692) - AMP(788) ! used 8 times + TMP_JAMP(701) = AMP(777) - AMP(779) ! used 8 times + TMP_JAMP(700) = AMP(688) + AMP(778) ! used 8 times + TMP_JAMP(699) = AMP(772) + AMP(780) ! used 8 times + TMP_JAMP(698) = AMP(744) - AMP(746) ! used 8 times + TMP_JAMP(697) = AMP(739) + AMP(747) ! used 8 times + TMP_JAMP(696) = AMP(703) + AMP(745) ! used 8 times + TMP_JAMP(695) = AMP(903) - AMP(905) ! used 8 times + TMP_JAMP(694) = AMP(862) + AMP(904) ! used 8 times + TMP_JAMP(693) = AMP(898) + AMP(906) ! used 8 times + TMP_JAMP(692) = AMP(624) + AMP(628) ! used 8 times + TMP_JAMP(691) = AMP(515) - AMP(630) ! used 8 times + TMP_JAMP(690) = AMP(533) - AMP(629) ! used 8 times + TMP_JAMP(689) = AMP(484) + AMP(495) ! used 8 times + TMP_JAMP(688) = AMP(480) + AMP(486) ! used 8 times + TMP_JAMP(687) = AMP(641) + AMP(644) ! used 8 times + TMP_JAMP(686) = AMP(639) + AMP(645) ! used 8 times + TMP_JAMP(685) = AMP(643) + AMP(654) ! used 8 times + TMP_JAMP(684) = AMP(482) + AMP(485) ! used 8 times + TMP_JAMP(683) = AMP(802) + AMP(813) ! used 8 times + TMP_JAMP(682) = AMP(800) + AMP(803) ! used 8 times + TMP_JAMP(681) = AMP(798) + AMP(804) ! used 8 times + TMP_JAMP(1043) = TMP_JAMP(834) + TMP_JAMP(785) ! used 4 times + TMP_JAMP(1042) = TMP_JAMP(834) + TMP_JAMP(819) ! used 4 times + TMP_JAMP(1041) = TMP_JAMP(831) - TMP_JAMP(680) ! used 4 times + TMP_JAMP(1040) = TMP_JAMP(829) + TMP_JAMP(827) ! used 4 times + TMP_JAMP(1039) = TMP_JAMP(829) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(707) ! used 4 times + TMP_JAMP(1038) = TMP_JAMP(827) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(729) ! used 4 times + TMP_JAMP(1037) = TMP_JAMP(822) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(692) ! used 4 times + TMP_JAMP(1036) = TMP_JAMP(821) - TMP_JAMP(785) ! used 4 times + TMP_JAMP(1035) = TMP_JAMP(817) - TMP_JAMP(676) ! used 4 times + TMP_JAMP(1034) = TMP_JAMP(817) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(741) ! used 4 times + TMP_JAMP(1033) = TMP_JAMP(814) + TMP_JAMP(771) ! used 4 times + TMP_JAMP(1032) = TMP_JAMP(814) + TMP_JAMP(792) ! used 4 times + TMP_JAMP(1031) = TMP_JAMP(814) + TMP_JAMP(801) ! used 4 times + TMP_JAMP(1030) = TMP_JAMP(811) + TMP_JAMP(672) ! used 4 times + TMP_JAMP(1029) = TMP_JAMP(810) + TMP_JAMP(809) ! used 4 times + TMP_JAMP(1028) = TMP_JAMP(810) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(701) ! used 4 times + TMP_JAMP(1027) = TMP_JAMP(809) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(732) ! used 4 times + TMP_JAMP(1026) = TMP_JAMP(804) + TMP_JAMP(767) ! used 4 times + TMP_JAMP(1025) = TMP_JAMP(803) + TMP_JAMP(792) ! used 4 times + TMP_JAMP(1024) = TMP_JAMP(798) - TMP_JAMP(668) ! used 4 times + TMP_JAMP(1023) = TMP_JAMP(798) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(734) ! used 4 times + TMP_JAMP(1022) = TMP_JAMP(792) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(731) ! used 4 times + TMP_JAMP(1021) = TMP_JAMP(792) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(703) ! used 4 times + TMP_JAMP(1020) = TMP_JAMP(786) + TMP_JAMP(760) ! used 4 times + TMP_JAMP(1019) = TMP_JAMP(785) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(728) ! used 4 times + TMP_JAMP(1018) = TMP_JAMP(785) + TMP_JAMP(759) ! used 4 times + TMP_JAMP(1017) = TMP_JAMP(785) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(712) ! used 4 times + TMP_JAMP(1016) = TMP_JAMP(779) - AMP(617) ! used 4 times + TMP_JAMP(1015) = TMP_JAMP(779) + TMP_JAMP(775) ! used 4 times + TMP_JAMP(1014) = TMP_JAMP(778) - TMP_JAMP(675) ! used 4 times + TMP_JAMP(1013) = TMP_JAMP(778) + TMP_JAMP(674) ! used 4 times + TMP_JAMP(1012) = TMP_JAMP(778) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(723) ! used 4 times + TMP_JAMP(1011) = TMP_JAMP(775) - AMP(776) ! used 4 times + TMP_JAMP(1010) = TMP_JAMP(774) - TMP_JAMP(665) ! used 4 times + TMP_JAMP(1009) = TMP_JAMP(774) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(724) ! used 4 times + TMP_JAMP(1008) = TMP_JAMP(773) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(721) ! used 4 times + TMP_JAMP(1007) = TMP_JAMP(772) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(718) ! used 4 times + TMP_JAMP(1006) = TMP_JAMP(771) + TMP_JAMP(759) ! used 4 times + TMP_JAMP(1005) = TMP_JAMP(771) + TMP_JAMP(766) ! used 4 times + TMP_JAMP(1004) = TMP_JAMP(769) - AMP(832) ! used 4 times + TMP_JAMP(1003) = TMP_JAMP(769) + AMP(819) ! used 4 times + TMP_JAMP(1002) = TMP_JAMP(766) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(720) ! used 4 times + TMP_JAMP(1001) = TMP_JAMP(759) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(717) ! used 4 times + TMP_JAMP(1000) = TMP_JAMP(753) - TMP_JAMP(646) ! used 4 times + TMP_JAMP(999) = TMP_JAMP(752) + AMP(943) ! used 4 times + TMP_JAMP(998) = TMP_JAMP(751) + TMP_JAMP(749) ! used 4 times + TMP_JAMP(997) = TMP_JAMP(751) - TMP_JAMP(747) ! used 4 times + TMP_JAMP(996) = TMP_JAMP(750) - AMP(832) ! used 4 times + TMP_JAMP(995) = TMP_JAMP(750) + TMP_JAMP(748) ! used 4 times + TMP_JAMP(994) = TMP_JAMP(749) - AMP(834) ! used 4 times + TMP_JAMP(993) = TMP_JAMP(748) - AMP(850) ! used 4 times + TMP_JAMP(992) = TMP_JAMP(747) - AMP(852) ! used 4 times + TMP_JAMP(991) = TMP_JAMP(746) - TMP_JAMP(745) ! used 4 times + TMP_JAMP(990) = TMP_JAMP(746) + TMP_JAMP(739) ! used 4 times + TMP_JAMP(989) = TMP_JAMP(746) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(596) ! used 4 times + TMP_JAMP(988) = TMP_JAMP(745) - TMP_JAMP(741) ! used 4 times + TMP_JAMP(987) = TMP_JAMP(745) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(601) ! used 4 times + TMP_JAMP(986) = TMP_JAMP(744) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(511) ! used 4 times + TMP_JAMP(985) = TMP_JAMP(744) + TMP_JAMP(729) ! used 4 times + TMP_JAMP(984) = TMP_JAMP(743) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(510) ! used 4 times + TMP_JAMP(983) = TMP_JAMP(743) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(499) ! used 4 times + TMP_JAMP(982) = TMP_JAMP(742) - TMP_JAMP(726) ! used 4 times + TMP_JAMP(981) = TMP_JAMP(742) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(494) ! used 4 times + TMP_JAMP(980) = TMP_JAMP(741) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(528) ! used 4 times + TMP_JAMP(979) = TMP_JAMP(741) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(527) ! used 4 times + TMP_JAMP(978) = TMP_JAMP(740) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(528) ! used 4 times + TMP_JAMP(977) = TMP_JAMP(740) + TMP_JAMP(726) ! used 4 times + TMP_JAMP(976) = TMP_JAMP(740) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(516) ! used 4 times + TMP_JAMP(975) = TMP_JAMP(739) - TMP_JAMP(738) ! used 4 times + TMP_JAMP(974) = TMP_JAMP(739) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(755) ! used 4 times + TMP_JAMP(973) = TMP_JAMP(738) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(686) ! used 4 times + TMP_JAMP(972) = TMP_JAMP(738) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(687) ! used 4 times + TMP_JAMP(971) = TMP_JAMP(737) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(660) ! used 4 times - TMP_JAMP(1775) = TMP_JAMP(1134) + ((0.000000000000000D+00 + TMP_JAMP(970) = TMP_JAMP(737) + TMP_JAMP(721) ! used 4 times + TMP_JAMP(969) = TMP_JAMP(737) + TMP_JAMP(732) ! used 4 times + TMP_JAMP(968) = TMP_JAMP(736) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(669) ! used 4 times - TMP_JAMP(1774) = TMP_JAMP(1134) + TMP_JAMP(1117) ! used 4 times - TMP_JAMP(1773) = TMP_JAMP(1138) + TMP_JAMP(1135) ! used 4 times - TMP_JAMP(1772) = TMP_JAMP(1154) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1063) ! used 4 times - TMP_JAMP(1771) = AMP(1461) + AMP(1807) ! used 4 times - TMP_JAMP(1770) = AMP(767) - AMP(1809) ! used 4 times - TMP_JAMP(1769) = AMP(760) - AMP(1574) ! used 4 times - TMP_JAMP(1768) = TMP_JAMP(923) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(767) ! used 4 times - TMP_JAMP(1767) = TMP_JAMP(1105) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1461) ! used 4 times - TMP_JAMP(1766) = TMP_JAMP(1106) + TMP_JAMP(923) ! used 4 times - TMP_JAMP(1765) = TMP_JAMP(1106) + TMP_JAMP(1105) ! used 4 times - TMP_JAMP(1764) = TMP_JAMP(1107) + ((-0.000000000000000D+00, + TMP_JAMP(967) = TMP_JAMP(736) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(658) ! used 4 times + TMP_JAMP(966) = TMP_JAMP(735) - TMP_JAMP(734) ! used 4 times + TMP_JAMP(965) = TMP_JAMP(735) + TMP_JAMP(720) ! used 4 times + TMP_JAMP(964) = TMP_JAMP(735) - TMP_JAMP(725) ! used 4 times + TMP_JAMP(963) = TMP_JAMP(735) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(648) ! used 4 times + TMP_JAMP(962) = TMP_JAMP(734) - TMP_JAMP(725) ! used 4 times + TMP_JAMP(961) = TMP_JAMP(734) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(764) ! used 4 times + TMP_JAMP(960) = TMP_JAMP(733) + ((-0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(760) ! used 4 times - TMP_JAMP(1763) = AMP(1196) + AMP(1567) ! used 4 times - TMP_JAMP(1762) = AMP(428) - AMP(473) ! used 4 times - TMP_JAMP(1761) = AMP(87) - AMP(1569) ! used 4 times - TMP_JAMP(1760) = TMP_JAMP(892) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(87) ! used 4 times - TMP_JAMP(1759) = TMP_JAMP(896) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(370) ! used 4 times - TMP_JAMP(1758) = TMP_JAMP(1016) + TMP_JAMP(891) ! used 4 times - TMP_JAMP(1757) = TMP_JAMP(1104) + TMP_JAMP(891) ! used 4 times - TMP_JAMP(1756) = TMP_JAMP(1122) + TMP_JAMP(1104) ! used 4 times - TMP_JAMP(1755) = TMP_JAMP(1123) - TMP_JAMP(1113) ! used 4 times - TMP_JAMP(1754) = TMP_JAMP(1136) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1196) ! used 4 times - TMP_JAMP(1753) = TMP_JAMP(1136) - TMP_JAMP(896) ! used 4 times - TMP_JAMP(1752) = AMP(1052) - AMP(1070) ! used 4 times - TMP_JAMP(1751) = AMP(752) - AMP(1568) ! used 4 times - TMP_JAMP(1750) = TMP_JAMP(892) + TMP_JAMP(877) ! used 4 times - TMP_JAMP(1749) = TMP_JAMP(1107) + ((0.000000000000000D+00 + TMP_JAMP(959) = TMP_JAMP(733) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(752) ! used 4 times - TMP_JAMP(1748) = TMP_JAMP(1134) - TMP_JAMP(1107) ! used 4 times - TMP_JAMP(1747) = TMP_JAMP(1151) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1052) ! used 4 times - TMP_JAMP(1746) = TMP_JAMP(1151) + TMP_JAMP(891) ! used 4 times - TMP_JAMP(1745) = AMP(434) + AMP(457) ! used 4 times - TMP_JAMP(1744) = AMP(343) - AMP(459) ! used 4 times - TMP_JAMP(1743) = TMP_JAMP(877) + ((0.000000000000000D+00, + TMP_JAMP(958) = TMP_JAMP(732) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(670) ! used 4 times + TMP_JAMP(957) = TMP_JAMP(731) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(786) ! used 4 times - TMP_JAMP(1742) = TMP_JAMP(877) + TMP_JAMP(865) ! used 4 times - TMP_JAMP(1741) = TMP_JAMP(1133) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(343) ! used 4 times - TMP_JAMP(1740) = TMP_JAMP(1133) + TMP_JAMP(1103) ! used 4 times - TMP_JAMP(1739) = TMP_JAMP(1136) - TMP_JAMP(1107) ! used 4 times - TMP_JAMP(1738) = AMP(1468) + AMP(1861) ! used 4 times - TMP_JAMP(1737) = AMP(1132) - AMP(1863) ! used 4 times - TMP_JAMP(1736) = AMP(1126) + AMP(1519) ! used 4 times - TMP_JAMP(1735) = AMP(96) - AMP(1521) ! used 4 times - TMP_JAMP(1734) = TMP_JAMP(1100) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1468) ! used 4 times - TMP_JAMP(1733) = TMP_JAMP(1100) - TMP_JAMP(865) ! used 4 times - TMP_JAMP(1732) = TMP_JAMP(1102) - TMP_JAMP(1101) ! used 4 times - TMP_JAMP(1731) = TMP_JAMP(1140) - TMP_JAMP(1132) ! used 4 times - TMP_JAMP(1730) = TMP_JAMP(1150) - TMP_JAMP(892) ! used 4 times - TMP_JAMP(1729) = AMP(1054) + AMP(1711) ! used 4 times - TMP_JAMP(1728) = AMP(501) - AMP(1713) ! used 4 times - TMP_JAMP(1727) = TMP_JAMP(896) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1230) ! used 4 times - TMP_JAMP(1726) = TMP_JAMP(896) - TMP_JAMP(835) ! used 4 times - TMP_JAMP(1725) = TMP_JAMP(1131) + ((0.000000000000000D+00, + TMP_JAMP(956) = TMP_JAMP(731) - TMP_JAMP(724) ! used 4 times + TMP_JAMP(955) = TMP_JAMP(730) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(687) ! used 4 times + TMP_JAMP(954) = TMP_JAMP(730) + TMP_JAMP(724) ! used 4 times + TMP_JAMP(953) = TMP_JAMP(730) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(675) ! used 4 times + TMP_JAMP(952) = TMP_JAMP(729) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(501) ! used 4 times - TMP_JAMP(1724) = TMP_JAMP(1131) + TMP_JAMP(1099) ! used 4 times - TMP_JAMP(1723) = AMP(1470) + AMP(1753) ! used 4 times - TMP_JAMP(1722) = AMP(608) - AMP(1755) ! used 4 times - TMP_JAMP(1721) = AMP(601) - AMP(1520) ! used 4 times - TMP_JAMP(1720) = TMP_JAMP(835) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1470) ! used 4 times - TMP_JAMP(1719) = TMP_JAMP(1097) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1470) ! used 4 times - TMP_JAMP(1718) = TMP_JAMP(1098) + ((-0.000000000000000D+00 + TMP_JAMP(951) = TMP_JAMP(729) + TMP_JAMP(718) ! used 4 times + TMP_JAMP(950) = TMP_JAMP(728) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(608) ! used 4 times - TMP_JAMP(1717) = TMP_JAMP(1098) + TMP_JAMP(1097) ! used 4 times - TMP_JAMP(1716) = TMP_JAMP(1149) - TMP_JAMP(1118) ! used 4 times - TMP_JAMP(1715) = AMP(1452) + AMP(1693) ! used 4 times - TMP_JAMP(1714) = AMP(596) - AMP(1695) ! used 4 times - TMP_JAMP(1713) = AMP(379) - AMP(467) ! used 4 times - TMP_JAMP(1712) = TMP_JAMP(806) - AMP(423) ! used 4 times - TMP_JAMP(1711) = TMP_JAMP(969) + TMP_JAMP(808) ! used 4 times - TMP_JAMP(1710) = TMP_JAMP(1096) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(379) ! used 4 times - TMP_JAMP(1709) = TMP_JAMP(1112) + TMP_JAMP(1096) ! used 4 times - TMP_JAMP(1708) = TMP_JAMP(1117) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(596) ! used 4 times - TMP_JAMP(1707) = TMP_JAMP(1117) + TMP_JAMP(809) ! used 4 times - TMP_JAMP(1706) = TMP_JAMP(1137) - TMP_JAMP(1119) ! used 4 times - TMP_JAMP(1705) = AMP(1288) - AMP(1889) ! used 4 times - TMP_JAMP(1704) = AMP(755) - AMP(1694) ! used 4 times - TMP_JAMP(1703) = TMP_JAMP(790) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(708) ! used 4 times - TMP_JAMP(1702) = TMP_JAMP(808) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1288) ! used 4 times - TMP_JAMP(1701) = TMP_JAMP(809) + TMP_JAMP(790) ! used 4 times - TMP_JAMP(1700) = AMP(381) - AMP(458) ! used 4 times - TMP_JAMP(1699) = TMP_JAMP(790) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(693) ! used 4 times - TMP_JAMP(1698) = TMP_JAMP(810) - TMP_JAMP(790) ! used 4 times - TMP_JAMP(1697) = TMP_JAMP(1095) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(381) ! used 4 times - TMP_JAMP(1696) = TMP_JAMP(1095) - TMP_JAMP(782) ! used 4 times - TMP_JAMP(1695) = AMP(1297) - AMP(1862) ! used 4 times - TMP_JAMP(1694) = TMP_JAMP(782) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1297) ! used 4 times - TMP_JAMP(1693) = TMP_JAMP(809) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(549) ! used 4 times - TMP_JAMP(1692) = TMP_JAMP(1130) - TMP_JAMP(809) ! used 4 times - TMP_JAMP(1691) = AMP(1286) + AMP(1630) ! used 4 times - TMP_JAMP(1690) = TMP_JAMP(764) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(97) ! used 4 times - TMP_JAMP(1689) = TMP_JAMP(810) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1307) ! used 4 times - TMP_JAMP(1688) = TMP_JAMP(1094) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1286) ! used 4 times - TMP_JAMP(1687) = TMP_JAMP(1094) + TMP_JAMP(766) ! used 4 times - TMP_JAMP(1686) = TMP_JAMP(1148) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(105) ! used 4 times - TMP_JAMP(1685) = AMP(1295) + AMP(1636) ! used 4 times - TMP_JAMP(1684) = AMP(117) - AMP(1638) ! used 4 times - TMP_JAMP(1683) = TMP_JAMP(766) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1295) ! used 4 times - TMP_JAMP(1682) = TMP_JAMP(1093) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(117) ! used 4 times - TMP_JAMP(1681) = TMP_JAMP(1129) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1295) ! used 4 times - TMP_JAMP(1680) = TMP_JAMP(1130) - TMP_JAMP(1129) ! used 4 times - TMP_JAMP(1679) = AMP(1120) - AMP(1830) ! used 4 times - TMP_JAMP(1678) = AMP(819) - AMP(1766) ! used 4 times - TMP_JAMP(1677) = TMP_JAMP(733) + AMP(1120) ! used 4 times - TMP_JAMP(1676) = TMP_JAMP(923) + TMP_JAMP(746) ! used 4 times - TMP_JAMP(1675) = TMP_JAMP(1119) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1450) ! used 4 times - TMP_JAMP(1674) = TMP_JAMP(1120) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(733) ! used 4 times - TMP_JAMP(1673) = TMP_JAMP(1120) - TMP_JAMP(745) ! used 4 times - TMP_JAMP(1672) = TMP_JAMP(1128) + TMP_JAMP(1108) ! used 4 times - TMP_JAMP(1671) = TMP_JAMP(1147) + ((-0.000000000000000D+00 + TMP_JAMP(949) = TMP_JAMP(728) + TMP_JAMP(717) ! used 4 times + TMP_JAMP(948) = TMP_JAMP(728) - TMP_JAMP(723) ! used 4 times + TMP_JAMP(947) = TMP_JAMP(727) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(601) ! used 4 times + TMP_JAMP(946) = TMP_JAMP(727) - TMP_JAMP(723) ! used 4 times + TMP_JAMP(945) = TMP_JAMP(727) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(605) ! used 4 times + TMP_JAMP(944) = TMP_JAMP(726) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(534) ! used 4 times + TMP_JAMP(943) = TMP_JAMP(725) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(708) ! used 4 times + TMP_JAMP(942) = TMP_JAMP(724) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(693) ! used 4 times + TMP_JAMP(941) = TMP_JAMP(723) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(549) ! used 4 times + TMP_JAMP(940) = TMP_JAMP(722) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(830) ! used 4 times - TMP_JAMP(1670) = TMP_JAMP(1147) - TMP_JAMP(747) ! used 4 times - TMP_JAMP(1669) = AMP(1198) - AMP(1829) ! used 4 times - TMP_JAMP(1668) = AMP(926) - AMP(1808) ! used 4 times - TMP_JAMP(1667) = TMP_JAMP(746) + ((0.000000000000000D+00 + TMP_JAMP(939) = TMP_JAMP(722) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(829) ! used 4 times + TMP_JAMP(938) = TMP_JAMP(721) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(819) ! used 4 times + TMP_JAMP(937) = TMP_JAMP(721) + TMP_JAMP(718) ! used 4 times + TMP_JAMP(936) = TMP_JAMP(720) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(926) ! used 4 times - TMP_JAMP(1666) = TMP_JAMP(1146) + ((-0.000000000000000D+00 + TMP_JAMP(935) = TMP_JAMP(720) - TMP_JAMP(715) ! used 4 times + TMP_JAMP(934) = TMP_JAMP(719) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(866) ! used 4 times - TMP_JAMP(1665) = TMP_JAMP(1146) + TMP_JAMP(727) ! used 4 times - TMP_JAMP(1664) = AMP(817) - AMP(1712) ! used 4 times - TMP_JAMP(1663) = TMP_JAMP(727) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(850) ! used 4 times - TMP_JAMP(1662) = TMP_JAMP(727) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(717) ! used 4 times - TMP_JAMP(1661) = TMP_JAMP(747) - TMP_JAMP(727) ! used 4 times - TMP_JAMP(1660) = TMP_JAMP(1092) + ((-0.000000000000000D+00, + TMP_JAMP(933) = TMP_JAMP(719) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(867) ! used 4 times + TMP_JAMP(932) = TMP_JAMP(718) + ((-0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(817) ! used 4 times - TMP_JAMP(1659) = TMP_JAMP(1092) + TMP_JAMP(719) ! used 4 times - TMP_JAMP(1658) = AMP(935) - AMP(1754) ! used 4 times - TMP_JAMP(1657) = TMP_JAMP(719) + ((0.000000000000000D+00 + TMP_JAMP(931) = TMP_JAMP(717) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(935) ! used 4 times - TMP_JAMP(1656) = TMP_JAMP(745) + ((-0.000000000000000D+00 + TMP_JAMP(930) = TMP_JAMP(717) - TMP_JAMP(714) ! used 4 times + TMP_JAMP(929) = TMP_JAMP(716) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(848) ! used 4 times - TMP_JAMP(1655) = TMP_JAMP(1102) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(708) ! used 4 times - TMP_JAMP(1654) = TMP_JAMP(1102) - TMP_JAMP(1091) ! used 4 times - TMP_JAMP(1653) = AMP(923) - AMP(1631) ! used 4 times - TMP_JAMP(1652) = TMP_JAMP(747) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(943) ! used 4 times - TMP_JAMP(1651) = TMP_JAMP(747) + TMP_JAMP(707) ! used 4 times - TMP_JAMP(1650) = AMP(932) - AMP(1637) ! used 4 times - TMP_JAMP(1649) = TMP_JAMP(707) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(932) ! used 4 times - TMP_JAMP(1648) = TMP_JAMP(1126) + ((-0.000000000000000D+00, + TMP_JAMP(928) = TMP_JAMP(716) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(849) ! used 4 times + TMP_JAMP(927) = TMP_JAMP(715) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(923) ! used 4 times + TMP_JAMP(926) = TMP_JAMP(715) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(646) ! used 4 times + TMP_JAMP(925) = TMP_JAMP(714) + ((-0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(932) ! used 4 times - TMP_JAMP(1647) = TMP_JAMP(1126) - TMP_JAMP(1091) ! used 4 times - TMP_JAMP(1646) = AMP(1506) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1509) ! used 4 times - TMP_JAMP(1645) = AMP(1504) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1507) ! used 4 times - TMP_JAMP(1644) = AMP(407) + AMP(460) ! used 4 times - TMP_JAMP(1643) = AMP(347) - AMP(462) ! used 4 times - TMP_JAMP(1642) = TMP_JAMP(677) - AMP(1106) ! used 4 times - TMP_JAMP(1641) = TMP_JAMP(679) - AMP(67) ! used 4 times - TMP_JAMP(1640) = TMP_JAMP(690) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(686) ! used 4 times - TMP_JAMP(1639) = TMP_JAMP(891) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(80) ! used 4 times - TMP_JAMP(1638) = TMP_JAMP(1017) - TMP_JAMP(891) ! used 4 times - TMP_JAMP(1637) = TMP_JAMP(1018) + TMP_JAMP(687) ! used 4 times - TMP_JAMP(1636) = TMP_JAMP(1029) + TMP_JAMP(691) ! used 4 times - TMP_JAMP(1635) = TMP_JAMP(1103) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(407) ! used 4 times - TMP_JAMP(1634) = TMP_JAMP(1121) - TMP_JAMP(1104) ! used 4 times - TMP_JAMP(1633) = TMP_JAMP(1125) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(407) ! used 4 times - TMP_JAMP(1632) = TMP_JAMP(1125) + TMP_JAMP(1103) ! used 4 times - TMP_JAMP(1631) = TMP_JAMP(1145) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(347) ! used 4 times - TMP_JAMP(1630) = AMP(1505) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1508) ! used 4 times - TMP_JAMP(1629) = AMP(1032) + AMP(1717) ! used 4 times - TMP_JAMP(1628) = AMP(507) - AMP(1719) ! used 4 times - TMP_JAMP(1627) = TMP_JAMP(664) - AMP(581) ! used 4 times - TMP_JAMP(1626) = TMP_JAMP(994) + TMP_JAMP(670) ! used 4 times - TMP_JAMP(1625) = TMP_JAMP(1099) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1032) ! used 4 times - TMP_JAMP(1624) = TMP_JAMP(1124) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1032) ! used 4 times - TMP_JAMP(1623) = TMP_JAMP(1124) + TMP_JAMP(1099) ! used 4 times - TMP_JAMP(1622) = TMP_JAMP(1144) + ((-0.000000000000000D+00 + TMP_JAMP(924) = TMP_JAMP(714) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(642) ! used 4 times + TMP_JAMP(923) = TMP_JAMP(713) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(507) ! used 4 times - TMP_JAMP(1621) = AMP(386) - AMP(461) ! used 4 times - TMP_JAMP(1620) = TMP_JAMP(660) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(658) ! used 4 times - TMP_JAMP(1619) = TMP_JAMP(661) - AMP(1853) ! used 4 times - TMP_JAMP(1618) = TMP_JAMP(808) + ((0.000000000000000D+00, + TMP_JAMP(922) = TMP_JAMP(713) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(584) ! used 4 times + TMP_JAMP(921) = TMP_JAMP(712) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(581) ! used 4 times + TMP_JAMP(920) = TMP_JAMP(711) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(546) ! used 4 times - TMP_JAMP(1617) = TMP_JAMP(972) - TMP_JAMP(808) ! used 4 times - TMP_JAMP(1616) = TMP_JAMP(1095) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(386) ! used 4 times - TMP_JAMP(1615) = TMP_JAMP(1096) + TMP_JAMP(1095) ! used 4 times - TMP_JAMP(1614) = AMP(1282) + AMP(1627) ! used 4 times - TMP_JAMP(1613) = AMP(75) - AMP(1629) ! used 4 times - TMP_JAMP(1612) = TMP_JAMP(946) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(940) ! used 4 times - TMP_JAMP(1611) = TMP_JAMP(1142) - TMP_JAMP(1094) ! used 4 times - TMP_JAMP(1610) = TMP_JAMP(1143) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(75) ! used 4 times - TMP_JAMP(1609) = AMP(828) - AMP(1718) ! used 4 times - TMP_JAMP(1608) = TMP_JAMP(641) - AMP(1745) ! used 4 times - TMP_JAMP(1607) = TMP_JAMP(642) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(639) ! used 4 times - TMP_JAMP(1606) = TMP_JAMP(746) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(845) ! used 4 times - TMP_JAMP(1605) = TMP_JAMP(930) - TMP_JAMP(746) ! used 4 times - TMP_JAMP(1604) = TMP_JAMP(1092) + ((0.000000000000000D+00 + TMP_JAMP(919) = TMP_JAMP(711) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(545) ! used 4 times + TMP_JAMP(918) = TMP_JAMP(710) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(828) ! used 4 times - TMP_JAMP(1603) = TMP_JAMP(1128) + TMP_JAMP(1092) ! used 4 times - TMP_JAMP(1602) = AMP(919) - AMP(1628) ! used 4 times - TMP_JAMP(1601) = TMP_JAMP(1141) - TMP_JAMP(1127) ! used 4 times - TMP_JAMP(1600) = AMP(1274) + AMP(1621) ! used 4 times - TMP_JAMP(1599) = AMP(69) - AMP(1623) ! used 4 times - TMP_JAMP(1598) = TMP_JAMP(622) + AMP(138) ! used 4 times - TMP_JAMP(1597) = TMP_JAMP(625) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1645) ! used 4 times - TMP_JAMP(1596) = TMP_JAMP(627) - TMP_JAMP(624) ! used 4 times - TMP_JAMP(1595) = TMP_JAMP(1016) - TMP_JAMP(628) ! used 4 times - TMP_JAMP(1594) = TMP_JAMP(1103) - TMP_JAMP(1095) ! used 4 times - TMP_JAMP(1593) = TMP_JAMP(1143) + TMP_JAMP(688) ! used 4 times - TMP_JAMP(1592) = AMP(911) - AMP(1622) ! used 4 times - TMP_JAMP(1591) = TMP_JAMP(619) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1646) ! used 4 times - TMP_JAMP(1590) = TMP_JAMP(627) - TMP_JAMP(618) ! used 4 times - TMP_JAMP(1589) = TMP_JAMP(1099) - TMP_JAMP(1092) ! used 4 times - TMP_JAMP(1588) = TMP_JAMP(1147) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(616) ! used 4 times - TMP_JAMP(1587) = TMP_JAMP(1147) + TMP_JAMP(1115) ! used 4 times - TMP_JAMP(1586) = TMP_JAMP(607) - AMP(425) ! used 4 times - TMP_JAMP(1585) = TMP_JAMP(608) - AMP(345) ! used 4 times - TMP_JAMP(1584) = TMP_JAMP(609) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1112) ! used 4 times - TMP_JAMP(1583) = TMP_JAMP(611) + TMP_JAMP(609) ! used 4 times - TMP_JAMP(1582) = TMP_JAMP(611) - TMP_JAMP(610) ! used 4 times - TMP_JAMP(1581) = TMP_JAMP(629) - TMP_JAMP(620) ! used 4 times - TMP_JAMP(1580) = TMP_JAMP(807) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(804) ! used 4 times - TMP_JAMP(1579) = TMP_JAMP(1123) - TMP_JAMP(615) ! used 4 times - TMP_JAMP(1578) = TMP_JAMP(1139) - TMP_JAMP(614) ! used 4 times - TMP_JAMP(1577) = TMP_JAMP(1142) - TMP_JAMP(1141) ! used 4 times - TMP_JAMP(1576) = TMP_JAMP(1145) - TMP_JAMP(640) ! used 4 times - TMP_JAMP(1575) = AMP(1477) + AMP(1834) ! used 4 times - TMP_JAMP(1574) = AMP(1141) - AMP(1836) ! used 4 times - TMP_JAMP(1573) = AMP(1114) + AMP(1510) ! used 4 times - TMP_JAMP(1572) = AMP(949) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1477) ! used 4 times - TMP_JAMP(1571) = AMP(78) - AMP(1512) ! used 4 times - TMP_JAMP(1570) = TMP_JAMP(612) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(951) ! used 4 times - TMP_JAMP(1569) = TMP_JAMP(613) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(949) ! used 4 times - TMP_JAMP(1568) = TMP_JAMP(626) - AMP(134) ! used 4 times - TMP_JAMP(1567) = TMP_JAMP(685) + AMP(78) ! used 4 times - TMP_JAMP(1566) = TMP_JAMP(689) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(685) ! used 4 times - TMP_JAMP(1565) = TMP_JAMP(694) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(684) ! used 4 times - TMP_JAMP(1564) = TMP_JAMP(1086) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(613) ! used 4 times - TMP_JAMP(1563) = TMP_JAMP(1088) - TMP_JAMP(1087) ! used 4 times - TMP_JAMP(1562) = TMP_JAMP(1090) - TMP_JAMP(689) ! used 4 times - TMP_JAMP(1561) = TMP_JAMP(1090) - TMP_JAMP(1089) ! used 4 times - TMP_JAMP(1560) = TMP_JAMP(590) + AMP(1045) ! used 4 times - TMP_JAMP(1559) = TMP_JAMP(591) + AMP(499) ! used 4 times - TMP_JAMP(1558) = TMP_JAMP(611) - TMP_JAMP(592) ! used 4 times - TMP_JAMP(1557) = TMP_JAMP(1116) + TMP_JAMP(596) ! used 4 times - TMP_JAMP(1556) = TMP_JAMP(1138) + TMP_JAMP(595) ! used 4 times - TMP_JAMP(1555) = TMP_JAMP(1144) - TMP_JAMP(659) ! used 4 times - TMP_JAMP(1554) = AMP(1668) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1701) ! used 4 times - TMP_JAMP(1553) = AMP(1666) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1699) ! used 4 times - TMP_JAMP(1552) = AMP(1479) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1666) ! used 4 times - TMP_JAMP(1551) = AMP(617) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1668) ! used 4 times - TMP_JAMP(1550) = AMP(589) - AMP(1511) ! used 4 times - TMP_JAMP(1549) = TMP_JAMP(593) - AMP(1479) ! used 4 times - TMP_JAMP(1548) = TMP_JAMP(594) - AMP(617) ! used 4 times - TMP_JAMP(1547) = TMP_JAMP(668) + AMP(589) ! used 4 times - TMP_JAMP(1546) = TMP_JAMP(673) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(668) ! used 4 times - TMP_JAMP(1545) = TMP_JAMP(1083) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(593) ! used 4 times - TMP_JAMP(1544) = TMP_JAMP(1084) - TMP_JAMP(673) ! used 4 times - TMP_JAMP(1543) = TMP_JAMP(1085) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(594) ! used 4 times - TMP_JAMP(1542) = TMP_JAMP(1089) - TMP_JAMP(1083) ! used 4 times - TMP_JAMP(1541) = TMP_JAMP(1090) + TMP_JAMP(1084) ! used 4 times - TMP_JAMP(1540) = AMP(1431) + AMP(1747) ! used 4 times - TMP_JAMP(1539) = AMP(584) - AMP(1749) ! used 4 times - TMP_JAMP(1538) = TMP_JAMP(578) - AMP(516) ! used 4 times - TMP_JAMP(1537) = TMP_JAMP(580) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1723) ! used 4 times - TMP_JAMP(1536) = TMP_JAMP(592) - TMP_JAMP(579) ! used 4 times - TMP_JAMP(1535) = TMP_JAMP(662) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(657) ! used 4 times - TMP_JAMP(1534) = TMP_JAMP(969) - TMP_JAMP(582) ! used 4 times - TMP_JAMP(1533) = TMP_JAMP(1125) - TMP_JAMP(1124) ! used 4 times - TMP_JAMP(1532) = AMP(914) - AMP(1748) ! used 4 times - TMP_JAMP(1531) = TMP_JAMP(575) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1724) ! used 4 times - TMP_JAMP(1530) = TMP_JAMP(643) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(638) ! used 4 times - TMP_JAMP(1529) = TMP_JAMP(1127) - TMP_JAMP(1094) ! used 4 times - TMP_JAMP(1528) = TMP_JAMP(1146) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(573) ! used 4 times - TMP_JAMP(1527) = TMP_JAMP(1146) - TMP_JAMP(1110) ! used 4 times - TMP_JAMP(1526) = TMP_JAMP(569) - AMP(363) ! used 4 times - TMP_JAMP(1525) = TMP_JAMP(583) - TMP_JAMP(576) ! used 4 times - TMP_JAMP(1524) = TMP_JAMP(609) + TMP_JAMP(579) ! used 4 times - TMP_JAMP(1523) = TMP_JAMP(1113) - TMP_JAMP(572) ! used 4 times - TMP_JAMP(1522) = AMP(1219) - AMP(1835) ! used 4 times - TMP_JAMP(1521) = AMP(950) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1219) ! used 4 times - TMP_JAMP(1520) = AMP(531) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1725) ! used 4 times - TMP_JAMP(1519) = TMP_JAMP(571) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(950) ! used 4 times - TMP_JAMP(1518) = TMP_JAMP(581) + AMP(531) ! used 4 times - TMP_JAMP(1517) = TMP_JAMP(1081) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(571) ! used 4 times - TMP_JAMP(1516) = TMP_JAMP(1082) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(581) ! used 4 times - TMP_JAMP(1515) = TMP_JAMP(1082) - TMP_JAMP(1081) ! used 4 times - TMP_JAMP(1514) = TMP_JAMP(1087) - TMP_JAMP(1084) ! used 4 times - TMP_JAMP(1513) = TMP_JAMP(1088) + TMP_JAMP(1081) ! used 4 times - TMP_JAMP(1512) = TMP_JAMP(559) - AMP(1208) ! used 4 times - TMP_JAMP(1511) = TMP_JAMP(560) - AMP(103) ! used 4 times - TMP_JAMP(1510) = TMP_JAMP(1111) + TMP_JAMP(564) ! used 4 times - TMP_JAMP(1509) = TMP_JAMP(1152) + TMP_JAMP(563) ! used 4 times - TMP_JAMP(1508) = AMP(1584) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1590) ! used 4 times - TMP_JAMP(1507) = AMP(1582) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1588) ! used 4 times - TMP_JAMP(1506) = TMP_JAMP(561) + AMP(1217) ! used 4 times - TMP_JAMP(1505) = TMP_JAMP(562) + AMP(129) ! used 4 times - TMP_JAMP(1504) = TMP_JAMP(1080) + TMP_JAMP(1079) ! used 4 times - TMP_JAMP(1503) = TMP_JAMP(1082) - TMP_JAMP(1079) ! used 4 times - TMP_JAMP(1502) = TMP_JAMP(1090) + TMP_JAMP(1080) ! used 4 times - TMP_JAMP(1501) = AMP(1429) + AMP(1855) ! used 4 times - TMP_JAMP(1500) = AMP(1108) - AMP(1857) ! used 4 times - TMP_JAMP(1499) = TMP_JAMP(550) - AMP(673) ! used 4 times - TMP_JAMP(1498) = TMP_JAMP(552) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(787) ! used 4 times - TMP_JAMP(1497) = TMP_JAMP(923) - TMP_JAMP(553) ! used 4 times - TMP_JAMP(1496) = AMP(1276) - AMP(1856) ! used 4 times - TMP_JAMP(1495) = TMP_JAMP(547) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(788) ! used 4 times - TMP_JAMP(1494) = TMP_JAMP(1161) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(546) ! used 4 times - TMP_JAMP(1493) = TMP_JAMP(1161) - TMP_JAMP(1106) ! used 4 times - TMP_JAMP(1492) = TMP_JAMP(542) + AMP(658) ! used 4 times - TMP_JAMP(1491) = TMP_JAMP(554) - TMP_JAMP(548) ! used 4 times - TMP_JAMP(1490) = TMP_JAMP(1135) + TMP_JAMP(545) ! used 4 times - TMP_JAMP(1489) = AMP(1667) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1700) ! used 4 times - TMP_JAMP(1488) = AMP(776) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1667) ! used 4 times - TMP_JAMP(1487) = AMP(689) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(789) ! used 4 times - TMP_JAMP(1486) = TMP_JAMP(544) - AMP(776) ! used 4 times - TMP_JAMP(1485) = TMP_JAMP(551) + AMP(689) ! used 4 times - TMP_JAMP(1484) = TMP_JAMP(1077) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(544) ! used 4 times - TMP_JAMP(1483) = TMP_JAMP(1078) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(551) ! used 4 times - TMP_JAMP(1482) = TMP_JAMP(1085) + TMP_JAMP(1077) ! used 4 times - TMP_JAMP(1481) = TMP_JAMP(1087) - TMP_JAMP(1078) ! used 4 times - TMP_JAMP(1480) = TMP_JAMP(535) - AMP(764) ! used 4 times - TMP_JAMP(1479) = TMP_JAMP(1153) + TMP_JAMP(537) ! used 4 times - TMP_JAMP(1478) = AMP(1583) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1589) ! used 4 times - TMP_JAMP(1477) = TMP_JAMP(536) + AMP(773) ! used 4 times - TMP_JAMP(1476) = TMP_JAMP(1080) + TMP_JAMP(1076) ! used 4 times - TMP_JAMP(1475) = AMP(471) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1881) ! used 4 times - TMP_JAMP(1474) = AMP(398) + AMP(469) ! used 4 times - TMP_JAMP(1473) = AMP(49) - AMP(1560) ! used 4 times - TMP_JAMP(1472) = TMP_JAMP(518) - AMP(62) ! used 4 times - TMP_JAMP(1471) = TMP_JAMP(519) + AMP(365) ! used 4 times - TMP_JAMP(1470) = TMP_JAMP(532) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(520) ! used 4 times - TMP_JAMP(1469) = TMP_JAMP(892) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(49) ! used 4 times - TMP_JAMP(1468) = TMP_JAMP(896) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1184) ! used 4 times - TMP_JAMP(1467) = TMP_JAMP(1017) - TMP_JAMP(525) ! used 4 times - TMP_JAMP(1466) = TMP_JAMP(1075) + TMP_JAMP(892) ! used 4 times - TMP_JAMP(1465) = TMP_JAMP(1075) + TMP_JAMP(1074) ! used 4 times - TMP_JAMP(1464) = TMP_JAMP(1112) + TMP_JAMP(528) ! used 4 times - TMP_JAMP(1463) = TMP_JAMP(1157) - TMP_JAMP(1121) ! used 4 times - TMP_JAMP(1462) = AMP(1773) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1800) ! used 4 times - TMP_JAMP(1461) = AMP(1023) + AMP(1771) ! used 4 times - TMP_JAMP(1460) = AMP(740) - AMP(1559) ! used 4 times - TMP_JAMP(1459) = TMP_JAMP(508) - AMP(666) ! used 4 times - TMP_JAMP(1458) = TMP_JAMP(516) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(509) ! used 4 times - TMP_JAMP(1457) = TMP_JAMP(877) + ((0.000000000000000D+00 + TMP_JAMP(917) = TMP_JAMP(710) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(914) ! used 4 times + TMP_JAMP(916) = TMP_JAMP(709) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(845) ! used 4 times + TMP_JAMP(915) = TMP_JAMP(709) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(846) ! used 4 times + TMP_JAMP(914) = TMP_JAMP(708) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(919) ! used 4 times + TMP_JAMP(913) = TMP_JAMP(708) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(911) ! used 4 times + TMP_JAMP(912) = TMP_JAMP(707) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(617) ! used 4 times + TMP_JAMP(911) = TMP_JAMP(707) - TMP_JAMP(706) ! used 4 times + TMP_JAMP(910) = TMP_JAMP(707) + TMP_JAMP(701) ! used 4 times + TMP_JAMP(909) = TMP_JAMP(707) - TMP_JAMP(705) ! used 4 times + TMP_JAMP(908) = TMP_JAMP(706) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(589) ! used 4 times + TMP_JAMP(907) = TMP_JAMP(706) - TMP_JAMP(705) ! used 4 times + TMP_JAMP(906) = TMP_JAMP(705) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(531) ! used 4 times + TMP_JAMP(905) = TMP_JAMP(704) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(671) ! used 4 times + TMP_JAMP(904) = TMP_JAMP(704) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(784) ! used 4 times + TMP_JAMP(903) = TMP_JAMP(703) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(673) ! used 4 times + TMP_JAMP(902) = TMP_JAMP(702) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(707) ! used 4 times + TMP_JAMP(901) = TMP_JAMP(702) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(691) ! used 4 times + TMP_JAMP(900) = TMP_JAMP(701) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(776) ! used 4 times + TMP_JAMP(899) = TMP_JAMP(701) - TMP_JAMP(700) ! used 4 times + TMP_JAMP(898) = TMP_JAMP(701) - TMP_JAMP(699) ! used 4 times + TMP_JAMP(897) = TMP_JAMP(700) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(689) ! used 4 times + TMP_JAMP(896) = TMP_JAMP(700) - TMP_JAMP(699) ! used 4 times + TMP_JAMP(895) = TMP_JAMP(699) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(773) ! used 4 times + TMP_JAMP(894) = TMP_JAMP(698) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(666) ! used 4 times + TMP_JAMP(893) = TMP_JAMP(698) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(743) ! used 4 times + TMP_JAMP(892) = TMP_JAMP(697) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(740) ! used 4 times - TMP_JAMP(1456) = TMP_JAMP(1073) + TMP_JAMP(877) ! used 4 times - TMP_JAMP(1455) = TMP_JAMP(1075) + TMP_JAMP(1073) ! used 4 times - TMP_JAMP(1454) = TMP_JAMP(1108) + TMP_JAMP(512) ! used 4 times - TMP_JAMP(1453) = TMP_JAMP(1154) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(507) ! used 4 times - TMP_JAMP(1452) = TMP_JAMP(1154) - TMP_JAMP(1114) ! used 4 times - TMP_JAMP(1451) = AMP(470) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1880) ! used 4 times - TMP_JAMP(1450) = TMP_JAMP(501) + AMP(383) ! used 4 times - TMP_JAMP(1449) = TMP_JAMP(782) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(543) ! used 4 times - TMP_JAMP(1448) = TMP_JAMP(865) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(543) ! used 4 times - TMP_JAMP(1447) = TMP_JAMP(865) - TMP_JAMP(782) ! used 4 times - TMP_JAMP(1446) = TMP_JAMP(1072) + TMP_JAMP(782) ! used 4 times - TMP_JAMP(1445) = TMP_JAMP(1074) - TMP_JAMP(1073) ! used 4 times - TMP_JAMP(1444) = TMP_JAMP(1096) + TMP_JAMP(505) ! used 4 times - TMP_JAMP(1443) = AMP(1270) + AMP(1618) ! used 4 times - TMP_JAMP(1442) = AMP(57) - AMP(1620) ! used 4 times - TMP_JAMP(1441) = TMP_JAMP(1070) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1270) ! used 4 times - TMP_JAMP(1440) = TMP_JAMP(1072) - TMP_JAMP(1070) ! used 4 times - TMP_JAMP(1439) = TMP_JAMP(1075) + TMP_JAMP(1071) ! used 4 times - TMP_JAMP(1438) = TMP_JAMP(1093) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(57) ! used 4 times - TMP_JAMP(1437) = TMP_JAMP(1093) - TMP_JAMP(1071) ! used 4 times - TMP_JAMP(1436) = TMP_JAMP(1150) + TMP_JAMP(1093) ! used 4 times - TMP_JAMP(1435) = AMP(1772) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1799) ! used 4 times - TMP_JAMP(1434) = TMP_JAMP(491) - AMP(825) ! used 4 times - TMP_JAMP(1433) = TMP_JAMP(719) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(570) ! used 4 times - TMP_JAMP(1432) = TMP_JAMP(835) - TMP_JAMP(719) ! used 4 times - TMP_JAMP(1431) = TMP_JAMP(1069) - TMP_JAMP(719) ! used 4 times - TMP_JAMP(1430) = TMP_JAMP(1074) - TMP_JAMP(1069) ! used 4 times - TMP_JAMP(1429) = TMP_JAMP(1128) + TMP_JAMP(494) ! used 4 times - TMP_JAMP(1428) = AMP(907) - AMP(1619) ! used 4 times - TMP_JAMP(1427) = TMP_JAMP(1071) + TMP_JAMP(1068) ! used 4 times - TMP_JAMP(1426) = AMP(1262) + AMP(1612) ! used 4 times - TMP_JAMP(1425) = TMP_JAMP(1070) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1262) ! used 4 times - TMP_JAMP(1424) = TMP_JAMP(1071) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(51) ! used 4 times - TMP_JAMP(1423) = AMP(899) - AMP(1613) ! used 4 times - TMP_JAMP(1422) = TMP_JAMP(1068) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(899) ! used 4 times - TMP_JAMP(1421) = TMP_JAMP(1069) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(864) ! used 4 times - TMP_JAMP(1420) = TMP_JAMP(1070) - TMP_JAMP(1068) ! used 4 times - TMP_JAMP(1419) = AMP(1192) + AMP(1564) ! used 4 times - TMP_JAMP(1418) = AMP(60) - AMP(1566) ! used 4 times - TMP_JAMP(1417) = TMP_JAMP(1074) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1192) ! used 4 times - TMP_JAMP(1416) = TMP_JAMP(1075) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(60) ! used 4 times - TMP_JAMP(1415) = TMP_JAMP(1079) - TMP_JAMP(1074) ! used 4 times - TMP_JAMP(1414) = TMP_JAMP(1080) - TMP_JAMP(1075) ! used 4 times - TMP_JAMP(1413) = TMP_JAMP(1086) - TMP_JAMP(1081) ! used 4 times - TMP_JAMP(1412) = TMP_JAMP(1089) + TMP_JAMP(1080) ! used 4 times - TMP_JAMP(1411) = TMP_JAMP(1072) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(704) ! used 4 times - TMP_JAMP(1410) = AMP(748) - AMP(1565) ! used 4 times - TMP_JAMP(1409) = TMP_JAMP(1073) + ((-0.000000000000000D+00, + TMP_JAMP(891) = TMP_JAMP(697) + ((-0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(748) ! used 4 times - TMP_JAMP(1408) = TMP_JAMP(1076) - TMP_JAMP(1073) ! used 4 times - TMP_JAMP(1407) = TMP_JAMP(1083) - TMP_JAMP(1077) ! used 4 times - TMP_JAMP(1406) = AMP(1410) + AMP(1801) ! used 4 times - TMP_JAMP(1405) = AMP(743) - AMP(1803) ! used 4 times - TMP_JAMP(1404) = TMP_JAMP(484) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1798) ! used 4 times - TMP_JAMP(1403) = TMP_JAMP(485) - AMP(354) ! used 4 times - TMP_JAMP(1402) = TMP_JAMP(511) - AMP(743) ! used 4 times - TMP_JAMP(1401) = TMP_JAMP(513) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(511) ! used 4 times - TMP_JAMP(1400) = TMP_JAMP(531) - TMP_JAMP(515) ! used 4 times - TMP_JAMP(1399) = TMP_JAMP(1021) + TMP_JAMP(488) ! used 4 times - TMP_JAMP(1398) = TMP_JAMP(1067) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(513) ! used 4 times - TMP_JAMP(1397) = AMP(902) - AMP(1802) ! used 4 times - TMP_JAMP(1396) = TMP_JAMP(496) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(492) ! used 4 times - TMP_JAMP(1395) = TMP_JAMP(1067) + TMP_JAMP(1066) ! used 4 times - TMP_JAMP(1394) = TMP_JAMP(1091) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(849) ! used 4 times - TMP_JAMP(1393) = TMP_JAMP(1091) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(609) ! used 4 times - TMP_JAMP(1392) = TMP_JAMP(1091) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1066) ! used 4 times - TMP_JAMP(1391) = TMP_JAMP(1101) - TMP_JAMP(1091) ! used 4 times - TMP_JAMP(1390) = TMP_JAMP(1129) - TMP_JAMP(1126) ! used 4 times - TMP_JAMP(1389) = TMP_JAMP(1066) - AMP(834) ! used 4 times - TMP_JAMP(1388) = TMP_JAMP(1067) + AMP(690) ! used 4 times - TMP_JAMP(1387) = TMP_JAMP(1078) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(690) ! used 4 times - TMP_JAMP(1386) = TMP_JAMP(1078) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1067) ! used 4 times - TMP_JAMP(1385) = TMP_JAMP(1079) - TMP_JAMP(1076) ! used 4 times - TMP_JAMP(1384) = TMP_JAMP(1088) - TMP_JAMP(1078) ! used 4 times - TMP_JAMP(1383) = AMP(1130) + AMP(1522) ! used 4 times - TMP_JAMP(1382) = AMP(115) - AMP(1524) ! used 4 times - TMP_JAMP(1381) = TMP_JAMP(486) + AMP(1151) ! used 4 times - TMP_JAMP(1380) = TMP_JAMP(524) - AMP(61) ! used 4 times - TMP_JAMP(1379) = TMP_JAMP(527) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(524) ! used 4 times - TMP_JAMP(1378) = TMP_JAMP(1064) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(527) ! used 4 times - TMP_JAMP(1377) = TMP_JAMP(1102) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1130) ! used 4 times - TMP_JAMP(1376) = TMP_JAMP(1102) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1065) ! used 4 times - TMP_JAMP(1375) = AMP(1139) + AMP(1528) ! used 4 times - TMP_JAMP(1374) = AMP(127) - AMP(1530) ! used 4 times - TMP_JAMP(1373) = TMP_JAMP(1087) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1139) ! used 4 times - TMP_JAMP(1372) = TMP_JAMP(1087) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1065) ! used 4 times - TMP_JAMP(1371) = TMP_JAMP(1090) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(127) ! used 4 times - TMP_JAMP(1370) = TMP_JAMP(1090) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1064) ! used 4 times - TMP_JAMP(1369) = AMP(1408) + AMP(1882) ! used 4 times - TMP_JAMP(1368) = AMP(1186) - AMP(1884) ! used 4 times - TMP_JAMP(1367) = TMP_JAMP(478) + AMP(512) ! used 4 times - TMP_JAMP(1366) = TMP_JAMP(521) + AMP(1186) ! used 4 times - TMP_JAMP(1365) = TMP_JAMP(529) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(521) ! used 4 times - TMP_JAMP(1364) = TMP_JAMP(989) - TMP_JAMP(480) ! used 4 times - TMP_JAMP(1363) = TMP_JAMP(1063) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(529) ! used 4 times - TMP_JAMP(1362) = AMP(1264) - AMP(1883) ! used 4 times - TMP_JAMP(1361) = TMP_JAMP(502) + AMP(1264) ! used 4 times - TMP_JAMP(1360) = TMP_JAMP(506) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(502) ! used 4 times - TMP_JAMP(1359) = TMP_JAMP(1062) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(506) ! used 4 times - TMP_JAMP(1358) = TMP_JAMP(1063) + TMP_JAMP(1062) ! used 4 times - TMP_JAMP(1357) = TMP_JAMP(1130) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(592) ! used 4 times - TMP_JAMP(1356) = TMP_JAMP(1130) - TMP_JAMP(1098) ! used 4 times - TMP_JAMP(1355) = TMP_JAMP(1062) - AMP(532) ! used 4 times - TMP_JAMP(1354) = TMP_JAMP(1063) + AMP(530) ! used 4 times - TMP_JAMP(1353) = TMP_JAMP(1082) + ((-0.000000000000000D+00 + TMP_JAMP(890) = TMP_JAMP(696) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(705) ! used 4 times + TMP_JAMP(889) = TMP_JAMP(696) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(704) ! used 4 times + TMP_JAMP(888) = TMP_JAMP(695) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(825) ! used 4 times + TMP_JAMP(887) = TMP_JAMP(695) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(902) ! used 4 times + TMP_JAMP(886) = TMP_JAMP(694) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(863) ! used 4 times + TMP_JAMP(885) = TMP_JAMP(694) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(864) ! used 4 times + TMP_JAMP(884) = TMP_JAMP(693) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(907) ! used 4 times + TMP_JAMP(883) = TMP_JAMP(693) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(899) ! used 4 times + TMP_JAMP(882) = TMP_JAMP(692) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(512) ! used 4 times + TMP_JAMP(881) = TMP_JAMP(691) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(514) ! used 4 times + TMP_JAMP(880) = TMP_JAMP(691) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(530) ! used 4 times - TMP_JAMP(1352) = TMP_JAMP(1082) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1063) ! used 4 times - TMP_JAMP(1351) = TMP_JAMP(1085) + TMP_JAMP(1082) ! used 4 times - TMP_JAMP(1350) = AMP(625) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(628) ! used 4 times - TMP_JAMP(1349) = AMP(605) - AMP(1523) ! used 4 times - TMP_JAMP(1348) = TMP_JAMP(479) - AMP(625) ! used 4 times - TMP_JAMP(1347) = TMP_JAMP(1061) - TMP_JAMP(479) ! used 4 times - TMP_JAMP(1346) = TMP_JAMP(1064) + TMP_JAMP(1061) ! used 4 times - TMP_JAMP(1345) = AMP(614) - AMP(1529) ! used 4 times - TMP_JAMP(1344) = TMP_JAMP(1084) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(614) ! used 4 times - TMP_JAMP(1343) = TMP_JAMP(1084) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1061) ! used 4 times - TMP_JAMP(1342) = AMP(985) + AMP(1648) ! used 4 times - TMP_JAMP(1341) = AMP(481) - AMP(1650) ! used 4 times - TMP_JAMP(1340) = AMP(336) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1014) ! used 4 times - TMP_JAMP(1339) = AMP(334) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1012) ! used 4 times - TMP_JAMP(1338) = TMP_JAMP(461) + AMP(331) ! used 4 times - TMP_JAMP(1337) = TMP_JAMP(462) + AMP(325) ! used 4 times - TMP_JAMP(1336) = TMP_JAMP(809) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(481) ! used 4 times - TMP_JAMP(1335) = TMP_JAMP(810) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(985) ! used 4 times - TMP_JAMP(1334) = TMP_JAMP(1058) + TMP_JAMP(810) ! used 4 times - TMP_JAMP(1333) = TMP_JAMP(1060) + TMP_JAMP(809) ! used 4 times - TMP_JAMP(1332) = TMP_JAMP(1060) - TMP_JAMP(1059) ! used 4 times - TMP_JAMP(1331) = TMP_JAMP(1121) + TMP_JAMP(473) ! used 4 times - TMP_JAMP(1330) = TMP_JAMP(1122) + TMP_JAMP(470) ! used 4 times - TMP_JAMP(1329) = AMP(963) + AMP(1762) ! used 4 times - TMP_JAMP(1328) = AMP(648) - AMP(1764) ! used 4 times - TMP_JAMP(1327) = AMP(640) - AMP(1649) ! used 4 times - TMP_JAMP(1326) = TMP_JAMP(790) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(640) ! used 4 times - TMP_JAMP(1325) = TMP_JAMP(1056) + TMP_JAMP(790) ! used 4 times - TMP_JAMP(1324) = TMP_JAMP(1059) - TMP_JAMP(1055) ! used 4 times - TMP_JAMP(1323) = TMP_JAMP(1060) + TMP_JAMP(1056) ! used 4 times - TMP_JAMP(1322) = TMP_JAMP(1105) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(963) ! used 4 times - TMP_JAMP(1321) = TMP_JAMP(1105) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(484) ! used 4 times - TMP_JAMP(1320) = TMP_JAMP(1105) + TMP_JAMP(1055) ! used 4 times - TMP_JAMP(1319) = TMP_JAMP(1106) + ((0.000000000000000D+00, + TMP_JAMP(879) = TMP_JAMP(690) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(548) ! used 4 times + TMP_JAMP(878) = TMP_JAMP(690) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(532) ! used 4 times + TMP_JAMP(877) = TMP_JAMP(689) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(494) ! used 4 times + TMP_JAMP(876) = TMP_JAMP(689) - TMP_JAMP(688) ! used 4 times + TMP_JAMP(875) = TMP_JAMP(689) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(493) ! used 4 times + TMP_JAMP(874) = TMP_JAMP(688) + TMP_JAMP(686) ! used 4 times + TMP_JAMP(873) = TMP_JAMP(688) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(492) ! used 4 times + TMP_JAMP(872) = TMP_JAMP(687) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(648) ! used 4 times - TMP_JAMP(1318) = TMP_JAMP(1106) + TMP_JAMP(1057) ! used 4 times - TMP_JAMP(1317) = TMP_JAMP(1109) - TMP_JAMP(1105) ! used 4 times - TMP_JAMP(1316) = AMP(335) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1013) ! used 4 times - TMP_JAMP(1315) = TMP_JAMP(449) + AMP(328) ! used 4 times - TMP_JAMP(1314) = TMP_JAMP(865) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(653) ! used 4 times - TMP_JAMP(1313) = TMP_JAMP(1054) - TMP_JAMP(865) ! used 4 times - TMP_JAMP(1312) = TMP_JAMP(1058) - TMP_JAMP(1056) ! used 4 times - TMP_JAMP(1311) = TMP_JAMP(1104) + TMP_JAMP(453) ! used 4 times - TMP_JAMP(1310) = AMP(972) + AMP(1708) ! used 4 times - TMP_JAMP(1309) = AMP(489) - AMP(1710) ! used 4 times - TMP_JAMP(1308) = TMP_JAMP(1054) - TMP_JAMP(1052) ! used 4 times - TMP_JAMP(1307) = TMP_JAMP(1097) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(972) ! used 4 times - TMP_JAMP(1306) = TMP_JAMP(1097) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(579) ! used 4 times - TMP_JAMP(1305) = TMP_JAMP(1097) + TMP_JAMP(1052) ! used 4 times - TMP_JAMP(1304) = TMP_JAMP(1098) + ((0.000000000000000D+00, + TMP_JAMP(871) = TMP_JAMP(687) + TMP_JAMP(686) ! used 4 times + TMP_JAMP(870) = TMP_JAMP(687) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(642) ! used 4 times + TMP_JAMP(869) = TMP_JAMP(686) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(651) ! used 4 times + TMP_JAMP(868) = TMP_JAMP(685) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(653) ! used 4 times + TMP_JAMP(867) = TMP_JAMP(685) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(652) ! used 4 times + TMP_JAMP(866) = TMP_JAMP(684) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(489) ! used 4 times - TMP_JAMP(1303) = TMP_JAMP(1098) + TMP_JAMP(1053) ! used 4 times - TMP_JAMP(1302) = TMP_JAMP(1100) - TMP_JAMP(1097) ! used 4 times - TMP_JAMP(1301) = AMP(807) - AMP(1763) ! used 4 times - TMP_JAMP(1300) = TMP_JAMP(707) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(610) ! used 4 times - TMP_JAMP(1299) = TMP_JAMP(766) - TMP_JAMP(707) ! used 4 times - TMP_JAMP(1298) = TMP_JAMP(1050) - TMP_JAMP(707) ! used 4 times - TMP_JAMP(1297) = TMP_JAMP(1051) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(807) ! used 4 times - TMP_JAMP(1296) = TMP_JAMP(1057) + TMP_JAMP(1051) ! used 4 times - TMP_JAMP(1295) = TMP_JAMP(1058) - TMP_JAMP(1050) ! used 4 times - TMP_JAMP(1294) = AMP(810) - AMP(1709) ! used 4 times - TMP_JAMP(1293) = TMP_JAMP(1053) + TMP_JAMP(1049) ! used 4 times - TMP_JAMP(1292) = AMP(994) + AMP(1702) ! used 4 times - TMP_JAMP(1291) = AMP(483) - AMP(1704) ! used 4 times - TMP_JAMP(1290) = TMP_JAMP(1052) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(994) ! used 4 times - TMP_JAMP(1289) = TMP_JAMP(1053) + ((-0.000000000000000D+00 + TMP_JAMP(865) = TMP_JAMP(684) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(483) ! used 4 times - TMP_JAMP(1288) = TMP_JAMP(1059) + TMP_JAMP(1053) ! used 4 times - TMP_JAMP(1287) = AMP(799) - AMP(1703) ! used 4 times - TMP_JAMP(1286) = TMP_JAMP(1049) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(799) ! used 4 times - TMP_JAMP(1285) = TMP_JAMP(1055) - TMP_JAMP(1051) ! used 4 times - TMP_JAMP(1284) = TMP_JAMP(1050) + ((0.000000000000000D+00, + TMP_JAMP(864) = TMP_JAMP(683) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(650) ! used 4 times + TMP_JAMP(863) = TMP_JAMP(683) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(812) ! used 4 times - TMP_JAMP(1283) = TMP_JAMP(1052) - TMP_JAMP(1049) ! used 4 times - TMP_JAMP(1282) = AMP(981) + AMP(1654) ! used 4 times - TMP_JAMP(1281) = AMP(492) - AMP(1656) ! used 4 times - TMP_JAMP(1280) = TMP_JAMP(1058) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(981) ! used 4 times - TMP_JAMP(1279) = TMP_JAMP(1083) - TMP_JAMP(1058) ! used 4 times - TMP_JAMP(1278) = TMP_JAMP(1085) - TMP_JAMP(1060) ! used 4 times - TMP_JAMP(1277) = TMP_JAMP(1086) + TMP_JAMP(1083) ! used 4 times - TMP_JAMP(1276) = TMP_JAMP(1054) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(652) ! used 4 times - TMP_JAMP(1275) = TMP_JAMP(1057) + TMP_JAMP(1054) ! used 4 times - TMP_JAMP(1274) = AMP(651) - AMP(1655) ! used 4 times - TMP_JAMP(1273) = TMP_JAMP(1077) - TMP_JAMP(1056) ! used 4 times - TMP_JAMP(1272) = AMP(642) - AMP(1758) ! used 4 times - TMP_JAMP(1271) = TMP_JAMP(1055) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1003) ! used 4 times - TMP_JAMP(1270) = TMP_JAMP(1067) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1057) ! used 4 times - TMP_JAMP(1269) = AMP(801) - AMP(1757) ! used 4 times - TMP_JAMP(1268) = TMP_JAMP(1066) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1051) ! used 4 times - TMP_JAMP(1267) = TMP_JAMP(1059) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(493) ! used 4 times - TMP_JAMP(1266) = TMP_JAMP(1061) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1059) ! used 4 times - TMP_JAMP(1265) = TMP_JAMP(1065) - TMP_JAMP(1061) ! used 4 times - TMP_JAMP(1264) = AMP(1001) + AMP(1009) ! used 4 times - TMP_JAMP(1263) = AMP(983) - AMP(1011) ! used 4 times - TMP_JAMP(1262) = TMP_JAMP(471) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(465) ! used 4 times - TMP_JAMP(1261) = TMP_JAMP(474) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(463) ! used 4 times - TMP_JAMP(1260) = TMP_JAMP(1048) - TMP_JAMP(1047) ! used 4 times - TMP_JAMP(1259) = AMP(992) - AMP(1010) ! used 4 times - TMP_JAMP(1258) = TMP_JAMP(450) + AMP(992) ! used 4 times - TMP_JAMP(1257) = TMP_JAMP(454) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(450) ! used 4 times - TMP_JAMP(1256) = TMP_JAMP(1046) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(454) ! used 4 times - TMP_JAMP(1255) = TMP_JAMP(1048) + TMP_JAMP(1046) ! used 4 times - TMP_JAMP(1254) = TMP_JAMP(1046) + AMP(142) ! used 4 times - TMP_JAMP(1253) = TMP_JAMP(1047) + TMP_JAMP(1046) ! used 4 times - TMP_JAMP(1252) = TMP_JAMP(1089) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(133) ! used 4 times - TMP_JAMP(1251) = TMP_JAMP(1089) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1048) ! used 4 times - TMP_JAMP(1250) = TMP_JAMP(1064) + AMP(148) ! used 4 times - TMP_JAMP(1249) = TMP_JAMP(1064) + TMP_JAMP(1047) ! used 4 times - TMP_JAMP(1248) = AMP(266) + AMP(289) ! used 4 times - TMP_JAMP(1247) = AMP(186) - AMP(291) ! used 4 times - TMP_JAMP(1246) = AMP(172) + AMP(175) ! used 4 times - TMP_JAMP(1245) = AMP(166) - AMP(177) ! used 4 times - TMP_JAMP(1244) = TMP_JAMP(745) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(186) ! used 4 times - TMP_JAMP(1243) = TMP_JAMP(747) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(266) ! used 4 times - TMP_JAMP(1242) = TMP_JAMP(1043) - TMP_JAMP(747) ! used 4 times - TMP_JAMP(1241) = TMP_JAMP(1044) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(195) ! used 4 times - TMP_JAMP(1240) = TMP_JAMP(1045) - TMP_JAMP(745) ! used 4 times - TMP_JAMP(1239) = TMP_JAMP(1045) + TMP_JAMP(1044) ! used 4 times - TMP_JAMP(1238) = TMP_JAMP(1114) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(172) ! used 4 times - TMP_JAMP(1237) = TMP_JAMP(1114) - TMP_JAMP(1041) ! used 4 times - TMP_JAMP(1236) = TMP_JAMP(1115) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(166) ! used 4 times - TMP_JAMP(1235) = TMP_JAMP(1115) - TMP_JAMP(1042) ! used 4 times - TMP_JAMP(1234) = AMP(239) + AMP(310) ! used 4 times - TMP_JAMP(1233) = AMP(206) - AMP(312) ! used 4 times - TMP_JAMP(1232) = AMP(204) - AMP(290) ! used 4 times - TMP_JAMP(1231) = TMP_JAMP(727) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(204) ! used 4 times - TMP_JAMP(1230) = TMP_JAMP(1040) - TMP_JAMP(727) ! used 4 times - TMP_JAMP(1229) = TMP_JAMP(1045) + TMP_JAMP(1040) ! used 4 times - TMP_JAMP(1228) = TMP_JAMP(1109) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(239) ! used 4 times - TMP_JAMP(1227) = TMP_JAMP(1109) + TMP_JAMP(1038) ! used 4 times - TMP_JAMP(1226) = TMP_JAMP(1110) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(206) ! used 4 times - TMP_JAMP(1225) = TMP_JAMP(1110) + TMP_JAMP(1039) ! used 4 times - TMP_JAMP(1224) = AMP(169) - AMP(176) ! used 4 times - TMP_JAMP(1223) = TMP_JAMP(835) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(213) ! used 4 times - TMP_JAMP(1222) = TMP_JAMP(1036) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(169) ! used 4 times - TMP_JAMP(1221) = TMP_JAMP(1037) - TMP_JAMP(835) ! used 4 times - TMP_JAMP(1220) = TMP_JAMP(1037) + TMP_JAMP(1036) ! used 4 times - TMP_JAMP(1219) = TMP_JAMP(1040) + TMP_JAMP(1037) ! used 4 times - TMP_JAMP(1218) = TMP_JAMP(1042) + TMP_JAMP(1036) ! used 4 times - TMP_JAMP(1217) = TMP_JAMP(1043) - TMP_JAMP(1040) ! used 4 times - TMP_JAMP(1216) = AMP(248) + AMP(301) ! used 4 times - TMP_JAMP(1215) = AMP(188) - AMP(303) ! used 4 times - TMP_JAMP(1214) = TMP_JAMP(1100) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(248) ! used 4 times - TMP_JAMP(1213) = TMP_JAMP(1100) + TMP_JAMP(1034) ! used 4 times - TMP_JAMP(1212) = TMP_JAMP(1101) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(188) ! used 4 times - TMP_JAMP(1211) = TMP_JAMP(1101) + TMP_JAMP(1035) ! used 4 times - TMP_JAMP(1210) = AMP(224) - AMP(311) ! used 4 times - TMP_JAMP(1209) = TMP_JAMP(766) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(229) ! used 4 times - TMP_JAMP(1208) = TMP_JAMP(1032) + TMP_JAMP(766) ! used 4 times - TMP_JAMP(1207) = TMP_JAMP(1033) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(224) ! used 4 times - TMP_JAMP(1206) = TMP_JAMP(1039) + TMP_JAMP(1033) ! used 4 times - TMP_JAMP(1205) = TMP_JAMP(1043) + TMP_JAMP(1032) ! used 4 times - TMP_JAMP(1204) = AMP(227) - AMP(302) ! used 4 times - TMP_JAMP(1203) = TMP_JAMP(1035) + TMP_JAMP(1031) ! used 4 times - TMP_JAMP(1202) = AMP(275) + AMP(298) ! used 4 times - TMP_JAMP(1201) = AMP(184) - AMP(300) ! used 4 times - TMP_JAMP(1200) = TMP_JAMP(1034) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(275) ! used 4 times - TMP_JAMP(1199) = TMP_JAMP(1035) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(184) ! used 4 times - TMP_JAMP(1198) = TMP_JAMP(1041) - TMP_JAMP(1036) ! used 4 times - TMP_JAMP(1197) = TMP_JAMP(1044) - TMP_JAMP(1035) ! used 4 times - TMP_JAMP(1196) = AMP(222) - AMP(299) ! used 4 times - TMP_JAMP(1195) = TMP_JAMP(1031) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(222) ! used 4 times - TMP_JAMP(1194) = TMP_JAMP(1038) - TMP_JAMP(1033) ! used 4 times - TMP_JAMP(1193) = TMP_JAMP(1032) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(231) ! used 4 times - TMP_JAMP(1192) = TMP_JAMP(1034) - TMP_JAMP(1031) ! used 4 times - TMP_JAMP(1191) = TMP_JAMP(1042) + TMP_JAMP(1032) ! used 4 times - TMP_JAMP(1190) = AMP(257) + AMP(292) ! used 4 times - TMP_JAMP(1189) = AMP(191) - AMP(294) ! used 4 times - TMP_JAMP(1188) = TMP_JAMP(1086) + TMP_JAMP(1043) ! used 4 times - TMP_JAMP(1187) = TMP_JAMP(1088) + TMP_JAMP(1045) ! used 4 times - TMP_JAMP(1186) = TMP_JAMP(1037) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(211) ! used 4 times - TMP_JAMP(1185) = TMP_JAMP(1039) - TMP_JAMP(1037) ! used 4 times - TMP_JAMP(1184) = AMP(209) - AMP(293) ! used 4 times - TMP_JAMP(1183) = TMP_JAMP(1081) + TMP_JAMP(1040) ! used 4 times - TMP_JAMP(1182) = AMP(284) + AMP(307) ! used 4 times - TMP_JAMP(1181) = AMP(202) - AMP(309) ! used 4 times - TMP_JAMP(1180) = TMP_JAMP(1038) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(284) ! used 4 times - TMP_JAMP(1179) = TMP_JAMP(1041) + TMP_JAMP(1038) ! used 4 times - TMP_JAMP(1178) = TMP_JAMP(1063) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1039) ! used 4 times - TMP_JAMP(1177) = AMP(220) - AMP(308) ! used 4 times - TMP_JAMP(1176) = TMP_JAMP(1062) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1033) ! used 4 times - TMP_JAMP(1175) = TMP_JAMP(1065) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1044) ! used 4 times - TMP_JAMP(1174) = AMP(278) + AMP(313) ! used 4 times - TMP_JAMP(1173) = AMP(260) - AMP(315) ! used 4 times - TMP_JAMP(1172) = TMP_JAMP(1047) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1041) ! used 4 times - TMP_JAMP(1171) = TMP_JAMP(1048) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1042) ! used 4 times - TMP_JAMP(1170) = AMP(269) - AMP(314) ! used 4 times - TMP_JAMP(1169) = TMP_JAMP(1046) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1036) ! used 4 times - TMP_JAMP(1905) = TMP_JAMP(1821) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1513) ! used 4 times - TMP_JAMP(1904) = TMP_JAMP(1781) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1575) ! used 4 times - TMP_JAMP(1903) = TMP_JAMP(1739) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(854) ! used 4 times - TMP_JAMP(1902) = TMP_JAMP(1735) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1731) ! used 4 times - TMP_JAMP(1901) = TMP_JAMP(1721) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1716) ! used 4 times - TMP_JAMP(1900) = TMP_JAMP(1686) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1632) ! used 4 times - TMP_JAMP(1899) = TMP_JAMP(1675) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1828) ! used 4 times - TMP_JAMP(1898) = TMP_JAMP(1645) - TMP_JAMP(1642) ! used 4 times - TMP_JAMP(1897) = TMP_JAMP(1646) + TMP_JAMP(1641) ! used 4 times - TMP_JAMP(1896) = TMP_JAMP(1630) + TMP_JAMP(1627) ! used 4 times - TMP_JAMP(1895) = TMP_JAMP(1617) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(655) ! used 4 times - TMP_JAMP(1894) = TMP_JAMP(1605) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(636) ! used 4 times - TMP_JAMP(1893) = TMP_JAMP(1593) - AMP(1437) ! used 4 times - TMP_JAMP(1892) = TMP_JAMP(1594) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(623) ! used 4 times - TMP_JAMP(1891) = TMP_JAMP(1598) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1595) ! used 4 times - TMP_JAMP(1890) = TMP_JAMP(1589) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(617) ! used 4 times - TMP_JAMP(1889) = TMP_JAMP(1585) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1578) ! used 4 times - TMP_JAMP(1888) = TMP_JAMP(1586) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1579) ! used 4 times - TMP_JAMP(1887) = TMP_JAMP(1568) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1647) ! used 4 times - TMP_JAMP(1886) = TMP_JAMP(1573) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1565) ! used 4 times - TMP_JAMP(1885) = TMP_JAMP(1574) - TMP_JAMP(1570) ! used 4 times - TMP_JAMP(1884) = TMP_JAMP(1555) + AMP(1280) ! used 4 times - TMP_JAMP(1883) = TMP_JAMP(1559) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1556) ! used 4 times - TMP_JAMP(1882) = TMP_JAMP(1560) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1557) ! used 4 times - TMP_JAMP(1881) = TMP_JAMP(1538) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1534) ! used 4 times - TMP_JAMP(1880) = TMP_JAMP(1529) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(574) ! used 4 times - TMP_JAMP(1879) = TMP_JAMP(1525) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(570) ! used 4 times - TMP_JAMP(1878) = TMP_JAMP(1526) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1523) ! used 4 times - TMP_JAMP(1877) = TMP_JAMP(1511) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1509) ! used 4 times - TMP_JAMP(1876) = TMP_JAMP(1512) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1510) ! used 4 times - TMP_JAMP(1875) = TMP_JAMP(1507) + TMP_JAMP(1506) ! used 4 times - TMP_JAMP(1874) = TMP_JAMP(1508) - TMP_JAMP(1505) ! used 4 times - TMP_JAMP(1873) = TMP_JAMP(1499) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1497) ! used 4 times - TMP_JAMP(1872) = TMP_JAMP(1491) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(543) ! used 4 times - TMP_JAMP(1871) = TMP_JAMP(1492) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1490) ! used 4 times - TMP_JAMP(1870) = TMP_JAMP(1480) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1479) ! used 4 times - TMP_JAMP(1869) = TMP_JAMP(1478) - TMP_JAMP(1477) ! used 4 times - TMP_JAMP(1868) = TMP_JAMP(1468) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1558) ! used 4 times - TMP_JAMP(1867) = TMP_JAMP(1472) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1467) ! used 4 times - TMP_JAMP(1866) = TMP_JAMP(1475) - TMP_JAMP(1471) ! used 4 times - TMP_JAMP(1865) = TMP_JAMP(1462) + TMP_JAMP(1459) ! used 4 times - TMP_JAMP(1864) = TMP_JAMP(1451) - TMP_JAMP(1450) ! used 4 times - TMP_JAMP(1863) = TMP_JAMP(1435) + TMP_JAMP(1434) ! used 4 times - TMP_JAMP(1862) = TMP_JAMP(1424) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1614) ! used 4 times - TMP_JAMP(1861) = TMP_JAMP(1403) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1399) ! used 4 times - TMP_JAMP(1860) = TMP_JAMP(1404) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1400) ! used 4 times - TMP_JAMP(1859) = TMP_JAMP(1397) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1396) ! used 4 times - TMP_JAMP(1858) = TMP_JAMP(1381) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1777) ! used 4 times - TMP_JAMP(1857) = TMP_JAMP(1367) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1364) ! used 4 times - TMP_JAMP(1856) = TMP_JAMP(1339) + TMP_JAMP(1338) ! used 4 times - TMP_JAMP(1855) = TMP_JAMP(1340) - TMP_JAMP(1337) ! used 4 times - TMP_JAMP(1854) = TMP_JAMP(1316) - TMP_JAMP(1315) ! used 4 times - TMP_JAMP(1853) = TMP_JAMP(1281) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1278) ! used 4 times - TMP_JAMP(1852) = TMP_JAMP(1274) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1273) ! used 4 times - TMP_JAMP(1851) = TMP_JAMP(1271) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1756) ! used 4 times - TMP_JAMP(1850) = TMP_JAMP(1272) + TMP_JAMP(1270) ! used 4 times - TMP_JAMP(1849) = TMP_JAMP(1269) + TMP_JAMP(1268) ! used 4 times - TMP_JAMP(1848) = TMP_JAMP(1263) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1262) ! used 4 times - TMP_JAMP(1847) = TMP_JAMP(1264) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1261) ! used 4 times - TMP_JAMP(1846) = TMP_JAMP(1189) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1187) ! used 4 times - TMP_JAMP(1845) = TMP_JAMP(1190) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1188) ! used 4 times - TMP_JAMP(1844) = TMP_JAMP(1184) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1183) ! used 4 times - TMP_JAMP(1843) = TMP_JAMP(1181) + TMP_JAMP(1178) ! used 4 times - TMP_JAMP(1842) = TMP_JAMP(1177) + TMP_JAMP(1176) ! used 4 times - TMP_JAMP(1841) = TMP_JAMP(1175) + AMP(193) ! used 4 times - TMP_JAMP(1840) = TMP_JAMP(1173) - TMP_JAMP(1171) ! used 4 times - TMP_JAMP(1839) = TMP_JAMP(1174) + TMP_JAMP(1172) ! used 4 times - TMP_JAMP(1838) = TMP_JAMP(1170) - TMP_JAMP(1169) ! used 4 times - TMP_JAMP(1928) = TMP_JAMP(1897) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1637) ! used 4 times - TMP_JAMP(1927) = TMP_JAMP(1898) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1636) ! used 4 times - TMP_JAMP(1926) = TMP_JAMP(1896) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1626) ! used 4 times - TMP_JAMP(1925) = TMP_JAMP(1888) - AMP(448) ! used 4 times - TMP_JAMP(1924) = TMP_JAMP(1889) + AMP(450) ! used 4 times - TMP_JAMP(1923) = TMP_JAMP(1882) + AMP(1657) ! used 4 times - TMP_JAMP(1922) = TMP_JAMP(1883) - AMP(1659) ! used 4 times - TMP_JAMP(1921) = TMP_JAMP(1878) + AMP(449) ! used 4 times - TMP_JAMP(1920) = TMP_JAMP(1876) - AMP(1576) ! used 4 times - TMP_JAMP(1919) = TMP_JAMP(1877) + AMP(1578) ! used 4 times - TMP_JAMP(1918) = TMP_JAMP(1871) - AMP(1658) ! used 4 times - TMP_JAMP(1917) = TMP_JAMP(1870) + AMP(1577) ! used 4 times - TMP_JAMP(1916) = TMP_JAMP(1866) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1464) ! used 4 times - TMP_JAMP(1915) = TMP_JAMP(1867) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1416) ! used 4 times - TMP_JAMP(1914) = TMP_JAMP(1865) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1454) ! used 4 times - TMP_JAMP(1913) = TMP_JAMP(1864) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1444) ! used 4 times - TMP_JAMP(1912) = TMP_JAMP(1863) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1429) ! used 4 times - TMP_JAMP(1911) = TMP_JAMP(1860) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1879) ! used 4 times - TMP_JAMP(1910) = TMP_JAMP(1861) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(440) ! used 4 times - TMP_JAMP(1909) = TMP_JAMP(1857) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1068) ! used 4 times - TMP_JAMP(1908) = TMP_JAMP(1855) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1330) ! used 4 times - TMP_JAMP(1907) = TMP_JAMP(1856) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1331) ! used 4 times - TMP_JAMP(1906) = TMP_JAMP(1854) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1311) ! used 4 times - TMP_JAMP(1989) = TMP_JAMP(1167) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(528) ! used 3 times - TMP_JAMP(1988) = TMP_JAMP(1799) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1156) ! used 3 times - TMP_JAMP(1987) = TMP_JAMP(1827) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(453) ! used 3 times - TMP_JAMP(1986) = TMP_JAMP(1830) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(352) ! used 3 times - TMP_JAMP(1985) = TMP_JAMP(970) - AMP(1202) ! used 3 times - TMP_JAMP(1984) = TMP_JAMP(1166) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(909) ! used 3 times - TMP_JAMP(1983) = TMP_JAMP(1812) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(511) ! used 3 times - TMP_JAMP(1982) = TMP_JAMP(1165) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(370) ! used 3 times - TMP_JAMP(1981) = TMP_JAMP(1164) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(670) ! used 3 times - TMP_JAMP(1980) = TMP_JAMP(893) - AMP(432) ! used 3 times - TMP_JAMP(1979) = TMP_JAMP(1166) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(687) ! used 3 times - TMP_JAMP(1978) = TMP_JAMP(926) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(919) ! used 3 times - TMP_JAMP(1977) = TMP_JAMP(1737) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(864) ! used 3 times - TMP_JAMP(1976) = TMP_JAMP(1902) + TMP_JAMP(837) ! used 3 times - TMP_JAMP(1975) = TMP_JAMP(875) - AMP(1058) ! used 3 times - TMP_JAMP(1974) = TMP_JAMP(833) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(527) ! used 3 times - TMP_JAMP(1973) = TMP_JAMP(792) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(789) ! used 3 times - TMP_JAMP(1972) = TMP_JAMP(1704) - TMP_JAMP(785) ! used 3 times - TMP_JAMP(1971) = TMP_JAMP(1708) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1695) ! used 3 times - TMP_JAMP(1970) = TMP_JAMP(864) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(779) ! used 3 times - TMP_JAMP(1969) = TMP_JAMP(1690) - TMP_JAMP(1013) ! used 3 times - TMP_JAMP(1968) = TMP_JAMP(1669) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1156) ! used 3 times - TMP_JAMP(1967) = TMP_JAMP(833) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(716) ! used 3 times - TMP_JAMP(1966) = TMP_JAMP(1571) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1566) ! used 3 times - TMP_JAMP(1965) = TMP_JAMP(1581) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(610) ! used 3 times - TMP_JAMP(1964) = TMP_JAMP(1553) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1549) ! used 3 times - TMP_JAMP(1963) = TMP_JAMP(1532) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1530) ! used 3 times - TMP_JAMP(1962) = TMP_JAMP(1576) + AMP(1112) ! used 3 times - TMP_JAMP(1961) = TMP_JAMP(1522) - TMP_JAMP(1519) ! used 3 times - TMP_JAMP(1960) = TMP_JAMP(1535) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1496) ! used 3 times - TMP_JAMP(1959) = TMP_JAMP(1489) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1486) ! used 3 times - TMP_JAMP(1958) = TMP_JAMP(1554) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1548) ! used 3 times - TMP_JAMP(1957) = TMP_JAMP(1469) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1560) ! used 3 times - TMP_JAMP(1956) = TMP_JAMP(1446) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(705) ! used 3 times - TMP_JAMP(1955) = TMP_JAMP(1575) + TMP_JAMP(1569) ! used 3 times - TMP_JAMP(1954) = TMP_JAMP(864) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(675) ! used 3 times - TMP_JAMP(1953) = TMP_JAMP(1405) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1401) ! used 3 times - TMP_JAMP(1952) = TMP_JAMP(1379) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(61) ! used 3 times - TMP_JAMP(1951) = TMP_JAMP(833) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(514) ! used 3 times - TMP_JAMP(1950) = TMP_JAMP(1362) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1360) ! used 3 times - TMP_JAMP(1949) = TMP_JAMP(1368) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1365) ! used 3 times - TMP_JAMP(1948) = TMP_JAMP(1348) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(628) ! used 3 times - TMP_JAMP(1947) = TMP_JAMP(1382) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1132) ! used 3 times - TMP_JAMP(1946) = TMP_JAMP(1336) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1650) ! used 3 times - TMP_JAMP(1945) = TMP_JAMP(794) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(788) ! used 3 times - TMP_JAMP(1944) = TMP_JAMP(1326) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1649) ! used 3 times - TMP_JAMP(1943) = TMP_JAMP(1313) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(653) ! used 3 times - TMP_JAMP(1942) = TMP_JAMP(1335) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1648) ! used 3 times - TMP_JAMP(1941) = TMP_JAMP(777) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(772) ! used 3 times - TMP_JAMP(1940) = TMP_JAMP(731) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(725) ! used 3 times - TMP_JAMP(1939) = TMP_JAMP(1319) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1764) ! used 3 times - TMP_JAMP(1938) = TMP_JAMP(714) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(711) ! used 3 times - TMP_JAMP(1937) = TMP_JAMP(1377) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1522) ! used 3 times - TMP_JAMP(1936) = TMP_JAMP(1373) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1528) ! used 3 times - TMP_JAMP(1935) = TMP_JAMP(760) + AMP(136) ! used 3 times - TMP_JAMP(1934) = TMP_JAMP(1259) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1257) ! used 3 times - TMP_JAMP(1933) = TMP_JAMP(1231) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(290) ! used 3 times - TMP_JAMP(1932) = TMP_JAMP(1236) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(177) ! used 3 times - TMP_JAMP(1931) = TMP_JAMP(1243) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(289) ! used 3 times - TMP_JAMP(1930) = TMP_JAMP(1226) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(312) ! used 3 times - TMP_JAMP(1929) = TMP_JAMP(1238) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(175) ! used 3 times - TMP_JAMP(1991) = TMP_JAMP(1969) + AMP(1458) ! used 3 times - TMP_JAMP(1990) = TMP_JAMP(1935) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1644) ! used 3 times - TMP_JAMP(2641) = AMP(150) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(436) ! used 2 times - TMP_JAMP(2640) = TMP_JAMP(1831) - AMP(83) ! used 2 times - TMP_JAMP(2639) = TMP_JAMP(1836) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(415) ! used 2 times - TMP_JAMP(2638) = TMP_JAMP(1837) + AMP(150) ! used 2 times - TMP_JAMP(2637) = TMP_JAMP(1905) + AMP(349) ! used 2 times - TMP_JAMP(2636) = AMP(150) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1060) ! used 2 times - TMP_JAMP(2635) = TMP_JAMP(1814) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1802) ! used 2 times - TMP_JAMP(2634) = TMP_JAMP(1815) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1801) ! used 2 times - TMP_JAMP(2633) = TMP_JAMP(1820) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1816) ! used 2 times - TMP_JAMP(2632) = TMP_JAMP(1796) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1514) ! used 2 times - TMP_JAMP(2631) = TMP_JAMP(1798) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(369) ! used 2 times - TMP_JAMP(2630) = TMP_JAMP(1800) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1791) ! used 2 times - TMP_JAMP(2629) = TMP_JAMP(1804) + TMP_JAMP(1796) ! used 2 times - TMP_JAMP(2628) = TMP_JAMP(1905) - TMP_JAMP(1804) ! used 2 times - TMP_JAMP(2627) = TMP_JAMP(1986) + AMP(444) ! used 2 times - TMP_JAMP(2626) = TMP_JAMP(1987) + TMP_JAMP(1793) ! used 2 times - TMP_JAMP(2625) = TMP_JAMP(1989) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1988) ! used 2 times - TMP_JAMP(2624) = TMP_JAMP(931) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(92) ! used 2 times - TMP_JAMP(2623) = TMP_JAMP(945) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(938) ! used 2 times - TMP_JAMP(2622) = TMP_JAMP(1782) + AMP(1206) ! used 2 times - TMP_JAMP(2621) = TMP_JAMP(1784) - AMP(1460) ! used 2 times - TMP_JAMP(2620) = TMP_JAMP(1785) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(931) ! used 2 times - TMP_JAMP(2619) = TMP_JAMP(1787) - TMP_JAMP(1785) ! used 2 times - TMP_JAMP(2618) = TMP_JAMP(1788) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1786) ! used 2 times - TMP_JAMP(2617) = TMP_JAMP(1833) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1787) ! used 2 times - TMP_JAMP(2616) = TMP_JAMP(1904) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1833) ! used 2 times - TMP_JAMP(2615) = AMP(1065) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1765) ! used 2 times - TMP_JAMP(2614) = TMP_JAMP(1772) - AMP(1065) ! used 2 times - TMP_JAMP(2613) = TMP_JAMP(1774) + TMP_JAMP(1773) ! used 2 times - TMP_JAMP(2612) = TMP_JAMP(1776) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1767) ! used 2 times - TMP_JAMP(2611) = TMP_JAMP(1777) - AMP(1121) ! used 2 times - TMP_JAMP(2610) = TMP_JAMP(1777) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(686) ! used 2 times - TMP_JAMP(2609) = TMP_JAMP(1814) + TMP_JAMP(1779) ! used 2 times - TMP_JAMP(2608) = TMP_JAMP(1983) - TMP_JAMP(1772) ! used 2 times - TMP_JAMP(2607) = TMP_JAMP(1984) - TMP_JAMP(1905) ! used 2 times - TMP_JAMP(2606) = AMP(686) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(761) ! used 2 times - TMP_JAMP(2605) = TMP_JAMP(1152) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(898) ! used 2 times - TMP_JAMP(2604) = TMP_JAMP(1904) - TMP_JAMP(1152) ! used 2 times - TMP_JAMP(2603) = AMP(82) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(144) ! used 2 times - TMP_JAMP(2602) = TMP_JAMP(886) - TMP_JAMP(883) ! used 2 times - TMP_JAMP(2601) = TMP_JAMP(1763) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(367) ! used 2 times - TMP_JAMP(2600) = TMP_JAMP(1820) + TMP_JAMP(1155) ! used 2 times - TMP_JAMP(2599) = TMP_JAMP(1836) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1756) ! used 2 times - TMP_JAMP(2598) = TMP_JAMP(1982) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1762) ! used 2 times - TMP_JAMP(2597) = TMP_JAMP(1988) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1755) ! used 2 times - TMP_JAMP(2596) = TMP_JAMP(1746) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(144) ! used 2 times - TMP_JAMP(2595) = TMP_JAMP(1752) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1746) ! used 2 times - TMP_JAMP(2594) = TMP_JAMP(1761) - TMP_JAMP(869) ! used 2 times - TMP_JAMP(2593) = TMP_JAMP(1779) - TMP_JAMP(1751) ! used 2 times - TMP_JAMP(2592) = TMP_JAMP(1816) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1803) ! used 2 times - TMP_JAMP(2591) = TMP_JAMP(1981) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1752) ! used 2 times - TMP_JAMP(2590) = TMP_JAMP(853) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(351) ! used 2 times - TMP_JAMP(2589) = TMP_JAMP(855) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(435) ! used 2 times - TMP_JAMP(2588) = TMP_JAMP(860) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(792) ! used 2 times - TMP_JAMP(2587) = TMP_JAMP(974) + ((-0.000000000000000D+00 + TMP_JAMP(862) = TMP_JAMP(682) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(807) ! used 4 times + TMP_JAMP(861) = TMP_JAMP(682) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(801) ! used 4 times + TMP_JAMP(860) = TMP_JAMP(681) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(810) ! used 4 times + TMP_JAMP(859) = TMP_JAMP(681) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(799) ! used 4 times + TMP_JAMP(858) = TMP_JAMP(676) - AMP(614) ! used 4 times + TMP_JAMP(857) = TMP_JAMP(675) + AMP(625) ! used 4 times + TMP_JAMP(856) = TMP_JAMP(668) - AMP(690) ! used 4 times + TMP_JAMP(855) = AMP(475) - AMP(477) ! used 4 times + TMP_JAMP(854) = AMP(474) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(477) ! used 4 times + TMP_JAMP(853) = AMP(472) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(475) ! used 4 times + TMP_JAMP(852) = AMP(593) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(622) ! used 4 times + TMP_JAMP(851) = AMP(622) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(627) ! used 4 times + TMP_JAMP(850) = AMP(678) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(686) ! used 4 times + TMP_JAMP(849) = AMP(678) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(767) ! used 4 times + TMP_JAMP(848) = AMP(476) + AMP(477) ! used 4 times + TMP_JAMP(847) = AMP(473) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(476) ! used 4 times + TMP_JAMP(846) = AMP(534) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(536) ! used 4 times + TMP_JAMP(845) = AMP(695) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(708) ! used 4 times + TMP_JAMP(844) = AMP(536) + AMP(695) ! used 4 times + TMP_JAMP(843) = AMP(693) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(695) ! used 4 times + TMP_JAMP(842) = AMP(536) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(549) ! used 4 times + TMP_JAMP(841) = AMP(923) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(941) ! used 4 times + TMP_JAMP(840) = AMP(932) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(941) ! used 4 times + TMP_JAMP(839) = AMP(475) + AMP(476) ! used 4 times + TMP_JAMP(838) = AMP(481) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(536) ! used 4 times + TMP_JAMP(837) = AMP(640) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(695) ! used 4 times + TMP_JAMP(836) = AMP(811) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(941) ! used 4 times + TMP_JAMP(1062) = TMP_JAMP(1037) - TMP_JAMP(857) ! used 4 times + TMP_JAMP(1061) = TMP_JAMP(993) + TMP_JAMP(762) ! used 4 times + TMP_JAMP(1060) = TMP_JAMP(979) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(788) ! used 4 times + TMP_JAMP(1059) = TMP_JAMP(959) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(795) ! used 4 times + TMP_JAMP(1058) = TMP_JAMP(958) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(795) ! used 4 times + TMP_JAMP(1057) = TMP_JAMP(952) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(788) ! used 4 times + TMP_JAMP(1056) = TMP_JAMP(940) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(752) ! used 4 times + TMP_JAMP(1055) = TMP_JAMP(932) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(762) ! used 4 times + TMP_JAMP(1054) = TMP_JAMP(929) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(750) ! used 4 times + TMP_JAMP(1053) = TMP_JAMP(914) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(753) ! used 4 times + TMP_JAMP(1052) = TMP_JAMP(913) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(754) ! used 4 times + TMP_JAMP(1051) = TMP_JAMP(904) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(793) ! used 4 times + TMP_JAMP(1050) = TMP_JAMP(895) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(793) ! used 4 times + TMP_JAMP(1049) = TMP_JAMP(883) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(754) ! used 4 times + TMP_JAMP(1048) = TMP_JAMP(882) - TMP_JAMP(744) ! used 4 times + TMP_JAMP(1047) = TMP_JAMP(875) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(822) ! used 4 times + TMP_JAMP(1046) = TMP_JAMP(867) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(793) ! used 4 times + TMP_JAMP(1045) = TMP_JAMP(864) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(836) ! used 4 times + TMP_JAMP(1044) = TMP_JAMP(863) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(751) ! used 4 times + TMP_JAMP(1065) = TMP_JAMP(944) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(781) ! used 3 times + TMP_JAMP(1064) = TMP_JAMP(943) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(777) ! used 3 times + TMP_JAMP(1063) = TMP_JAMP(893) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(667) ! used 3 times + TMP_JAMP(1304) = TMP_JAMP(1065) + TMP_JAMP(1064) ! used 2 times + TMP_JAMP(1303) = TMP_JAMP(1065) - TMP_JAMP(981) ! used 2 times + TMP_JAMP(1302) = TMP_JAMP(1063) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(804) ! used 2 times + TMP_JAMP(1301) = TMP_JAMP(1063) - TMP_JAMP(896) ! used 2 times + TMP_JAMP(1300) = TMP_JAMP(1062) + TMP_JAMP(1012) ! used 2 times + TMP_JAMP(1299) = TMP_JAMP(1062) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(907) ! used 2 times + TMP_JAMP(1298) = TMP_JAMP(1061) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1054) ! used 2 times + TMP_JAMP(1297) = TMP_JAMP(1059) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1025) ! used 2 times + TMP_JAMP(1296) = TMP_JAMP(1058) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1031) ! used 2 times + TMP_JAMP(1295) = TMP_JAMP(1057) + TMP_JAMP(1055) ! used 2 times + TMP_JAMP(1294) = TMP_JAMP(1056) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(996) ! used 2 times + TMP_JAMP(1293) = TMP_JAMP(1055) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(993) ! used 2 times + TMP_JAMP(1292) = TMP_JAMP(1054) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(999) ! used 2 times + TMP_JAMP(1291) = TMP_JAMP(1053) + TMP_JAMP(933) ! used 2 times + TMP_JAMP(1290) = TMP_JAMP(1052) + TMP_JAMP(939) ! used 2 times + TMP_JAMP(1289) = TMP_JAMP(1050) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1021) ! used 2 times + TMP_JAMP(1288) = TMP_JAMP(1049) - TMP_JAMP(939) ! used 2 times + TMP_JAMP(1287) = TMP_JAMP(1048) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1042) ! used 2 times + TMP_JAMP(1286) = TMP_JAMP(1047) - TMP_JAMP(945) ! used 2 times + TMP_JAMP(1285) = TMP_JAMP(1047) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1041) ! used 2 times + TMP_JAMP(1284) = TMP_JAMP(1046) + TMP_JAMP(895) ! used 2 times + TMP_JAMP(1283) = TMP_JAMP(1045) + TMP_JAMP(925) ! used 2 times + TMP_JAMP(1282) = TMP_JAMP(1044) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(992) ! used 2 times + TMP_JAMP(1281) = TMP_JAMP(1044) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(994) ! used 2 times + TMP_JAMP(1280) = TMP_JAMP(1043) + TMP_JAMP(1006) ! used 2 times + TMP_JAMP(1279) = TMP_JAMP(1041) + TMP_JAMP(1030) ! used 2 times + TMP_JAMP(1278) = TMP_JAMP(1040) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(984) ! used 2 times + TMP_JAMP(1277) = TMP_JAMP(1040) + TMP_JAMP(1029) ! used 2 times + TMP_JAMP(1276) = TMP_JAMP(1035) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(988) ! used 2 times + TMP_JAMP(1275) = TMP_JAMP(1031) + TMP_JAMP(1005) ! used 2 times + TMP_JAMP(1274) = TMP_JAMP(1031) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * TMP_JAMP(961) ! used 2 times - TMP_JAMP(2586) = TMP_JAMP(1744) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1740) ! used 2 times - TMP_JAMP(2585) = TMP_JAMP(1745) + TMP_JAMP(1744) ! used 2 times - TMP_JAMP(2584) = TMP_JAMP(1903) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1763) ! used 2 times - TMP_JAMP(2583) = TMP_JAMP(1987) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(853) ! used 2 times - TMP_JAMP(2582) = TMP_JAMP(1987) - TMP_JAMP(1979) ! used 2 times - TMP_JAMP(2581) = AMP(122) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1469) ! used 2 times - TMP_JAMP(2580) = AMP(95) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(122) ! used 2 times - TMP_JAMP(2579) = TMP_JAMP(939) - TMP_JAMP(838) ! used 2 times - TMP_JAMP(2578) = TMP_JAMP(1158) - AMP(1128) ! used 2 times - TMP_JAMP(2577) = TMP_JAMP(1730) + TMP_JAMP(942) ! used 2 times - TMP_JAMP(2576) = TMP_JAMP(1736) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1732) ! used 2 times - TMP_JAMP(2575) = TMP_JAMP(1976) - TMP_JAMP(1761) ! used 2 times - TMP_JAMP(2574) = AMP(1056) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1230) ! used 2 times - TMP_JAMP(2573) = TMP_JAMP(822) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(509) ! used 2 times - TMP_JAMP(2572) = TMP_JAMP(830) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1722) ! used 2 times - TMP_JAMP(2571) = TMP_JAMP(1728) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1724) ! used 2 times - TMP_JAMP(2570) = TMP_JAMP(1729) + TMP_JAMP(1728) ! used 2 times - TMP_JAMP(2569) = TMP_JAMP(1985) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1814) ! used 2 times - TMP_JAMP(2568) = AMP(122) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1472) ! used 2 times - TMP_JAMP(2567) = TMP_JAMP(811) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(602) ! used 2 times - TMP_JAMP(2566) = TMP_JAMP(1901) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1167) ! used 2 times - TMP_JAMP(2565) = AMP(378) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(390) ! used 2 times - TMP_JAMP(2564) = TMP_JAMP(795) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(417) ! used 2 times - TMP_JAMP(2563) = TMP_JAMP(795) - AMP(390) ! used 2 times - TMP_JAMP(2562) = TMP_JAMP(798) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(594) ! used 2 times - TMP_JAMP(2561) = TMP_JAMP(798) - AMP(534) ! used 2 times - TMP_JAMP(2560) = TMP_JAMP(1706) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(796) ! used 2 times - TMP_JAMP(2559) = TMP_JAMP(1715) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1712) ! used 2 times - TMP_JAMP(2558) = TMP_JAMP(1798) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1709) ! used 2 times - TMP_JAMP(2557) = TMP_JAMP(1798) + TMP_JAMP(1713) ! used 2 times - TMP_JAMP(2556) = TMP_JAMP(1989) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(800) ! used 2 times - TMP_JAMP(2555) = AMP(534) - AMP(708) ! used 2 times - TMP_JAMP(2554) = TMP_JAMP(1163) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(783) ! used 2 times - TMP_JAMP(2553) = TMP_JAMP(1903) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1769) ! used 2 times - TMP_JAMP(2552) = TMP_JAMP(1972) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(762) ! used 2 times - TMP_JAMP(2551) = TMP_JAMP(1972) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1134) ! used 2 times - TMP_JAMP(2550) = TMP_JAMP(1972) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1971) ! used 2 times - TMP_JAMP(2549) = TMP_JAMP(1973) - TMP_JAMP(1163) ! used 2 times - TMP_JAMP(2548) = AMP(380) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(390) ! used 2 times - TMP_JAMP(2547) = TMP_JAMP(1700) - TMP_JAMP(780) ! used 2 times - TMP_JAMP(2546) = TMP_JAMP(1741) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(778) ! used 2 times - TMP_JAMP(2545) = TMP_JAMP(1979) + TMP_JAMP(1970) ! used 2 times - TMP_JAMP(2544) = AMP(549) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1296) ! used 2 times - TMP_JAMP(2543) = TMP_JAMP(768) + TMP_JAMP(767) ! used 2 times - TMP_JAMP(2542) = TMP_JAMP(1737) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1162) ! used 2 times - TMP_JAMP(2541) = TMP_JAMP(1971) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1901) ! used 2 times - TMP_JAMP(2540) = TMP_JAMP(759) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1454) ! used 2 times - TMP_JAMP(2539) = TMP_JAMP(1689) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(759) ! used 2 times - TMP_JAMP(2538) = TMP_JAMP(1691) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1289) ! used 2 times - TMP_JAMP(2537) = TMP_JAMP(1715) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1689) ! used 2 times - TMP_JAMP(2536) = TMP_JAMP(1769) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(906) ! used 2 times - TMP_JAMP(2535) = TMP_JAMP(1900) - AMP(91) ! used 2 times - TMP_JAMP(2534) = TMP_JAMP(1991) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1715) ! used 2 times - TMP_JAMP(2533) = TMP_JAMP(1991) - TMP_JAMP(1904) ! used 2 times - TMP_JAMP(2532) = TMP_JAMP(749) + AMP(1636) ! used 2 times - TMP_JAMP(2531) = TMP_JAMP(1680) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(748) ! used 2 times - TMP_JAMP(2530) = TMP_JAMP(1682) - AMP(94) ! used 2 times - TMP_JAMP(2529) = AMP(1119) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1830) ! used 2 times - TMP_JAMP(2528) = AMP(830) + AMP(832) ! used 2 times - TMP_JAMP(2527) = AMP(814) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(830) ! used 2 times - TMP_JAMP(2526) = AMP(686) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1119) ! used 2 times - TMP_JAMP(2525) = AMP(686) - AMP(832) ! used 2 times - TMP_JAMP(2524) = TMP_JAMP(1673) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(736) ! used 2 times - TMP_JAMP(2523) = TMP_JAMP(1678) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(814) ! used 2 times - TMP_JAMP(2522) = TMP_JAMP(1778) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1672) ! used 2 times - TMP_JAMP(2521) = TMP_JAMP(1778) + TMP_JAMP(1678) ! used 2 times - TMP_JAMP(2520) = TMP_JAMP(1899) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(734) ! used 2 times - TMP_JAMP(2519) = TMP_JAMP(1978) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1677) ! used 2 times - TMP_JAMP(2518) = AMP(832) - AMP(866) ! used 2 times - TMP_JAMP(2517) = TMP_JAMP(721) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1205) ! used 2 times - TMP_JAMP(2516) = TMP_JAMP(1160) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(722) ! used 2 times - TMP_JAMP(2515) = TMP_JAMP(1770) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1160) ! used 2 times - TMP_JAMP(2514) = TMP_JAMP(1968) + TMP_JAMP(720) ! used 2 times - TMP_JAMP(2513) = TMP_JAMP(1968) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1783) ! used 2 times - TMP_JAMP(2512) = AMP(815) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(850) ! used 2 times - TMP_JAMP(2511) = TMP_JAMP(1664) + TMP_JAMP(717) ! used 2 times - TMP_JAMP(2510) = TMP_JAMP(1725) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(715) ! used 2 times - TMP_JAMP(2509) = TMP_JAMP(1967) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(527) ! used 2 times - TMP_JAMP(2508) = TMP_JAMP(1028) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1006) ! used 2 times - TMP_JAMP(2507) = TMP_JAMP(1159) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(709) ! used 2 times - TMP_JAMP(2506) = TMP_JAMP(1674) - TMP_JAMP(1656) ! used 2 times - TMP_JAMP(2505) = TMP_JAMP(1736) + TMP_JAMP(1679) ! used 2 times - TMP_JAMP(2504) = AMP(925) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(943) ! used 2 times - TMP_JAMP(2503) = TMP_JAMP(1653) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(925) ! used 2 times - TMP_JAMP(2502) = TMP_JAMP(1899) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(702) ! used 2 times - TMP_JAMP(2501) = TMP_JAMP(1900) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1653) ! used 2 times - TMP_JAMP(2500) = AMP(346) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(462) ! used 2 times - TMP_JAMP(2499) = AMP(65) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(80) ! used 2 times - TMP_JAMP(2498) = TMP_JAMP(681) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(346) ! used 2 times - TMP_JAMP(2497) = TMP_JAMP(1133) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(681) ! used 2 times - TMP_JAMP(2496) = TMP_JAMP(1631) + TMP_JAMP(1133) ! used 2 times - TMP_JAMP(2495) = TMP_JAMP(1638) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(678) ! used 2 times - TMP_JAMP(2494) = TMP_JAMP(1837) - TMP_JAMP(1762) ! used 2 times - TMP_JAMP(2493) = TMP_JAMP(1928) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1640) ! used 2 times - TMP_JAMP(2492) = TMP_JAMP(1986) - TMP_JAMP(1631) ! used 2 times - TMP_JAMP(2491) = TMP_JAMP(1986) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1927) ! used 2 times - TMP_JAMP(2490) = TMP_JAMP(666) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(505) ! used 2 times - TMP_JAMP(2489) = TMP_JAMP(1622) + TMP_JAMP(1131) ! used 2 times - TMP_JAMP(2488) = TMP_JAMP(1747) + AMP(1030) ! used 2 times - TMP_JAMP(2487) = TMP_JAMP(1983) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1926) ! used 2 times - TMP_JAMP(2486) = AMP(583) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(627) ! used 2 times - TMP_JAMP(2485) = AMP(546) + ((0.000000000000000D+00, + TMP_JAMP(1273) = TMP_JAMP(1030) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(899) ! used 2 times + TMP_JAMP(1272) = TMP_JAMP(1029) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(968) ! used 2 times + TMP_JAMP(1271) = TMP_JAMP(1022) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(953) ! used 2 times + TMP_JAMP(1270) = TMP_JAMP(1020) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(976) ! used 2 times + TMP_JAMP(1269) = TMP_JAMP(1020) + TMP_JAMP(992) ! used 2 times + TMP_JAMP(1268) = TMP_JAMP(1013) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(976) ! used 2 times + TMP_JAMP(1267) = TMP_JAMP(1013) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(948) ! used 2 times + TMP_JAMP(1266) = TMP_JAMP(1010) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(961) ! used 2 times + TMP_JAMP(1265) = TMP_JAMP(1010) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(956) ! used 2 times + TMP_JAMP(1264) = TMP_JAMP(1006) + TMP_JAMP(1003) ! used 2 times + TMP_JAMP(1263) = TMP_JAMP(1005) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(888) ! used 2 times + TMP_JAMP(1262) = TMP_JAMP(1004) + TMP_JAMP(995) ! used 2 times + TMP_JAMP(1261) = TMP_JAMP(1003) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(937) ! used 2 times + TMP_JAMP(1260) = TMP_JAMP(1000) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(930) ! used 2 times + TMP_JAMP(1259) = TMP_JAMP(998) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(915) ! used 2 times + TMP_JAMP(1258) = TMP_JAMP(997) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(885) ! used 2 times + TMP_JAMP(1257) = TMP_JAMP(994) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(887) ! used 2 times + TMP_JAMP(1256) = TMP_JAMP(994) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(861) ! used 2 times + TMP_JAMP(1255) = TMP_JAMP(992) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(859) ! used 2 times + TMP_JAMP(1254) = TMP_JAMP(991) - TMP_JAMP(986) ! used 2 times + TMP_JAMP(1253) = TMP_JAMP(989) - AMP(594) ! used 2 times + TMP_JAMP(1252) = TMP_JAMP(989) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(679) ! used 2 times + TMP_JAMP(1251) = TMP_JAMP(987) - TMP_JAMP(946) ! used 2 times + TMP_JAMP(1250) = TMP_JAMP(985) + TMP_JAMP(923) ! used 2 times + TMP_JAMP(1249) = TMP_JAMP(984) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(852) ! used 2 times + TMP_JAMP(1248) = TMP_JAMP(984) + TMP_JAMP(968) ! used 2 times + TMP_JAMP(1247) = TMP_JAMP(983) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(779) ! used 2 times + TMP_JAMP(1246) = TMP_JAMP(983) + TMP_JAMP(967) ! used 2 times + TMP_JAMP(1245) = TMP_JAMP(982) + TMP_JAMP(921) ! used 2 times + TMP_JAMP(1244) = TMP_JAMP(981) - TMP_JAMP(876) ! used 2 times + TMP_JAMP(1243) = TMP_JAMP(979) + AMP(509) ! used 2 times + TMP_JAMP(1242) = TMP_JAMP(978) + TMP_JAMP(851) ! used 2 times + TMP_JAMP(1241) = TMP_JAMP(976) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(786) ! used 2 times + TMP_JAMP(1240) = TMP_JAMP(976) - TMP_JAMP(877) ! used 2 times + TMP_JAMP(1239) = TMP_JAMP(975) + TMP_JAMP(971) ! used 2 times + TMP_JAMP(1238) = TMP_JAMP(974) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(830) ! used 2 times + TMP_JAMP(1237) = TMP_JAMP(974) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(671) ! used 2 times + TMP_JAMP(1236) = TMP_JAMP(973) - TMP_JAMP(966) ! used 2 times + TMP_JAMP(1235) = TMP_JAMP(972) + TMP_JAMP(954) ! used 2 times + TMP_JAMP(1234) = TMP_JAMP(969) - TMP_JAMP(905) ! used 2 times + TMP_JAMP(1233) = TMP_JAMP(968) + TMP_JAMP(850) ! used 2 times + TMP_JAMP(1232) = TMP_JAMP(967) + TMP_JAMP(905) ! used 2 times + TMP_JAMP(1231) = TMP_JAMP(967) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(775) ! used 2 times + TMP_JAMP(1230) = TMP_JAMP(963) + TMP_JAMP(871) ! used 2 times + TMP_JAMP(1229) = TMP_JAMP(960) + TMP_JAMP(849) ! used 2 times + TMP_JAMP(1228) = TMP_JAMP(960) - AMP(762) ! used 2 times + TMP_JAMP(1227) = TMP_JAMP(959) - AMP(667) ! used 2 times + TMP_JAMP(1226) = TMP_JAMP(957) + TMP_JAMP(955) ! used 2 times + TMP_JAMP(1225) = TMP_JAMP(953) + TMP_JAMP(890) ! used 2 times + TMP_JAMP(1224) = TMP_JAMP(953) + TMP_JAMP(928) ! used 2 times + TMP_JAMP(1223) = TMP_JAMP(950) - TMP_JAMP(947) ! used 2 times + TMP_JAMP(1222) = TMP_JAMP(945) - TMP_JAMP(879) ! used 2 times + TMP_JAMP(1221) = TMP_JAMP(942) + TMP_JAMP(868) ! used 2 times + TMP_JAMP(1220) = TMP_JAMP(941) - TMP_JAMP(866) ! used 2 times + TMP_JAMP(1219) = TMP_JAMP(939) - TMP_JAMP(918) ! used 2 times + TMP_JAMP(1218) = TMP_JAMP(939) + TMP_JAMP(888) ! used 2 times + TMP_JAMP(1217) = TMP_JAMP(938) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(773) ! used 2 times + TMP_JAMP(1216) = TMP_JAMP(937) + TMP_JAMP(918) ! used 2 times + TMP_JAMP(1215) = TMP_JAMP(936) - TMP_JAMP(934) ! used 2 times + TMP_JAMP(1214) = TMP_JAMP(935) - TMP_JAMP(916) ! used 2 times + TMP_JAMP(1213) = TMP_JAMP(934) - TMP_JAMP(926) ! used 2 times + TMP_JAMP(1212) = TMP_JAMP(933) - TMP_JAMP(926) ! used 2 times + TMP_JAMP(1211) = TMP_JAMP(933) - TMP_JAMP(862) ! used 2 times + TMP_JAMP(1210) = TMP_JAMP(931) - AMP(933) ! used 2 times + TMP_JAMP(1209) = TMP_JAMP(928) - TMP_JAMP(924) ! used 2 times + TMP_JAMP(1208) = TMP_JAMP(927) - TMP_JAMP(862) ! used 2 times + TMP_JAMP(1207) = TMP_JAMP(926) + AMP(921) ! used 2 times + TMP_JAMP(1206) = TMP_JAMP(924) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(840) ! used 2 times + TMP_JAMP(1205) = TMP_JAMP(924) - TMP_JAMP(884) ! used 2 times + TMP_JAMP(1204) = TMP_JAMP(923) + TMP_JAMP(918) ! used 2 times + TMP_JAMP(1203) = TMP_JAMP(923) - TMP_JAMP(919) ! used 2 times + TMP_JAMP(1202) = TMP_JAMP(922) - TMP_JAMP(920) ! used 2 times + TMP_JAMP(1201) = TMP_JAMP(922) + TMP_JAMP(917) ! used 2 times + TMP_JAMP(1200) = TMP_JAMP(922) + TMP_JAMP(908) ! used 2 times + TMP_JAMP(1199) = TMP_JAMP(921) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(826) ! used 2 times + TMP_JAMP(1198) = TMP_JAMP(920) - TMP_JAMP(851) ! used 2 times + TMP_JAMP(1197) = TMP_JAMP(919) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(779) ! used 2 times + TMP_JAMP(1196) = TMP_JAMP(919) + TMP_JAMP(901) ! used 2 times + TMP_JAMP(1195) = TMP_JAMP(917) + AMP(921) ! used 2 times + TMP_JAMP(1194) = TMP_JAMP(917) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(760) ! used 2 times + TMP_JAMP(1193) = TMP_JAMP(916) + AMP(827) ! used 2 times + TMP_JAMP(1192) = TMP_JAMP(915) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(759) ! used 2 times + TMP_JAMP(1191) = TMP_JAMP(912) - TMP_JAMP(908) ! used 2 times + TMP_JAMP(1190) = TMP_JAMP(911) + TMP_JAMP(873) ! used 2 times + TMP_JAMP(1189) = TMP_JAMP(909) - TMP_JAMP(880) ! used 2 times + TMP_JAMP(1188) = TMP_JAMP(908) - TMP_JAMP(906) ! used 2 times + TMP_JAMP(1187) = TMP_JAMP(906) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(786) ! used 2 times + TMP_JAMP(1186) = TMP_JAMP(906) - TMP_JAMP(873) ! used 2 times + TMP_JAMP(1185) = TMP_JAMP(905) - TMP_JAMP(901) ! used 2 times + TMP_JAMP(1184) = TMP_JAMP(904) + TMP_JAMP(897) ! used 2 times + TMP_JAMP(1183) = TMP_JAMP(903) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(808) ! used 2 times + TMP_JAMP(1182) = TMP_JAMP(903) + TMP_JAMP(902) ! used 2 times + TMP_JAMP(1181) = TMP_JAMP(902) + TMP_JAMP(725) ! used 2 times + TMP_JAMP(1180) = TMP_JAMP(901) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(775) ! used 2 times + TMP_JAMP(1179) = TMP_JAMP(900) - TMP_JAMP(897) ! used 2 times + TMP_JAMP(1178) = TMP_JAMP(898) + TMP_JAMP(891) ! used 2 times + TMP_JAMP(1177) = TMP_JAMP(896) + TMP_JAMP(891) ! used 2 times + TMP_JAMP(1176) = TMP_JAMP(894) + TMP_JAMP(737) ! used 2 times + TMP_JAMP(1175) = TMP_JAMP(894) + TMP_JAMP(888) ! used 2 times + TMP_JAMP(1174) = TMP_JAMP(892) - AMP(664) ! used 2 times + TMP_JAMP(1173) = TMP_JAMP(892) - TMP_JAMP(890) ! used 2 times + TMP_JAMP(1172) = TMP_JAMP(891) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(856) ! used 2 times + TMP_JAMP(1171) = TMP_JAMP(889) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(815) ! used 2 times + TMP_JAMP(1170) = TMP_JAMP(889) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(810) ! used 2 times + TMP_JAMP(1169) = TMP_JAMP(887) - TMP_JAMP(884) ! used 2 times + TMP_JAMP(1168) = TMP_JAMP(887) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(767) ! used 2 times + TMP_JAMP(1167) = TMP_JAMP(886) + AMP(824) ! used 2 times + TMP_JAMP(1166) = TMP_JAMP(886) - TMP_JAMP(884) ! used 2 times + TMP_JAMP(1165) = TMP_JAMP(885) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(766) ! used 2 times + TMP_JAMP(1164) = TMP_JAMP(881) - AMP(496) ! used 2 times + TMP_JAMP(1163) = TMP_JAMP(881) + TMP_JAMP(879) ! used 2 times + TMP_JAMP(1162) = TMP_JAMP(880) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(858) ! used 2 times + TMP_JAMP(1161) = TMP_JAMP(878) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(835) ! used 2 times + TMP_JAMP(1160) = TMP_JAMP(878) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(829) ! used 2 times + TMP_JAMP(1159) = TMP_JAMP(877) + TMP_JAMP(865) ! used 2 times + TMP_JAMP(1158) = TMP_JAMP(876) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(838) ! used 2 times + TMP_JAMP(1157) = TMP_JAMP(872) + AMP(646) ! used 2 times + TMP_JAMP(1156) = TMP_JAMP(870) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(804) ! used 2 times + TMP_JAMP(1155) = TMP_JAMP(870) + TMP_JAMP(861) ! used 2 times + TMP_JAMP(1154) = TMP_JAMP(870) + TMP_JAMP(869) ! used 2 times + TMP_JAMP(1153) = TMP_JAMP(869) + AMP(649) ! used 2 times + TMP_JAMP(1152) = TMP_JAMP(868) + AMP(637) ! used 2 times + TMP_JAMP(1151) = TMP_JAMP(866) + AMP(487) ! used 2 times + TMP_JAMP(1150) = TMP_JAMP(865) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(786) ! used 2 times + TMP_JAMP(1149) = TMP_JAMP(865) - AMP(491) ! used 2 times + TMP_JAMP(1148) = TMP_JAMP(862) - AMP(806) ! used 2 times + TMP_JAMP(1147) = TMP_JAMP(861) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(767) ! used 2 times + TMP_JAMP(1146) = TMP_JAMP(860) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(763) ! used 2 times + TMP_JAMP(1145) = TMP_JAMP(860) - AMP(809) ! used 2 times + TMP_JAMP(1144) = TMP_JAMP(859) - AMP(806) ! used 2 times + TMP_JAMP(1143) = TMP_JAMP(859) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(760) ! used 2 times + TMP_JAMP(1142) = TMP_JAMP(858) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(490) ! used 2 times + TMP_JAMP(1141) = TMP_JAMP(856) - TMP_JAMP(804) ! used 2 times + TMP_JAMP(1140) = TMP_JAMP(856) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(650) ! used 2 times + TMP_JAMP(1139) = TMP_JAMP(854) - TMP_JAMP(853) ! used 2 times + TMP_JAMP(1138) = TMP_JAMP(854) + TMP_JAMP(847) ! used 2 times + TMP_JAMP(1137) = TMP_JAMP(849) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(805) ! used 2 times + TMP_JAMP(1136) = TMP_JAMP(843) - TMP_JAMP(802) ! used 2 times + TMP_JAMP(1135) = TMP_JAMP(842) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(820) ! used 2 times + TMP_JAMP(1134) = TMP_JAMP(841) + TMP_JAMP(756) ! used 2 times + TMP_JAMP(1133) = TMP_JAMP(838) + TMP_JAMP(678) ! used 2 times + TMP_JAMP(1132) = TMP_JAMP(838) + TMP_JAMP(789) ! used 2 times + TMP_JAMP(1131) = TMP_JAMP(837) + TMP_JAMP(828) ! used 2 times + TMP_JAMP(1130) = TMP_JAMP(837) + TMP_JAMP(670) ! used 2 times + TMP_JAMP(1129) = TMP_JAMP(833) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(479) ! used 2 times + TMP_JAMP(1128) = TMP_JAMP(832) - TMP_JAMP(782) ! used 2 times + TMP_JAMP(1127) = TMP_JAMP(827) - TMP_JAMP(772) ! used 2 times + TMP_JAMP(1126) = TMP_JAMP(825) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(508) ! used 2 times + TMP_JAMP(1125) = TMP_JAMP(824) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(742) ! used 2 times + TMP_JAMP(1124) = TMP_JAMP(823) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(583) ! used 2 times - TMP_JAMP(2484) = TMP_JAMP(654) - AMP(466) ! used 2 times - TMP_JAMP(2483) = TMP_JAMP(1619) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(656) ! used 2 times - TMP_JAMP(2482) = TMP_JAMP(1620) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(546) ! used 2 times - TMP_JAMP(2481) = TMP_JAMP(1713) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(387) ! used 2 times - TMP_JAMP(2480) = TMP_JAMP(1713) - TMP_JAMP(1621) ! used 2 times - TMP_JAMP(2479) = TMP_JAMP(1792) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(654) ! used 2 times - TMP_JAMP(2478) = TMP_JAMP(1895) - TMP_JAMP(1792) ! used 2 times - TMP_JAMP(2477) = TMP_JAMP(1926) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1620) ! used 2 times - TMP_JAMP(2476) = TMP_JAMP(1927) + TMP_JAMP(1926) ! used 2 times - TMP_JAMP(2475) = AMP(110) + AMP(1629) ! used 2 times - TMP_JAMP(2474) = TMP_JAMP(646) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(74) ! used 2 times - TMP_JAMP(2473) = TMP_JAMP(1163) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(644) ! used 2 times - TMP_JAMP(2472) = TMP_JAMP(1610) - TMP_JAMP(1148) ! used 2 times - TMP_JAMP(2471) = TMP_JAMP(1611) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(645) ! used 2 times - TMP_JAMP(2470) = TMP_JAMP(1614) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1611) ! used 2 times - TMP_JAMP(2469) = TMP_JAMP(1705) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1163) ! used 2 times - TMP_JAMP(2468) = TMP_JAMP(1895) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1705) ! used 2 times - TMP_JAMP(2467) = TMP_JAMP(1928) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1612) ! used 2 times - TMP_JAMP(2466) = AMP(1109) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1152) ! used 2 times - TMP_JAMP(2465) = AMP(845) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1109) ! used 2 times - TMP_JAMP(2464) = TMP_JAMP(1607) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(845) ! used 2 times - TMP_JAMP(2463) = TMP_JAMP(1608) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(637) ! used 2 times - TMP_JAMP(2462) = TMP_JAMP(1678) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(827) ! used 2 times - TMP_JAMP(2461) = TMP_JAMP(1678) - TMP_JAMP(1609) ! used 2 times - TMP_JAMP(2460) = TMP_JAMP(1927) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1607) ! used 2 times - TMP_JAMP(2459) = TMP_JAMP(1927) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1894) ! used 2 times - TMP_JAMP(2458) = TMP_JAMP(1160) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(630) ! used 2 times - TMP_JAMP(2457) = TMP_JAMP(1601) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(631) ! used 2 times - TMP_JAMP(2456) = TMP_JAMP(1602) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1601) ! used 2 times - TMP_JAMP(2455) = TMP_JAMP(1668) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1160) ! used 2 times - TMP_JAMP(2454) = TMP_JAMP(1894) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1668) ! used 2 times - TMP_JAMP(2453) = TMP_JAMP(621) + AMP(388) ! used 2 times - TMP_JAMP(2452) = TMP_JAMP(653) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(648) ! used 2 times - TMP_JAMP(2451) = TMP_JAMP(1619) - AMP(385) ! used 2 times - TMP_JAMP(2450) = TMP_JAMP(1619) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1596) ! used 2 times - TMP_JAMP(2449) = TMP_JAMP(1619) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1600) ! used 2 times - TMP_JAMP(2448) = TMP_JAMP(1639) + AMP(64) ! used 2 times - TMP_JAMP(2447) = TMP_JAMP(1639) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1599) ! used 2 times - TMP_JAMP(2446) = TMP_JAMP(1712) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(621) ! used 2 times - TMP_JAMP(2445) = TMP_JAMP(1712) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1597) ! used 2 times - TMP_JAMP(2444) = TMP_JAMP(1762) - TMP_JAMP(888) ! used 2 times - TMP_JAMP(2443) = TMP_JAMP(1892) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1621) ! used 2 times - TMP_JAMP(2442) = TMP_JAMP(1893) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1891) ! used 2 times - TMP_JAMP(2441) = TMP_JAMP(616) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1042) ! used 2 times - TMP_JAMP(2440) = TMP_JAMP(616) - AMP(829) ! used 2 times - TMP_JAMP(2439) = TMP_JAMP(634) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(632) ! used 2 times - TMP_JAMP(2438) = TMP_JAMP(1591) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1587) ! used 2 times - TMP_JAMP(2437) = TMP_JAMP(1599) + TMP_JAMP(1592) ! used 2 times - TMP_JAMP(2436) = TMP_JAMP(1608) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1590) ! used 2 times - TMP_JAMP(2435) = TMP_JAMP(1608) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1592) ! used 2 times - TMP_JAMP(2434) = TMP_JAMP(1817) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1587) ! used 2 times - TMP_JAMP(2433) = TMP_JAMP(1890) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1609) ! used 2 times - TMP_JAMP(2432) = TMP_JAMP(1891) + TMP_JAMP(1817) ! used 2 times - TMP_JAMP(2431) = TMP_JAMP(1893) - TMP_JAMP(1608) ! used 2 times - TMP_JAMP(2430) = AMP(846) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(913) ! used 2 times - TMP_JAMP(2429) = AMP(426) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(945) ! used 2 times - TMP_JAMP(2428) = TMP_JAMP(1580) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(388) ! used 2 times - TMP_JAMP(2427) = TMP_JAMP(1592) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(913) ! used 2 times - TMP_JAMP(2426) = TMP_JAMP(1600) - TMP_JAMP(1592) ! used 2 times - TMP_JAMP(2425) = TMP_JAMP(1643) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(348) ! used 2 times - TMP_JAMP(2424) = TMP_JAMP(1925) + TMP_JAMP(1924) ! used 2 times - TMP_JAMP(2423) = TMP_JAMP(649) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(77) ! used 2 times - TMP_JAMP(2422) = TMP_JAMP(651) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(649) ! used 2 times - TMP_JAMP(2421) = TMP_JAMP(1591) + AMP(945) ! used 2 times - TMP_JAMP(2420) = TMP_JAMP(1599) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(651) ! used 2 times - TMP_JAMP(2419) = TMP_JAMP(1607) + AMP(1116) ! used 2 times - TMP_JAMP(2418) = TMP_JAMP(1607) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(846) ! used 2 times - TMP_JAMP(2417) = TMP_JAMP(1886) + TMP_JAMP(1885) ! used 2 times - TMP_JAMP(2416) = TMP_JAMP(1966) - TMP_JAMP(1599) ! used 2 times - TMP_JAMP(2415) = TMP_JAMP(1966) - TMP_JAMP(1887) ! used 2 times - TMP_JAMP(2414) = AMP(1277) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1308) ! used 2 times - TMP_JAMP(2413) = AMP(829) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1047) ! used 2 times - TMP_JAMP(2412) = TMP_JAMP(744) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(740) ! used 2 times - TMP_JAMP(2411) = TMP_JAMP(1577) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1558) ! used 2 times - TMP_JAMP(2410) = TMP_JAMP(1600) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1277) ! used 2 times - TMP_JAMP(2409) = TMP_JAMP(1600) - AMP(545) ! used 2 times - TMP_JAMP(2408) = TMP_JAMP(1628) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(506) ! used 2 times - TMP_JAMP(2407) = TMP_JAMP(1922) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1884) ! used 2 times - TMP_JAMP(2406) = TMP_JAMP(1965) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1923) ! used 2 times - TMP_JAMP(2405) = TMP_JAMP(1550) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1546) ! used 2 times - TMP_JAMP(2404) = TMP_JAMP(1597) - AMP(1308) ! used 2 times - TMP_JAMP(2403) = TMP_JAMP(1620) - AMP(590) ! used 2 times - TMP_JAMP(2402) = TMP_JAMP(1620) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(545) ! used 2 times - TMP_JAMP(2401) = TMP_JAMP(1964) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1887) ! used 2 times - TMP_JAMP(2400) = AMP(360) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(372) ! used 2 times - TMP_JAMP(2399) = TMP_JAMP(1536) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1533) ! used 2 times - TMP_JAMP(2398) = TMP_JAMP(1537) - TMP_JAMP(577) ! used 2 times - TMP_JAMP(2397) = TMP_JAMP(1540) + TMP_JAMP(1539) ! used 2 times - TMP_JAMP(2396) = TMP_JAMP(1884) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1536) ! used 2 times - TMP_JAMP(2395) = TMP_JAMP(1884) - TMP_JAMP(1618) ! used 2 times - TMP_JAMP(2394) = TMP_JAMP(1980) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(577) ! used 2 times - TMP_JAMP(2393) = TMP_JAMP(1980) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1881) ! used 2 times - TMP_JAMP(2392) = TMP_JAMP(573) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1209) ! used 2 times - TMP_JAMP(2391) = TMP_JAMP(573) - AMP(867) ! used 2 times - TMP_JAMP(2390) = TMP_JAMP(1531) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1527) ! used 2 times - TMP_JAMP(2389) = TMP_JAMP(1602) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(921) ! used 2 times - TMP_JAMP(2388) = TMP_JAMP(1602) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1577) ! used 2 times - TMP_JAMP(2387) = TMP_JAMP(1789) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1527) ! used 2 times - TMP_JAMP(2386) = TMP_JAMP(1880) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1602) ! used 2 times - TMP_JAMP(2385) = TMP_JAMP(1880) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1614) ! used 2 times - TMP_JAMP(2384) = TMP_JAMP(1881) - TMP_JAMP(1789) ! used 2 times - TMP_JAMP(2383) = TMP_JAMP(1963) + TMP_JAMP(1539) ! used 2 times - TMP_JAMP(2382) = AMP(372) - AMP(852) ! used 2 times - TMP_JAMP(2381) = AMP(362) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(372) ! used 2 times - TMP_JAMP(2380) = TMP_JAMP(1165) - AMP(362) ! used 2 times - TMP_JAMP(2379) = TMP_JAMP(1879) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1540) ! used 2 times - TMP_JAMP(2378) = TMP_JAMP(1921) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1165) ! used 2 times - TMP_JAMP(2377) = TMP_JAMP(1924) + TMP_JAMP(1921) ! used 2 times - TMP_JAMP(2376) = TMP_JAMP(1962) + TMP_JAMP(1533) ! used 2 times - TMP_JAMP(2375) = TMP_JAMP(1963) - AMP(846) ! used 2 times - TMP_JAMP(2374) = AMP(852) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1218) ! used 2 times - TMP_JAMP(2373) = TMP_JAMP(669) + ((0.000000000000000D+00, + TMP_JAMP(1123) = TMP_JAMP(821) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(591) ! used 2 times - TMP_JAMP(2372) = TMP_JAMP(1520) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1516) ! used 2 times - TMP_JAMP(2371) = TMP_JAMP(1539) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(672) ! used 2 times - TMP_JAMP(2370) = TMP_JAMP(1961) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1218) ! used 2 times - TMP_JAMP(2369) = TMP_JAMP(1961) - TMP_JAMP(1531) ! used 2 times - TMP_JAMP(2368) = AMP(1229) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1433) ! used 2 times - TMP_JAMP(2367) = AMP(1211) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1229) ! used 2 times - TMP_JAMP(2366) = TMP_JAMP(726) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1211) ! used 2 times - TMP_JAMP(2365) = TMP_JAMP(726) - AMP(867) ! used 2 times - TMP_JAMP(2364) = TMP_JAMP(761) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(73) ! used 2 times - TMP_JAMP(2363) = TMP_JAMP(763) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(761) ! used 2 times - TMP_JAMP(2362) = TMP_JAMP(1540) - AMP(79) ! used 2 times - TMP_JAMP(2361) = TMP_JAMP(1613) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(763) ! used 2 times - TMP_JAMP(2360) = TMP_JAMP(1879) + TMP_JAMP(730) ! used 2 times - TMP_JAMP(2359) = TMP_JAMP(1893) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1613) ! used 2 times - TMP_JAMP(2358) = TMP_JAMP(1919) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1893) ! used 2 times - TMP_JAMP(2357) = TMP_JAMP(1920) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(730) ! used 2 times - TMP_JAMP(2356) = TMP_JAMP(1920) + TMP_JAMP(1919) ! used 2 times - TMP_JAMP(2355) = TMP_JAMP(1518) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1725) ! used 2 times - TMP_JAMP(2354) = TMP_JAMP(1537) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1220) ! used 2 times - TMP_JAMP(2353) = TMP_JAMP(1547) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1544) ! used 2 times - TMP_JAMP(2352) = TMP_JAMP(1640) - AMP(76) ! used 2 times - TMP_JAMP(2351) = TMP_JAMP(1875) - TMP_JAMP(1874) ! used 2 times - TMP_JAMP(2350) = AMP(671) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1031) ! used 2 times - TMP_JAMP(2349) = TMP_JAMP(549) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(655) ! used 2 times - TMP_JAMP(2348) = TMP_JAMP(1500) + TMP_JAMP(1498) ! used 2 times - TMP_JAMP(2347) = TMP_JAMP(1533) + AMP(1031) ! used 2 times - TMP_JAMP(2346) = TMP_JAMP(1533) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1501) ! used 2 times - TMP_JAMP(2345) = TMP_JAMP(1962) + TMP_JAMP(1606) ! used 2 times - TMP_JAMP(2344) = TMP_JAMP(1975) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(549) ! used 2 times - TMP_JAMP(2343) = TMP_JAMP(1975) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1873) ! used 2 times - TMP_JAMP(2342) = TMP_JAMP(546) + ((0.000000000000000D+00, + TMP_JAMP(1122) = TMP_JAMP(818) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(497) ! used 2 times + TMP_JAMP(1121) = TMP_JAMP(817) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(616) ! used 2 times + TMP_JAMP(1120) = TMP_JAMP(816) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(615) ! used 2 times + TMP_JAMP(1119) = TMP_JAMP(813) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(647) ! used 2 times + TMP_JAMP(1118) = TMP_JAMP(812) - TMP_JAMP(790) ! used 2 times + TMP_JAMP(1117) = TMP_JAMP(807) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(668) ! used 2 times + TMP_JAMP(1116) = TMP_JAMP(806) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(761) ! used 2 times + TMP_JAMP(1115) = TMP_JAMP(803) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(775) ! used 2 times + TMP_JAMP(1114) = TMP_JAMP(799) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(665) ! used 2 times + TMP_JAMP(1113) = TMP_JAMP(798) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(750) ! used 2 times + TMP_JAMP(1112) = TMP_JAMP(797) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(749) ! used 2 times + TMP_JAMP(1111) = TMP_JAMP(796) - TMP_JAMP(776) ! used 2 times + TMP_JAMP(1110) = TMP_JAMP(794) - AMP(786) ! used 2 times + TMP_JAMP(1109) = TMP_JAMP(791) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(656) ! used 2 times + TMP_JAMP(1108) = TMP_JAMP(787) - AMP(608) ! used 2 times + TMP_JAMP(1107) = TMP_JAMP(783) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(506) ! used 2 times + TMP_JAMP(1106) = TMP_JAMP(780) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(603) ! used 2 times + TMP_JAMP(1105) = TMP_JAMP(780) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(488) ! used 2 times + TMP_JAMP(1104) = TMP_JAMP(776) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(753) ! used 2 times + TMP_JAMP(1103) = TMP_JAMP(774) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(765) ! used 2 times - TMP_JAMP(2341) = TMP_JAMP(1495) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1493) ! used 2 times - TMP_JAMP(2340) = TMP_JAMP(1614) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1283) ! used 2 times - TMP_JAMP(2339) = TMP_JAMP(1614) - AMP(707) ! used 2 times - TMP_JAMP(2338) = TMP_JAMP(1770) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1493) ! used 2 times - TMP_JAMP(2337) = TMP_JAMP(1873) - TMP_JAMP(1770) ! used 2 times - TMP_JAMP(2336) = TMP_JAMP(1960) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1500) ! used 2 times - TMP_JAMP(2335) = AMP(671) - AMP(691) ! used 2 times - TMP_JAMP(2334) = TMP_JAMP(1164) - AMP(656) ! used 2 times - TMP_JAMP(2333) = TMP_JAMP(1872) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1501) ! used 2 times - TMP_JAMP(2332) = TMP_JAMP(1918) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1164) ! used 2 times - TMP_JAMP(2331) = TMP_JAMP(1922) + TMP_JAMP(1918) ! used 2 times - TMP_JAMP(2330) = TMP_JAMP(1960) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(545) ! used 2 times - TMP_JAMP(2329) = AMP(789) - AMP(1115) ! used 2 times - TMP_JAMP(2328) = AMP(691) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(774) ! used 2 times - TMP_JAMP(2327) = TMP_JAMP(693) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(683) ! used 2 times - TMP_JAMP(2326) = TMP_JAMP(1485) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1481) ! used 2 times - TMP_JAMP(2325) = TMP_JAMP(1886) + TMP_JAMP(1500) ! used 2 times - TMP_JAMP(2324) = TMP_JAMP(1959) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1495) ! used 2 times - TMP_JAMP(2323) = AMP(784) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1430) ! used 2 times - TMP_JAMP(2322) = AMP(766) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(784) ! used 2 times - TMP_JAMP(2321) = TMP_JAMP(1501) + AMP(79) ! used 2 times - TMP_JAMP(2320) = TMP_JAMP(1872) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(707) ! used 2 times - TMP_JAMP(2319) = TMP_JAMP(1973) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1917) ! used 2 times - TMP_JAMP(2318) = TMP_JAMP(1498) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(775) ! used 2 times - TMP_JAMP(2317) = TMP_JAMP(1874) + TMP_JAMP(1869) ! used 2 times - TMP_JAMP(2316) = AMP(47) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(144) ! used 2 times - TMP_JAMP(2315) = TMP_JAMP(517) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(397) ! used 2 times - TMP_JAMP(2314) = TMP_JAMP(1463) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(517) ! used 2 times - TMP_JAMP(2313) = TMP_JAMP(1470) + TMP_JAMP(1463) ! used 2 times - TMP_JAMP(2312) = TMP_JAMP(1837) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1470) ! used 2 times - TMP_JAMP(2311) = TMP_JAMP(1837) - TMP_JAMP(1474) ! used 2 times - TMP_JAMP(2310) = TMP_JAMP(1868) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(889) ! used 2 times - TMP_JAMP(2309) = TMP_JAMP(1957) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1915) ! used 2 times - TMP_JAMP(2308) = TMP_JAMP(1982) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1916) ! used 2 times - TMP_JAMP(2307) = TMP_JAMP(1452) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(507) ! used 2 times - TMP_JAMP(2306) = TMP_JAMP(1457) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1559) ! used 2 times - TMP_JAMP(2305) = TMP_JAMP(1461) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1458) ! used 2 times - TMP_JAMP(2304) = TMP_JAMP(1818) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1458) ! used 2 times - TMP_JAMP(2303) = TMP_JAMP(1915) - TMP_JAMP(1818) ! used 2 times - TMP_JAMP(2302) = TMP_JAMP(1957) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(871) ! used 2 times - TMP_JAMP(2301) = TMP_JAMP(1981) + AMP(664) ! used 2 times - TMP_JAMP(2300) = TMP_JAMP(1981) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1914) ! used 2 times - TMP_JAMP(2299) = AMP(742) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(786) ! used 2 times - TMP_JAMP(2298) = TMP_JAMP(1868) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(855) ! used 2 times - TMP_JAMP(2297) = TMP_JAMP(1892) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1700) ! used 2 times - TMP_JAMP(2296) = TMP_JAMP(1892) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1745) ! used 2 times - TMP_JAMP(2295) = TMP_JAMP(1913) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(384) ! used 2 times - TMP_JAMP(2294) = TMP_JAMP(1956) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1913) ! used 2 times - TMP_JAMP(2293) = TMP_JAMP(1162) - AMP(1272) ! used 2 times - TMP_JAMP(2292) = TMP_JAMP(1442) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(56) ! used 2 times - TMP_JAMP(2291) = TMP_JAMP(1460) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1456) ! used 2 times - TMP_JAMP(2290) = TMP_JAMP(1596) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1436) ! used 2 times - TMP_JAMP(2289) = TMP_JAMP(1695) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1162) ! used 2 times - TMP_JAMP(2288) = TMP_JAMP(1695) + TMP_JAMP(1443) ! used 2 times - TMP_JAMP(2287) = AMP(1187) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1230) ! used 2 times - TMP_JAMP(2286) = AMP(824) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(863) ! used 2 times - TMP_JAMP(2285) = TMP_JAMP(1430) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(570) ! used 2 times - TMP_JAMP(2284) = TMP_JAMP(1868) - TMP_JAMP(1432) ! used 2 times - TMP_JAMP(2283) = TMP_JAMP(1890) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1664) ! used 2 times - TMP_JAMP(2282) = TMP_JAMP(1890) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1729) ! used 2 times - TMP_JAMP(2281) = TMP_JAMP(1912) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(824) ! used 2 times - TMP_JAMP(2280) = TMP_JAMP(1914) + TMP_JAMP(1912) ! used 2 times - TMP_JAMP(2279) = TMP_JAMP(1159) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(863) ! used 2 times - TMP_JAMP(2278) = TMP_JAMP(1590) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1436) ! used 2 times - TMP_JAMP(2277) = TMP_JAMP(1658) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1159) ! used 2 times - TMP_JAMP(2276) = TMP_JAMP(1658) - TMP_JAMP(1428) ! used 2 times - TMP_JAMP(2275) = AMP(382) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(388) ! used 2 times - TMP_JAMP(2274) = TMP_JAMP(1425) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1612) ! used 2 times - TMP_JAMP(2273) = TMP_JAMP(1597) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1425) ! used 2 times - TMP_JAMP(2272) = TMP_JAMP(1862) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1597) ! used 2 times - TMP_JAMP(2271) = TMP_JAMP(1913) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(382) ! used 2 times - TMP_JAMP(2270) = TMP_JAMP(1913) + TMP_JAMP(1474) ! used 2 times - TMP_JAMP(2269) = TMP_JAMP(1915) - TMP_JAMP(1891) ! used 2 times - TMP_JAMP(2268) = AMP(823) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(829) ! used 2 times - TMP_JAMP(2267) = TMP_JAMP(1422) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1613) ! used 2 times - TMP_JAMP(2266) = TMP_JAMP(1591) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1422) ! used 2 times - TMP_JAMP(2265) = TMP_JAMP(1862) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1591) ! used 2 times - TMP_JAMP(2264) = TMP_JAMP(1912) + ((-0.000000000000000D+00 + TMP_JAMP(1102) = TMP_JAMP(773) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(796) ! used 2 times + TMP_JAMP(1101) = TMP_JAMP(772) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(815) ! used 2 times + TMP_JAMP(1100) = TMP_JAMP(772) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(797) ! used 2 times + TMP_JAMP(1099) = TMP_JAMP(770) + TMP_JAMP(756) ! used 2 times + TMP_JAMP(1098) = TMP_JAMP(769) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(814) ! used 2 times + TMP_JAMP(1097) = TMP_JAMP(768) - AMP(926) ! used 2 times + TMP_JAMP(1096) = TMP_JAMP(766) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(924) ! used 2 times + TMP_JAMP(1095) = TMP_JAMP(765) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(823) ! used 2 times - TMP_JAMP(2263) = TMP_JAMP(1912) + TMP_JAMP(1461) ! used 2 times - TMP_JAMP(2262) = AMP(901) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(945) ! used 2 times - TMP_JAMP(2261) = TMP_JAMP(1423) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1420) ! used 2 times - TMP_JAMP(2260) = TMP_JAMP(1916) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1421) ! used 2 times - TMP_JAMP(2259) = TMP_JAMP(1921) - TMP_JAMP(1916) ! used 2 times - TMP_JAMP(2258) = TMP_JAMP(1925) - TMP_JAMP(1921) ! used 2 times - TMP_JAMP(2257) = TMP_JAMP(1965) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1426) ! used 2 times - TMP_JAMP(2256) = AMP(59) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1566) ! used 2 times - TMP_JAMP(2255) = TMP_JAMP(1416) - TMP_JAMP(1412) ! used 2 times - TMP_JAMP(2254) = TMP_JAMP(1419) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1415) ! used 2 times - TMP_JAMP(2253) = TMP_JAMP(1421) + AMP(1194) ! used 2 times - TMP_JAMP(2252) = TMP_JAMP(1887) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1862) ! used 2 times - TMP_JAMP(2251) = TMP_JAMP(1961) - TMP_JAMP(1955) ! used 2 times - TMP_JAMP(2250) = AMP(1265) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1308) ! used 2 times - TMP_JAMP(2249) = TMP_JAMP(1914) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1411) ! used 2 times - TMP_JAMP(2248) = TMP_JAMP(1918) + TMP_JAMP(1914) ! used 2 times - TMP_JAMP(2247) = TMP_JAMP(1923) - TMP_JAMP(1918) ! used 2 times - TMP_JAMP(2246) = TMP_JAMP(1410) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1408) ! used 2 times - TMP_JAMP(2245) = TMP_JAMP(1411) - AMP(749) ! used 2 times - TMP_JAMP(2244) = TMP_JAMP(1964) + TMP_JAMP(1959) ! used 2 times - TMP_JAMP(2243) = TMP_JAMP(959) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(399) ! used 2 times - TMP_JAMP(2242) = TMP_JAMP(1406) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(968) ! used 2 times - TMP_JAMP(2241) = TMP_JAMP(1911) - TMP_JAMP(1474) ! used 2 times - TMP_JAMP(2240) = TMP_JAMP(1954) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1910) ! used 2 times - TMP_JAMP(2239) = TMP_JAMP(1956) + AMP(741) ! used 2 times - TMP_JAMP(2238) = AMP(849) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1131) ! used 2 times - TMP_JAMP(2237) = AMP(849) + ((0.000000000000000D+00, + TMP_JAMP(1094) = TMP_JAMP(764) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(901) ! used 2 times + TMP_JAMP(1093) = TMP_JAMP(761) - AMP(935) ! used 2 times + TMP_JAMP(1092) = TMP_JAMP(758) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(826) ! used 2 times + TMP_JAMP(1091) = TMP_JAMP(757) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(913) ! used 2 times + TMP_JAMP(1090) = TMP_JAMP(755) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(934) ! used 2 times + TMP_JAMP(1089) = TMP_JAMP(755) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(808) ! used 2 times + TMP_JAMP(1088) = TMP_JAMP(753) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(909) ! used 2 times - TMP_JAMP(2236) = TMP_JAMP(1420) - TMP_JAMP(1390) ! used 2 times - TMP_JAMP(2235) = TMP_JAMP(1443) - TMP_JAMP(1428) ! used 2 times - TMP_JAMP(2234) = TMP_JAMP(1737) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1391) ! used 2 times - TMP_JAMP(2233) = TMP_JAMP(1859) - TMP_JAMP(1428) ! used 2 times - TMP_JAMP(2232) = TMP_JAMP(1953) + TMP_JAMP(1859) ! used 2 times - TMP_JAMP(2231) = TMP_JAMP(1389) + ((-0.000000000000000D+00 + TMP_JAMP(1087) = TMP_JAMP(749) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(912) ! used 2 times + TMP_JAMP(1086) = TMP_JAMP(748) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(925) ! used 2 times + TMP_JAMP(1085) = TMP_JAMP(747) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(900) ! used 2 times - TMP_JAMP(2230) = TMP_JAMP(1859) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1421) ! used 2 times - TMP_JAMP(2229) = TMP_JAMP(1924) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(344) ! used 2 times - TMP_JAMP(2228) = TMP_JAMP(1924) + TMP_JAMP(1910) ! used 2 times - TMP_JAMP(2227) = TMP_JAMP(1385) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1564) ! used 2 times - TMP_JAMP(2226) = TMP_JAMP(1417) - TMP_JAMP(1409) ! used 2 times - TMP_JAMP(2225) = TMP_JAMP(1885) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1384) ! used 2 times - TMP_JAMP(2224) = TMP_JAMP(1953) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(750) ! used 2 times - TMP_JAMP(2223) = TMP_JAMP(708) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1133) ! used 2 times - TMP_JAMP(2222) = TMP_JAMP(1406) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1412) ! used 2 times - TMP_JAMP(2221) = TMP_JAMP(1458) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1406) ! used 2 times - TMP_JAMP(2220) = TMP_JAMP(1858) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1458) ! used 2 times - TMP_JAMP(2219) = TMP_JAMP(1370) - AMP(58) ! used 2 times - TMP_JAMP(2218) = TMP_JAMP(1374) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1370) ! used 2 times - TMP_JAMP(2217) = TMP_JAMP(1414) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1374) ! used 2 times - TMP_JAMP(2216) = TMP_JAMP(1418) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1414) ! used 2 times - TMP_JAMP(2215) = TMP_JAMP(1858) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1142) ! used 2 times - TMP_JAMP(2214) = TMP_JAMP(1952) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1418) ! used 2 times - TMP_JAMP(2213) = TMP_JAMP(913) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1022) ! used 2 times - TMP_JAMP(2212) = TMP_JAMP(1369) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(929) ! used 2 times - TMP_JAMP(2211) = TMP_JAMP(1431) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(863) ! used 2 times - TMP_JAMP(2210) = TMP_JAMP(1911) - TMP_JAMP(1461) ! used 2 times - TMP_JAMP(2209) = TMP_JAMP(1951) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1909) ! used 2 times - TMP_JAMP(2208) = AMP(548) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(606) ! used 2 times - TMP_JAMP(2207) = TMP_JAMP(1722) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1356) ! used 2 times - TMP_JAMP(2206) = TMP_JAMP(1950) + TMP_JAMP(1949) ! used 2 times - TMP_JAMP(2205) = TMP_JAMP(1355) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1263) ! used 2 times - TMP_JAMP(2204) = TMP_JAMP(1922) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(497) ! used 2 times - TMP_JAMP(2203) = TMP_JAMP(1922) + TMP_JAMP(1909) ! used 2 times - TMP_JAMP(2202) = TMP_JAMP(1950) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1411) ! used 2 times - TMP_JAMP(2201) = TMP_JAMP(1949) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1193) ! used 2 times - TMP_JAMP(2200) = TMP_JAMP(1958) + TMP_JAMP(1351) ! used 2 times - TMP_JAMP(2199) = AMP(548) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(607) ! used 2 times - TMP_JAMP(2198) = TMP_JAMP(819) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(816) ! used 2 times - TMP_JAMP(2197) = TMP_JAMP(1369) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1409) ! used 2 times - TMP_JAMP(2196) = TMP_JAMP(1470) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1369) ! used 2 times - TMP_JAMP(2195) = TMP_JAMP(1947) + TMP_JAMP(1349) ! used 2 times - TMP_JAMP(2194) = TMP_JAMP(1952) + TMP_JAMP(1470) ! used 2 times - TMP_JAMP(2193) = TMP_JAMP(1952) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1948) ! used 2 times - TMP_JAMP(2192) = TMP_JAMP(1343) + AMP(616) ! used 2 times - TMP_JAMP(2191) = TMP_JAMP(1948) - TMP_JAMP(1345) ! used 2 times - TMP_JAMP(2190) = AMP(479) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(534) ! used 2 times - TMP_JAMP(2189) = AMP(332) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(494) ! used 2 times - TMP_JAMP(2188) = AMP(326) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(390) ! used 2 times - TMP_JAMP(2187) = TMP_JAMP(1580) - AMP(326) ! used 2 times - TMP_JAMP(2186) = TMP_JAMP(1895) + AMP(479) ! used 2 times - TMP_JAMP(2185) = TMP_JAMP(1908) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1580) ! used 2 times - TMP_JAMP(2184) = TMP_JAMP(1908) - TMP_JAMP(1907) ! used 2 times - TMP_JAMP(2183) = TMP_JAMP(1946) + TMP_JAMP(1895) ! used 2 times - TMP_JAMP(2182) = AMP(494) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(962) ! used 2 times - TMP_JAMP(2181) = TMP_JAMP(1317) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(484) ! used 2 times - TMP_JAMP(2180) = TMP_JAMP(1323) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(787) ! used 2 times - TMP_JAMP(2179) = TMP_JAMP(1494) + AMP(647) ! used 2 times - TMP_JAMP(2178) = TMP_JAMP(1790) - TMP_JAMP(1329) ! used 2 times - TMP_JAMP(2177) = TMP_JAMP(1946) + TMP_JAMP(1323) ! used 2 times - TMP_JAMP(2176) = TMP_JAMP(1946) + TMP_JAMP(1944) ! used 2 times - TMP_JAMP(2175) = AMP(638) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(693) ! used 2 times - TMP_JAMP(2174) = TMP_JAMP(1745) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(330) ! used 2 times - TMP_JAMP(2173) = TMP_JAMP(1906) - TMP_JAMP(1745) ! used 2 times - TMP_JAMP(2172) = TMP_JAMP(1942) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(780) ! used 2 times - TMP_JAMP(2171) = TMP_JAMP(1943) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1906) ! used 2 times - TMP_JAMP(2170) = TMP_JAMP(1944) - TMP_JAMP(1449) ! used 2 times - TMP_JAMP(2169) = TMP_JAMP(1302) + AMP(971) ! used 2 times - TMP_JAMP(2168) = TMP_JAMP(1309) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1303) ! used 2 times - TMP_JAMP(2167) = TMP_JAMP(1310) + TMP_JAMP(1309) ! used 2 times - TMP_JAMP(2166) = TMP_JAMP(1357) + AMP(488) ! used 2 times - TMP_JAMP(2165) = TMP_JAMP(1738) - TMP_JAMP(1310) ! used 2 times - TMP_JAMP(2164) = AMP(987) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1307) ! used 2 times - TMP_JAMP(2163) = TMP_JAMP(1295) - AMP(987) ! used 2 times - TMP_JAMP(2162) = TMP_JAMP(1295) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(811) ! used 2 times - TMP_JAMP(2161) = TMP_JAMP(1653) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(805) ! used 2 times - TMP_JAMP(2160) = TMP_JAMP(1880) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1691) ! used 2 times - TMP_JAMP(2159) = TMP_JAMP(1940) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1301) ! used 2 times - TMP_JAMP(2158) = TMP_JAMP(1942) - TMP_JAMP(1299) ! used 2 times - TMP_JAMP(2157) = AMP(808) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(811) ! used 2 times - TMP_JAMP(2156) = TMP_JAMP(1304) + TMP_JAMP(1293) ! used 2 times - TMP_JAMP(2155) = TMP_JAMP(1685) - TMP_JAMP(1650) ! used 2 times - TMP_JAMP(2154) = TMP_JAMP(1938) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1294) ! used 2 times - TMP_JAMP(2153) = AMP(329) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(372) ! used 2 times - TMP_JAMP(2152) = TMP_JAMP(1288) + AMP(478) ! used 2 times - TMP_JAMP(2151) = TMP_JAMP(1537) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1290) ! used 2 times - TMP_JAMP(2150) = TMP_JAMP(1881) + TMP_JAMP(1291) ! used 2 times - TMP_JAMP(2149) = TMP_JAMP(1906) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(329) ! used 2 times - TMP_JAMP(2148) = TMP_JAMP(1907) + TMP_JAMP(1906) ! used 2 times - TMP_JAMP(2147) = AMP(806) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(867) ! used 2 times - TMP_JAMP(2146) = TMP_JAMP(1301) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1285) ! used 2 times - TMP_JAMP(2145) = TMP_JAMP(1531) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1286) ! used 2 times - TMP_JAMP(2144) = AMP(797) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(852) ! used 2 times - TMP_JAMP(2143) = TMP_JAMP(1284) - AMP(327) ! used 2 times - TMP_JAMP(2142) = TMP_JAMP(1287) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1283) ! used 2 times - TMP_JAMP(2141) = TMP_JAMP(1879) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1292) ! used 2 times - TMP_JAMP(2140) = TMP_JAMP(1925) + TMP_JAMP(1908) ! used 2 times - TMP_JAMP(2139) = AMP(980) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1654) ! used 2 times - TMP_JAMP(2138) = AMP(491) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1704) ! used 2 times - TMP_JAMP(2137) = TMP_JAMP(1277) + AMP(980) ! used 2 times - TMP_JAMP(2136) = TMP_JAMP(1280) - TMP_JAMP(1277) ! used 2 times - TMP_JAMP(2135) = TMP_JAMP(1289) - AMP(491) ! used 2 times - TMP_JAMP(2134) = TMP_JAMP(1853) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1289) ! used 2 times - TMP_JAMP(2133) = TMP_JAMP(1955) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1280) ! used 2 times - TMP_JAMP(2132) = TMP_JAMP(1955) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1284) ! used 2 times - TMP_JAMP(2131) = AMP(996) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1229) ! used 2 times - TMP_JAMP(2130) = TMP_JAMP(1275) + AMP(646) ! used 2 times - TMP_JAMP(2129) = TMP_JAMP(1939) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1917) ! used 2 times - TMP_JAMP(2128) = TMP_JAMP(1276) - AMP(649) ! used 2 times - TMP_JAMP(2127) = TMP_JAMP(1853) + TMP_JAMP(1852) ! used 2 times - TMP_JAMP(2126) = TMP_JAMP(1869) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1385) ! used 2 times - TMP_JAMP(2125) = TMP_JAMP(1869) + TMP_JAMP(1852) ! used 2 times - TMP_JAMP(2124) = TMP_JAMP(1875) + TMP_JAMP(1869) ! used 2 times - TMP_JAMP(2123) = TMP_JAMP(859) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(637) ! used 2 times - TMP_JAMP(2122) = TMP_JAMP(1851) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1850) ! used 2 times - TMP_JAMP(2121) = TMP_JAMP(1910) - TMP_JAMP(1907) ! used 2 times - TMP_JAMP(2120) = TMP_JAMP(1954) - TMP_JAMP(1943) ! used 2 times - TMP_JAMP(2119) = TMP_JAMP(1294) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1283) ! used 2 times - TMP_JAMP(2118) = TMP_JAMP(1849) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(809) ! used 2 times - TMP_JAMP(2117) = TMP_JAMP(1850) + TMP_JAMP(1849) ! used 2 times - TMP_JAMP(2116) = AMP(796) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(834) ! used 2 times - TMP_JAMP(2115) = TMP_JAMP(1284) + AMP(796) ! used 2 times - TMP_JAMP(2114) = TMP_JAMP(1849) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1284) ! used 2 times - TMP_JAMP(2113) = TMP_JAMP(1851) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1849) ! used 2 times - TMP_JAMP(2112) = TMP_JAMP(1852) - TMP_JAMP(1850) ! used 2 times - TMP_JAMP(2111) = TMP_JAMP(1267) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1265) ! used 2 times - TMP_JAMP(2110) = TMP_JAMP(1294) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1159) ! used 2 times - TMP_JAMP(2109) = TMP_JAMP(1858) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1851) ! used 2 times - TMP_JAMP(2108) = TMP_JAMP(1937) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1349) ! used 2 times - TMP_JAMP(2107) = AMP(490) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1529) ! used 2 times - TMP_JAMP(2106) = TMP_JAMP(1853) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1344) ! used 2 times - TMP_JAMP(2105) = AMP(109) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(961) ! used 2 times - TMP_JAMP(2104) = TMP_JAMP(647) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(100) ! used 2 times - TMP_JAMP(2103) = TMP_JAMP(1298) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(811) ! used 2 times - TMP_JAMP(2102) = TMP_JAMP(1847) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(961) ! used 2 times - TMP_JAMP(2101) = TMP_JAMP(1848) + TMP_JAMP(1847) ! used 2 times - TMP_JAMP(2100) = TMP_JAMP(1900) + TMP_JAMP(1787) ! used 2 times - TMP_JAMP(2099) = AMP(121) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(970) ! used 2 times - TMP_JAMP(2098) = TMP_JAMP(1436) + AMP(112) ! used 2 times - TMP_JAMP(2097) = TMP_JAMP(1684) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1436) ! used 2 times - TMP_JAMP(2096) = TMP_JAMP(1934) + TMP_JAMP(1848) ! used 2 times - TMP_JAMP(2095) = TMP_JAMP(1990) + TMP_JAMP(1684) ! used 2 times - TMP_JAMP(2094) = AMP(101) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(109) ! used 2 times - TMP_JAMP(2093) = TMP_JAMP(1919) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1612) ! used 2 times - TMP_JAMP(2092) = TMP_JAMP(1934) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(991) ! used 2 times - TMP_JAMP(2091) = AMP(133) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(979) ! used 2 times - TMP_JAMP(2090) = TMP_JAMP(1279) - TMP_JAMP(1251) ! used 2 times - TMP_JAMP(2089) = TMP_JAMP(1848) + TMP_JAMP(1282) ! used 2 times - TMP_JAMP(2088) = TMP_JAMP(1874) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(124) ! used 2 times - TMP_JAMP(2087) = AMP(493) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1000) ! used 2 times - TMP_JAMP(2086) = TMP_JAMP(844) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(113) ! used 2 times - TMP_JAMP(2085) = TMP_JAMP(1249) + AMP(148) ! used 2 times - TMP_JAMP(2084) = TMP_JAMP(1349) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1149) ! used 2 times - TMP_JAMP(2083) = TMP_JAMP(1847) - TMP_JAMP(1266) ! used 2 times - TMP_JAMP(2082) = TMP_JAMP(1947) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(848) ! used 2 times - TMP_JAMP(2081) = TMP_JAMP(1371) + AMP(125) ! used 2 times - TMP_JAMP(2080) = AMP(185) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(291) ! used 2 times - TMP_JAMP(2079) = AMP(174) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(195) ! used 2 times - TMP_JAMP(2078) = TMP_JAMP(1588) - AMP(168) ! used 2 times - TMP_JAMP(2077) = TMP_JAMP(1780) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1453) ! used 2 times - TMP_JAMP(2076) = TMP_JAMP(1894) + TMP_JAMP(1244) ! used 2 times - TMP_JAMP(2075) = TMP_JAMP(1234) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1227) ! used 2 times - TMP_JAMP(2074) = TMP_JAMP(1528) - AMP(207) ! used 2 times - TMP_JAMP(2073) = TMP_JAMP(1771) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1321) ! used 2 times - TMP_JAMP(2072) = TMP_JAMP(1933) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(723) ! used 2 times - TMP_JAMP(2071) = AMP(203) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(850) ! used 2 times - TMP_JAMP(2070) = TMP_JAMP(879) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(872) ! used 2 times - TMP_JAMP(2069) = TMP_JAMP(1221) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(213) ! used 2 times - TMP_JAMP(2068) = TMP_JAMP(1729) + TMP_JAMP(1224) ! used 2 times - TMP_JAMP(2067) = TMP_JAMP(1931) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(717) ! used 2 times - TMP_JAMP(2066) = TMP_JAMP(1933) - TMP_JAMP(1433) ! used 2 times - TMP_JAMP(2065) = TMP_JAMP(1213) + TMP_JAMP(1211) ! used 2 times - TMP_JAMP(2064) = TMP_JAMP(1216) + TMP_JAMP(1215) ! used 2 times - TMP_JAMP(2063) = TMP_JAMP(1240) + AMP(189) ! used 2 times - TMP_JAMP(2062) = TMP_JAMP(1393) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1247) ! used 2 times - TMP_JAMP(2061) = TMP_JAMP(1723) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1306) ! used 2 times - TMP_JAMP(2060) = AMP(267) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(943) ! used 2 times - TMP_JAMP(2059) = TMP_JAMP(1209) + TMP_JAMP(1205) ! used 2 times - TMP_JAMP(2058) = TMP_JAMP(1931) + TMP_JAMP(1300) ! used 2 times - TMP_JAMP(2057) = TMP_JAMP(1945) + ((0.000000000000000D+00 + TMP_JAMP(1084) = TMP_JAMP(745) + AMP(602) ! used 2 times + TMP_JAMP(1083) = TMP_JAMP(742) - AMP(478) ! used 2 times + TMP_JAMP(1082) = TMP_JAMP(738) - AMP(754) ! used 2 times + TMP_JAMP(1081) = TMP_JAMP(731) + AMP(638) ! used 2 times + TMP_JAMP(1080) = TMP_JAMP(726) + AMP(582) ! used 2 times + TMP_JAMP(1079) = TMP_JAMP(720) + AMP(805) ! used 2 times + TMP_JAMP(1078) = TMP_JAMP(712) + AMP(590) ! used 2 times + TMP_JAMP(1077) = TMP_JAMP(703) + AMP(774) ! used 2 times + TMP_JAMP(1076) = TMP_JAMP(662) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(766) ! used 2 times + TMP_JAMP(1075) = TMP_JAMP(661) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(741) ! used 2 times + TMP_JAMP(1074) = TMP_JAMP(657) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(607) ! used 2 times + TMP_JAMP(1073) = AMP(593) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(595) ! used 2 times + TMP_JAMP(1072) = AMP(472) + AMP(473) ! used 2 times + TMP_JAMP(1071) = AMP(505) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(511) ! used 2 times + TMP_JAMP(1070) = AMP(837) + AMP(920) ! used 2 times + TMP_JAMP(1069) = AMP(655) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(660) ! used 2 times + TMP_JAMP(1068) = AMP(742) + AMP(781) ! used 2 times + TMP_JAMP(1067) = AMP(855) + AMP(908) ! used 2 times + TMP_JAMP(1066) = AMP(519) - AMP(606) ! used 2 times + TMP_JAMP(1376) = TMP_JAMP(1298) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * TMP_JAMP(1210) ! used 2 times - TMP_JAMP(2056) = TMP_JAMP(1212) + TMP_JAMP(1203) ! used 2 times - TMP_JAMP(2055) = TMP_JAMP(1941) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1204) ! used 2 times - TMP_JAMP(2054) = AMP(183) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(195) ! used 2 times - TMP_JAMP(2053) = AMP(171) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(671) ! used 2 times - TMP_JAMP(2052) = TMP_JAMP(1197) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(914) ! used 2 times - TMP_JAMP(2051) = TMP_JAMP(1498) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1200) ! used 2 times - TMP_JAMP(2050) = TMP_JAMP(1873) + TMP_JAMP(1201) ! used 2 times - TMP_JAMP(2049) = TMP_JAMP(1929) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1224) ! used 2 times - TMP_JAMP(2048) = AMP(225) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(707) ! used 2 times - TMP_JAMP(2047) = TMP_JAMP(1194) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(310) ! used 2 times - TMP_JAMP(2046) = TMP_JAMP(1228) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1210) ! used 2 times - TMP_JAMP(2045) = TMP_JAMP(1495) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1195) ! used 2 times - TMP_JAMP(2044) = AMP(221) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(691) ! used 2 times - TMP_JAMP(2043) = TMP_JAMP(1191) - AMP(167) ! used 2 times - TMP_JAMP(2042) = TMP_JAMP(1196) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1192) ! used 2 times - TMP_JAMP(2041) = TMP_JAMP(1872) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1202) ! used 2 times - TMP_JAMP(2040) = TMP_JAMP(1932) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1923) ! used 2 times - TMP_JAMP(2039) = AMP(192) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(300) ! used 2 times - TMP_JAMP(2038) = TMP_JAMP(1193) + AMP(258) ! used 2 times - TMP_JAMP(2037) = TMP_JAMP(1199) + AMP(192) ! used 2 times - TMP_JAMP(2036) = TMP_JAMP(1483) - TMP_JAMP(1199) ! used 2 times - TMP_JAMP(2035) = TMP_JAMP(1487) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1483) ! used 2 times - TMP_JAMP(2034) = TMP_JAMP(1846) - TMP_JAMP(1487) ! used 2 times - TMP_JAMP(2033) = TMP_JAMP(1846) + TMP_JAMP(1845) ! used 2 times - TMP_JAMP(2032) = AMP(276) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(784) ! used 2 times - TMP_JAMP(2031) = TMP_JAMP(1185) - AMP(205) ! used 2 times - TMP_JAMP(2030) = TMP_JAMP(1930) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1920) ! used 2 times - TMP_JAMP(2029) = TMP_JAMP(1186) - AMP(208) ! used 2 times - TMP_JAMP(2028) = TMP_JAMP(1875) + TMP_JAMP(1844) ! used 2 times - TMP_JAMP(2027) = TMP_JAMP(1182) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1179) ! used 2 times - TMP_JAMP(2026) = TMP_JAMP(1929) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1909) ! used 2 times - TMP_JAMP(2025) = TMP_JAMP(1951) - AMP(201) ! used 2 times - TMP_JAMP(2024) = TMP_JAMP(1951) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1843) ! used 2 times - TMP_JAMP(2023) = AMP(228) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(548) ! used 2 times - TMP_JAMP(2022) = TMP_JAMP(1192) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(301) ! used 2 times - TMP_JAMP(2021) = TMP_JAMP(1214) + TMP_JAMP(1192) ! used 2 times - TMP_JAMP(2020) = TMP_JAMP(1214) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1204) ! used 2 times - TMP_JAMP(2019) = TMP_JAMP(1842) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(228) ! used 2 times - TMP_JAMP(2018) = TMP_JAMP(1843) + TMP_JAMP(1842) ! used 2 times - TMP_JAMP(2017) = TMP_JAMP(1842) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(219) ! used 2 times - TMP_JAMP(2016) = TMP_JAMP(1843) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(210) ! used 2 times - TMP_JAMP(2015) = TMP_JAMP(1844) - TMP_JAMP(1843) ! used 2 times - TMP_JAMP(2014) = TMP_JAMP(1845) - TMP_JAMP(1844) ! used 2 times - TMP_JAMP(2013) = TMP_JAMP(1180) + AMP(285) ! used 2 times - TMP_JAMP(2012) = TMP_JAMP(1204) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1162) ! used 2 times - TMP_JAMP(2011) = TMP_JAMP(1937) + AMP(187) ! used 2 times - TMP_JAMP(2010) = TMP_JAMP(1937) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1841) ! used 2 times - TMP_JAMP(2009) = TMP_JAMP(1841) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(190) ! used 2 times - TMP_JAMP(2008) = TMP_JAMP(1936) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1846) ! used 2 times - TMP_JAMP(2007) = AMP(229) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(259) ! used 2 times - TMP_JAMP(2006) = AMP(109) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(238) ! used 2 times - TMP_JAMP(2005) = TMP_JAMP(1208) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(229) ! used 2 times - TMP_JAMP(2004) = TMP_JAMP(1839) - AMP(109) ! used 2 times - TMP_JAMP(2003) = TMP_JAMP(1990) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(1208) ! used 2 times - TMP_JAMP(2002) = TMP_JAMP(1990) - TMP_JAMP(1840) ! used 2 times - TMP_JAMP(2001) = AMP(121) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(247) ! used 2 times - TMP_JAMP(2000) = TMP_JAMP(1838) + AMP(121) ! used 2 times - TMP_JAMP(1999) = TMP_JAMP(1840) + TMP_JAMP(1838) ! used 2 times - TMP_JAMP(1998) = AMP(142) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(268) ! used 2 times - TMP_JAMP(1997) = TMP_JAMP(1838) - AMP(142) ! used 2 times - TMP_JAMP(1996) = TMP_JAMP(1839) - TMP_JAMP(1838) ! used 2 times - TMP_JAMP(1995) = TMP_JAMP(1252) - AMP(256) ! used 2 times - TMP_JAMP(1994) = TMP_JAMP(1845) + TMP_JAMP(1840) ! used 2 times - TMP_JAMP(1993) = TMP_JAMP(1250) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(277) ! used 2 times - TMP_JAMP(1992) = TMP_JAMP(1841) + TMP_JAMP(1839) ! used 2 times - TMP_JAMP(2744) = TMP_JAMP(2640) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1515) ! used 2 times - TMP_JAMP(2743) = TMP_JAMP(2621) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1888) ! used 2 times - TMP_JAMP(2742) = TMP_JAMP(2622) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2618) ! used 2 times - TMP_JAMP(2741) = TMP_JAMP(2602) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2600) ! used 2 times - TMP_JAMP(2740) = TMP_JAMP(2592) + TMP_JAMP(868) ! used 2 times - TMP_JAMP(2739) = TMP_JAMP(2593) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(667) ! used 2 times - TMP_JAMP(2738) = TMP_JAMP(2578) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2576) ! used 2 times - TMP_JAMP(2737) = TMP_JAMP(2579) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2577) ! used 2 times - TMP_JAMP(2736) = TMP_JAMP(2573) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2569) ! used 2 times - TMP_JAMP(2735) = TMP_JAMP(2567) + TMP_JAMP(2566) ! used 2 times - TMP_JAMP(2734) = TMP_JAMP(2568) - AMP(1753) ! used 2 times - TMP_JAMP(2733) = TMP_JAMP(2560) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2559) ! used 2 times - TMP_JAMP(2732) = TMP_JAMP(2555) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1287) ! used 2 times - TMP_JAMP(2731) = TMP_JAMP(2545) + AMP(753) ! used 2 times - TMP_JAMP(2730) = TMP_JAMP(2546) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(459) ! used 2 times - TMP_JAMP(2729) = TMP_JAMP(2541) + AMP(603) ! used 2 times - TMP_JAMP(2728) = TMP_JAMP(2536) + TMP_JAMP(902) ! used 2 times - TMP_JAMP(2727) = TMP_JAMP(2530) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1638) ! used 2 times - TMP_JAMP(2726) = TMP_JAMP(2520) + AMP(1040) ! used 2 times - TMP_JAMP(2725) = TMP_JAMP(2524) - TMP_JAMP(2519) ! used 2 times - TMP_JAMP(2724) = TMP_JAMP(2517) + TMP_JAMP(2513) ! used 2 times - TMP_JAMP(2723) = TMP_JAMP(2518) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(924) ! used 2 times - TMP_JAMP(2722) = TMP_JAMP(2509) + AMP(1197) ! used 2 times - TMP_JAMP(2721) = TMP_JAMP(2510) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1713) ! used 2 times - TMP_JAMP(2720) = TMP_JAMP(2505) + ((-0.000000000000000D+00 + TMP_JAMP(1375) = TMP_JAMP(1287) + TMP_JAMP(1164) ! used 2 times + TMP_JAMP(1374) = TMP_JAMP(1286) + TMP_JAMP(1151) ! used 2 times + TMP_JAMP(1373) = TMP_JAMP(1284) - TMP_JAMP(1153) ! used 2 times + TMP_JAMP(1372) = TMP_JAMP(1276) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1242) ! used 2 times + TMP_JAMP(1371) = TMP_JAMP(1267) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1163) ! used 2 times + TMP_JAMP(1370) = TMP_JAMP(1266) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1181) ! used 2 times + TMP_JAMP(1369) = TMP_JAMP(1265) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1173) ! used 2 times + TMP_JAMP(1368) = TMP_JAMP(1260) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1166) ! used 2 times + TMP_JAMP(1367) = TMP_JAMP(1249) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1126) ! used 2 times + TMP_JAMP(1366) = TMP_JAMP(1246) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1015) ! used 2 times + TMP_JAMP(1365) = TMP_JAMP(1245) - TMP_JAMP(1198) ! used 2 times + TMP_JAMP(1364) = TMP_JAMP(1243) - TMP_JAMP(1057) ! used 2 times + TMP_JAMP(1363) = TMP_JAMP(1236) - TMP_JAMP(1229) ! used 2 times + TMP_JAMP(1362) = TMP_JAMP(1234) - TMP_JAMP(1183) ! used 2 times + TMP_JAMP(1361) = TMP_JAMP(1233) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1117) ! used 2 times + TMP_JAMP(1360) = TMP_JAMP(1227) + TMP_JAMP(1058) ! used 2 times + TMP_JAMP(1359) = TMP_JAMP(1226) + TMP_JAMP(1082) ! used 2 times + TMP_JAMP(1358) = TMP_JAMP(1222) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1074) ! used 2 times + TMP_JAMP(1357) = TMP_JAMP(1217) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1098) ! used 2 times + TMP_JAMP(1356) = TMP_JAMP(1215) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1096) ! used 2 times + TMP_JAMP(1355) = TMP_JAMP(1214) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1097) ! used 2 times + TMP_JAMP(1354) = TMP_JAMP(1213) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1134) ! used 2 times + TMP_JAMP(1353) = TMP_JAMP(1208) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1099) ! used 2 times + TMP_JAMP(1352) = TMP_JAMP(1206) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1090) ! used 2 times + TMP_JAMP(1351) = TMP_JAMP(1202) - TMP_JAMP(1080) ! used 2 times + TMP_JAMP(1350) = TMP_JAMP(1199) - TMP_JAMP(1071) ! used 2 times + TMP_JAMP(1349) = TMP_JAMP(1192) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1087) ! used 2 times + TMP_JAMP(1348) = TMP_JAMP(1190) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1142) ! used 2 times + TMP_JAMP(1347) = TMP_JAMP(1189) - TMP_JAMP(1160) ! used 2 times + TMP_JAMP(1346) = TMP_JAMP(1186) - TMP_JAMP(1149) ! used 2 times + TMP_JAMP(1345) = TMP_JAMP(1184) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1115) ! used 2 times + TMP_JAMP(1344) = TMP_JAMP(1182) - TMP_JAMP(1137) ! used 2 times + TMP_JAMP(1343) = TMP_JAMP(1178) - TMP_JAMP(1170) ! used 2 times + TMP_JAMP(1342) = TMP_JAMP(1175) + TMP_JAMP(970) ! used 2 times + TMP_JAMP(1341) = TMP_JAMP(1171) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1114) ! used 2 times + TMP_JAMP(1340) = TMP_JAMP(1165) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1085) ! used 2 times + TMP_JAMP(1339) = TMP_JAMP(1162) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1121) ! used 2 times + TMP_JAMP(1338) = TMP_JAMP(1157) + TMP_JAMP(1046) ! used 2 times + TMP_JAMP(1337) = TMP_JAMP(1154) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1140) ! used 2 times + TMP_JAMP(1336) = TMP_JAMP(1146) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1089) ! used 2 times + TMP_JAMP(1335) = TMP_JAMP(1136) - TMP_JAMP(1104) ! used 2 times + TMP_JAMP(1334) = TMP_JAMP(1135) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1106) ! used 2 times + TMP_JAMP(1333) = TMP_JAMP(1132) + TMP_JAMP(1105) ! used 2 times + TMP_JAMP(1332) = TMP_JAMP(1128) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1078) ! used 2 times + TMP_JAMP(1331) = TMP_JAMP(1125) - TMP_JAMP(1073) ! used 2 times + TMP_JAMP(1330) = TMP_JAMP(1124) + TMP_JAMP(1014) ! used 2 times + TMP_JAMP(1329) = TMP_JAMP(1123) - TMP_JAMP(1017) ! used 2 times + TMP_JAMP(1328) = TMP_JAMP(1122) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1048) ! used 2 times + TMP_JAMP(1327) = TMP_JAMP(1120) + TMP_JAMP(1016) ! used 2 times + TMP_JAMP(1326) = TMP_JAMP(1119) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1064) ! used 2 times + TMP_JAMP(1325) = TMP_JAMP(1118) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1077) ! used 2 times + TMP_JAMP(1324) = TMP_JAMP(1116) + TMP_JAMP(1024) ! used 2 times + TMP_JAMP(1323) = TMP_JAMP(1112) + TMP_JAMP(1011) ! used 2 times + TMP_JAMP(1322) = TMP_JAMP(1111) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1081) ! used 2 times + TMP_JAMP(1321) = TMP_JAMP(1110) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1068) ! used 2 times + TMP_JAMP(1320) = TMP_JAMP(1109) - TMP_JAMP(1027) ! used 2 times + TMP_JAMP(1319) = TMP_JAMP(1108) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1066) ! used 2 times + TMP_JAMP(1318) = TMP_JAMP(1103) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(964) ! used 2 times + TMP_JAMP(1317) = TMP_JAMP(1101) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1056) ! used 2 times + TMP_JAMP(1316) = TMP_JAMP(1094) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1049) ! used 2 times + TMP_JAMP(1315) = TMP_JAMP(1093) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1067) ! used 2 times + TMP_JAMP(1314) = TMP_JAMP(1091) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1052) ! used 2 times + TMP_JAMP(1313) = TMP_JAMP(1086) - TMP_JAMP(999) ! used 2 times + TMP_JAMP(1312) = TMP_JAMP(1084) - TMP_JAMP(1060) ! used 2 times + TMP_JAMP(1311) = TMP_JAMP(1083) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1042) ! used 2 times + TMP_JAMP(1310) = TMP_JAMP(1079) + TMP_JAMP(1045) ! used 2 times + TMP_JAMP(1309) = TMP_JAMP(1076) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1051) ! used 2 times + TMP_JAMP(1308) = TMP_JAMP(1075) + TMP_JAMP(1009) ! used 2 times + TMP_JAMP(1307) = TMP_JAMP(1072) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(839) ! used 2 times + TMP_JAMP(1306) = TMP_JAMP(1070) + TMP_JAMP(1053) ! used 2 times + TMP_JAMP(1305) = TMP_JAMP(1069) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1032) ! used 2 times + TMP_JAMP(1416) = TMP_JAMP(1372) - TMP_JAMP(1331) ! used 2 times + TMP_JAMP(1415) = TMP_JAMP(1371) + TMP_JAMP(1319) ! used 2 times + TMP_JAMP(1414) = TMP_JAMP(1370) - TMP_JAMP(1309) ! used 2 times + TMP_JAMP(1413) = TMP_JAMP(1369) + TMP_JAMP(1321) ! used 2 times + TMP_JAMP(1412) = TMP_JAMP(1368) + TMP_JAMP(1315) ! used 2 times + TMP_JAMP(1411) = TMP_JAMP(1367) + TMP_JAMP(1254) ! used 2 times + TMP_JAMP(1410) = TMP_JAMP(1365) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1330) ! used 2 times + TMP_JAMP(1409) = TMP_JAMP(1363) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1324) ! used 2 times + TMP_JAMP(1408) = TMP_JAMP(1362) + TMP_JAMP(1305) ! used 2 times + TMP_JAMP(1407) = TMP_JAMP(1361) + TMP_JAMP(1239) ! used 2 times + TMP_JAMP(1406) = TMP_JAMP(1359) - TMP_JAMP(1297) ! used 2 times + TMP_JAMP(1405) = TMP_JAMP(1358) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1300) ! used 2 times + TMP_JAMP(1404) = TMP_JAMP(1357) + TMP_JAMP(1294) ! used 2 times + TMP_JAMP(1403) = TMP_JAMP(1356) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1262) ! used 2 times + TMP_JAMP(1402) = TMP_JAMP(1355) + TMP_JAMP(1306) ! used 2 times + TMP_JAMP(1401) = TMP_JAMP(1354) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1313) ! used 2 times + TMP_JAMP(1400) = TMP_JAMP(1353) - TMP_JAMP(1310) ! used 2 times + TMP_JAMP(1399) = TMP_JAMP(1352) - TMP_JAMP(1292) ! used 2 times + TMP_JAMP(1398) = TMP_JAMP(1348) - TMP_JAMP(1285) ! used 2 times + TMP_JAMP(1397) = TMP_JAMP(1347) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1327) ! used 2 times + TMP_JAMP(1396) = TMP_JAMP(1345) - TMP_JAMP(1289) ! used 2 times + TMP_JAMP(1395) = TMP_JAMP(1344) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1318) ! used 2 times + TMP_JAMP(1394) = TMP_JAMP(1343) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1323) ! used 2 times + TMP_JAMP(1393) = TMP_JAMP(1339) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1299) ! used 2 times + TMP_JAMP(1392) = TMP_JAMP(1338) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1274) ! used 2 times + TMP_JAMP(1391) = TMP_JAMP(1337) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1273) ! used 2 times + TMP_JAMP(1390) = TMP_JAMP(1336) - TMP_JAMP(1283) ! used 2 times + TMP_JAMP(1389) = TMP_JAMP(1335) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1235) ! used 2 times + TMP_JAMP(1388) = TMP_JAMP(1334) - TMP_JAMP(1251) ! used 2 times + TMP_JAMP(1387) = TMP_JAMP(1333) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1220) ! used 2 times + TMP_JAMP(1386) = TMP_JAMP(1332) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1191) ! used 2 times + TMP_JAMP(1385) = TMP_JAMP(1328) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1161) ! used 2 times + TMP_JAMP(1384) = TMP_JAMP(1326) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1230) ! used 2 times + TMP_JAMP(1383) = TMP_JAMP(1325) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1179) ! used 2 times + TMP_JAMP(1382) = TMP_JAMP(1322) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1221) ! used 2 times + TMP_JAMP(1381) = TMP_JAMP(1317) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1293) ! used 2 times + TMP_JAMP(1380) = TMP_JAMP(1316) - TMP_JAMP(1258) ! used 2 times + TMP_JAMP(1379) = TMP_JAMP(1314) + TMP_JAMP(1259) ! used 2 times + TMP_JAMP(1378) = TMP_JAMP(1312) + TMP_JAMP(1223) ! used 2 times + TMP_JAMP(1377) = TMP_JAMP(1308) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1225) ! used 2 times + TMP_JAMP(1419) = TMP_JAMP(1180) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(547) ! used 2 times + TMP_JAMP(1418) = TMP_JAMP(1139) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(241) ! used 2 times + TMP_JAMP(1417) = TMP_JAMP(855) + TMP_JAMP(243) ! used 2 times + TMP_JAMP(1479) = AMP(1371) - AMP(1381) ! used 16 times + TMP_JAMP(1478) = AMP(1370) - AMP(1382) ! used 16 times + TMP_JAMP(1477) = AMP(1358) - AMP(1361) ! used 16 times + TMP_JAMP(1476) = AMP(1323) + AMP(1387) ! used 16 times + TMP_JAMP(1475) = AMP(1322) + AMP(1388) ! used 16 times + TMP_JAMP(1474) = AMP(1320) + AMP(1324) ! used 16 times + TMP_JAMP(1473) = AMP(1310) - AMP(1313) ! used 16 times + TMP_JAMP(1472) = AMP(1309) + AMP(1311) ! used 16 times + TMP_JAMP(1471) = AMP(1103) + AMP(1359) ! used 16 times + TMP_JAMP(1470) = AMP(1085) + AMP(1087) ! used 16 times + TMP_JAMP(1469) = AMP(1084) - AMP(1100) ! used 16 times + TMP_JAMP(1468) = AMP(1080) + AMP(1082) ! used 16 times + TMP_JAMP(1467) = AMP(1079) - AMP(1099) ! used 16 times + TMP_JAMP(1466) = AMP(1076) + AMP(1078) ! used 16 times + TMP_JAMP(1465) = AMP(1378) + AMP(1383) ! used 16 times + TMP_JAMP(1464) = AMP(1367) + AMP(1369) ! used 16 times + TMP_JAMP(1463) = AMP(1330) - AMP(1389) ! used 16 times + TMP_JAMP(1462) = AMP(1319) + AMP(1321) ! used 16 times + TMP_JAMP(1461) = AMP(1315) - AMP(1318) ! used 16 times + TMP_JAMP(1460) = AMP(1314) + AMP(1316) ! used 16 times + TMP_JAMP(1459) = AMP(1357) + AMP(1360) ! used 16 times + TMP_JAMP(1458) = AMP(1163) + AMP(1165) ! used 16 times + TMP_JAMP(1457) = AMP(1159) + AMP(1161) ! used 16 times + TMP_JAMP(1456) = AMP(1158) + AMP(1160) ! used 16 times + TMP_JAMP(1455) = AMP(1368) + AMP(1372) ! used 16 times + TMP_JAMP(1454) = AMP(1164) + AMP(1168) ! used 16 times + TMP_JAMP(1453) = AMP(1154) + AMP(1156) ! used 16 times + TMP_JAMP(1452) = AMP(1153) + AMP(1155) ! used 16 times + TMP_JAMP(1451) = AMP(1362) + AMP(1364) ! used 16 times + TMP_JAMP(1450) = AMP(1101) + AMP(1104) ! used 16 times + TMP_JAMP(1449) = AMP(1363) - AMP(1366) ! used 16 times + TMP_JAMP(1448) = AMP(1347) + AMP(1384) ! used 16 times + TMP_JAMP(1447) = AMP(1346) + AMP(1385) ! used 16 times + TMP_JAMP(1446) = AMP(1334) - AMP(1337) ! used 16 times + TMP_JAMP(1445) = AMP(1181) + AMP(1336) ! used 16 times + TMP_JAMP(1444) = AMP(1162) - AMP(1178) ! used 16 times + TMP_JAMP(1443) = AMP(1157) - AMP(1177) ! used 16 times + TMP_JAMP(1442) = AMP(1354) - AMP(1386) ! used 16 times + TMP_JAMP(1441) = AMP(1343) + AMP(1345) ! used 16 times + TMP_JAMP(1440) = AMP(1333) + AMP(1335) ! used 16 times + TMP_JAMP(1439) = AMP(1081) + AMP(1083) ! used 16 times + TMP_JAMP(1438) = AMP(1344) + AMP(1348) ! used 16 times + TMP_JAMP(1437) = AMP(1086) + AMP(1090) ! used 16 times + TMP_JAMP(1436) = AMP(1075) + AMP(1077) ! used 16 times + TMP_JAMP(1435) = AMP(1338) + AMP(1340) ! used 16 times + TMP_JAMP(1434) = AMP(1179) + AMP(1182) ! used 16 times + TMP_JAMP(1433) = AMP(1339) - AMP(1342) ! used 16 times + TMP_JAMP(1432) = AMP(1259) + AMP(1312) ! used 16 times + TMP_JAMP(1431) = AMP(1257) + AMP(1260) ! used 16 times + TMP_JAMP(1430) = AMP(1240) - AMP(1256) ! used 16 times + TMP_JAMP(1429) = AMP(1237) + AMP(1239) ! used 16 times + TMP_JAMP(1428) = AMP(1242) + AMP(1246) ! used 16 times + TMP_JAMP(1427) = AMP(1236) + AMP(1238) ! used 16 times + TMP_JAMP(1426) = AMP(1241) + AMP(1243) ! used 16 times + TMP_JAMP(1425) = AMP(1235) - AMP(1255) ! used 16 times + TMP_JAMP(1424) = AMP(1231) + AMP(1233) ! used 16 times + TMP_JAMP(1423) = AMP(1232) + AMP(1234) ! used 16 times + TMP_JAMP(1422) = AMP(954) - AMP(1097) ! used 16 times + TMP_JAMP(1421) = AMP(952) + AMP(1328) ! used 16 times + TMP_JAMP(1420) = AMP(953) - AMP(1175) ! used 16 times + TMP_JAMP(1524) = TMP_JAMP(1477) + AMP(1390) ! used 16 times + TMP_JAMP(1523) = TMP_JAMP(1474) - AMP(1327) ! used 16 times + TMP_JAMP(1522) = TMP_JAMP(1473) - AMP(1392) ! used 16 times + TMP_JAMP(1521) = TMP_JAMP(1472) + AMP(1329) ! used 16 times + TMP_JAMP(1520) = TMP_JAMP(1471) - TMP_JAMP(1469) ! used 16 times + TMP_JAMP(1519) = TMP_JAMP(1470) - AMP(1096) ! used 16 times + TMP_JAMP(1518) = TMP_JAMP(1468) + AMP(1098) ! used 16 times + TMP_JAMP(1517) = TMP_JAMP(1467) - AMP(1102) ! used 16 times + TMP_JAMP(1516) = TMP_JAMP(1466) + AMP(1089) ! used 16 times + TMP_JAMP(1515) = TMP_JAMP(1464) - AMP(1393) ! used 16 times + TMP_JAMP(1514) = TMP_JAMP(1462) + AMP(1395) ! used 16 times + TMP_JAMP(1513) = TMP_JAMP(1461) - AMP(1325) ! used 16 times + TMP_JAMP(1512) = TMP_JAMP(1460) + AMP(1332) ! used 16 times + TMP_JAMP(1511) = TMP_JAMP(1459) + AMP(1377) ! used 16 times + TMP_JAMP(1510) = TMP_JAMP(1458) - AMP(1174) ! used 16 times + TMP_JAMP(1509) = TMP_JAMP(1457) + AMP(1173) ! used 16 times + TMP_JAMP(1508) = TMP_JAMP(1456) + AMP(1176) ! used 16 times + TMP_JAMP(1507) = TMP_JAMP(1455) - AMP(1375) ! used 16 times + TMP_JAMP(1506) = TMP_JAMP(1454) - AMP(1171) ! used 16 times + TMP_JAMP(1505) = TMP_JAMP(1453) + AMP(1167) ! used 16 times + TMP_JAMP(1504) = TMP_JAMP(1452) + AMP(1170) ! used 16 times + TMP_JAMP(1503) = TMP_JAMP(1451) + AMP(1379) ! used 16 times + TMP_JAMP(1502) = TMP_JAMP(1450) + AMP(1365) ! used 16 times + TMP_JAMP(1501) = TMP_JAMP(1449) - AMP(1373) ! used 16 times + TMP_JAMP(1500) = TMP_JAMP(1446) - AMP(1391) ! used 16 times + TMP_JAMP(1499) = TMP_JAMP(1445) - TMP_JAMP(1444) ! used 16 times + TMP_JAMP(1498) = TMP_JAMP(1443) - AMP(1180) ! used 16 times + TMP_JAMP(1497) = TMP_JAMP(1441) + AMP(1394) ! used 16 times + TMP_JAMP(1496) = TMP_JAMP(1440) + AMP(1353) ! used 16 times + TMP_JAMP(1495) = TMP_JAMP(1439) + AMP(1095) ! used 16 times + TMP_JAMP(1494) = TMP_JAMP(1438) - AMP(1351) ! used 16 times + TMP_JAMP(1493) = TMP_JAMP(1437) - AMP(1093) ! used 16 times + TMP_JAMP(1492) = TMP_JAMP(1436) + AMP(1092) ! used 16 times + TMP_JAMP(1491) = TMP_JAMP(1435) + AMP(1356) ! used 16 times + TMP_JAMP(1490) = TMP_JAMP(1434) + AMP(1341) ! used 16 times + TMP_JAMP(1489) = TMP_JAMP(1433) - AMP(1349) ! used 16 times + TMP_JAMP(1488) = TMP_JAMP(1432) - TMP_JAMP(1430) ! used 16 times + TMP_JAMP(1487) = TMP_JAMP(1431) + AMP(1317) ! used 16 times + TMP_JAMP(1486) = TMP_JAMP(1429) + AMP(1251) ! used 16 times + TMP_JAMP(1485) = TMP_JAMP(1428) - AMP(1249) ! used 16 times + TMP_JAMP(1484) = TMP_JAMP(1427) + AMP(1254) ! used 16 times + TMP_JAMP(1483) = TMP_JAMP(1426) - AMP(1252) ! used 16 times + TMP_JAMP(1482) = TMP_JAMP(1425) - AMP(1258) ! used 16 times + TMP_JAMP(1481) = TMP_JAMP(1424) + AMP(1248) ! used 16 times + TMP_JAMP(1480) = TMP_JAMP(1423) + AMP(1245) ! used 16 times + TMP_JAMP(1530) = TMP_JAMP(1524) - TMP_JAMP(1478) ! used 16 times + TMP_JAMP(1529) = TMP_JAMP(1522) - TMP_JAMP(1475) ! used 16 times + TMP_JAMP(1528) = TMP_JAMP(1515) - TMP_JAMP(1465) ! used 16 times + TMP_JAMP(1527) = TMP_JAMP(1514) - TMP_JAMP(1463) ! used 16 times + TMP_JAMP(1526) = TMP_JAMP(1500) - TMP_JAMP(1447) ! used 16 times + TMP_JAMP(1525) = TMP_JAMP(1497) - TMP_JAMP(1442) ! used 16 times + TMP_JAMP(1708) = TMP_JAMP(1530) + TMP_JAMP(1520) ! used 8 times + TMP_JAMP(1707) = TMP_JAMP(1530) + TMP_JAMP(1529) ! used 8 times + TMP_JAMP(1706) = TMP_JAMP(1530) - TMP_JAMP(1526) ! used 8 times + TMP_JAMP(1705) = TMP_JAMP(1530) - TMP_JAMP(1511) ! used 8 times + TMP_JAMP(1704) = TMP_JAMP(1529) + TMP_JAMP(1521) ! used 8 times + TMP_JAMP(1703) = TMP_JAMP(1529) + TMP_JAMP(1526) ! used 8 times + TMP_JAMP(1702) = TMP_JAMP(1529) - TMP_JAMP(1488) ! used 8 times + TMP_JAMP(1701) = TMP_JAMP(1528) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1072) ! used 8 times + TMP_JAMP(1700) = TMP_JAMP(1528) - TMP_JAMP(1479) ! used 8 times + TMP_JAMP(1699) = TMP_JAMP(1528) - TMP_JAMP(1503) ! used 8 times + TMP_JAMP(1698) = TMP_JAMP(1528) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1012) ! used 8 times + TMP_JAMP(1697) = TMP_JAMP(1527) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1074) ! used 8 times + TMP_JAMP(1696) = TMP_JAMP(1527) - TMP_JAMP(1476) ! used 8 times + TMP_JAMP(1695) = TMP_JAMP(1527) + TMP_JAMP(1512) ! used 8 times + TMP_JAMP(1694) = TMP_JAMP(1527) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1014) ! used 8 times + TMP_JAMP(1693) = TMP_JAMP(1526) - TMP_JAMP(1448) ! used 8 times + TMP_JAMP(1692) = TMP_JAMP(1526) + TMP_JAMP(1496) ! used 8 times + TMP_JAMP(1691) = TMP_JAMP(1525) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1073) ! used 8 times + TMP_JAMP(1690) = TMP_JAMP(1525) + TMP_JAMP(1491) ! used 8 times + TMP_JAMP(1689) = TMP_JAMP(1525) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1013) ! used 8 times + TMP_JAMP(1688) = TMP_JAMP(1523) + TMP_JAMP(1519) ! used 8 times + TMP_JAMP(1687) = TMP_JAMP(1523) + TMP_JAMP(1521) ! used 8 times + TMP_JAMP(1686) = TMP_JAMP(1523) - TMP_JAMP(1510) ! used 8 times + TMP_JAMP(1685) = TMP_JAMP(1523) - TMP_JAMP(1513) ! used 8 times + TMP_JAMP(1684) = TMP_JAMP(1521) + TMP_JAMP(1518) ! used 8 times + TMP_JAMP(1683) = TMP_JAMP(1521) - TMP_JAMP(1508) ! used 8 times + TMP_JAMP(1682) = TMP_JAMP(1521) + TMP_JAMP(1488) ! used 8 times + TMP_JAMP(1681) = TMP_JAMP(1520) + TMP_JAMP(1518) ! used 8 times + TMP_JAMP(1680) = TMP_JAMP(1520) + TMP_JAMP(1511) ! used 8 times + TMP_JAMP(1679) = TMP_JAMP(1520) - TMP_JAMP(1495) ! used 8 times + TMP_JAMP(1678) = TMP_JAMP(1519) + TMP_JAMP(1518) ! used 8 times + TMP_JAMP(1677) = TMP_JAMP(1519) + TMP_JAMP(1510) ! used 8 times + TMP_JAMP(1676) = TMP_JAMP(1518) + TMP_JAMP(1508) ! used 8 times + TMP_JAMP(1675) = TMP_JAMP(1518) + TMP_JAMP(1495) ! used 8 times + TMP_JAMP(1674) = TMP_JAMP(1517) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1147) ! used 8 times + TMP_JAMP(1673) = TMP_JAMP(1517) + TMP_JAMP(1516) ! used 8 times + TMP_JAMP(1672) = TMP_JAMP(1517) - TMP_JAMP(1492) ! used 8 times + TMP_JAMP(1671) = TMP_JAMP(1517) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1148) ! used 8 times + TMP_JAMP(1670) = TMP_JAMP(1516) + TMP_JAMP(1492) ! used 8 times + TMP_JAMP(1669) = TMP_JAMP(1513) - AMP(1326) ! used 8 times + TMP_JAMP(1668) = TMP_JAMP(1513) + TMP_JAMP(1512) ! used 8 times + TMP_JAMP(1667) = TMP_JAMP(1511) + AMP(1376) ! used 8 times + TMP_JAMP(1666) = TMP_JAMP(1511) - TMP_JAMP(1486) ! used 8 times + TMP_JAMP(1665) = TMP_JAMP(1511) + TMP_JAMP(1507) ! used 8 times + TMP_JAMP(1664) = TMP_JAMP(1510) - TMP_JAMP(1505) ! used 8 times + TMP_JAMP(1663) = TMP_JAMP(1509) + TMP_JAMP(1508) ! used 8 times + TMP_JAMP(1662) = TMP_JAMP(1509) + TMP_JAMP(1486) ! used 8 times + TMP_JAMP(1661) = TMP_JAMP(1509) - TMP_JAMP(1499) ! used 8 times + TMP_JAMP(1660) = TMP_JAMP(1509) + TMP_JAMP(1506) ! used 8 times + TMP_JAMP(1659) = TMP_JAMP(1508) + TMP_JAMP(1499) ! used 8 times + TMP_JAMP(1658) = TMP_JAMP(1507) + TMP_JAMP(1506) ! used 8 times + TMP_JAMP(1657) = TMP_JAMP(1507) - TMP_JAMP(1485) ! used 8 times + TMP_JAMP(1656) = TMP_JAMP(1507) - TMP_JAMP(1501) ! used 8 times + TMP_JAMP(1655) = TMP_JAMP(1506) - AMP(1172) ! used 8 times + TMP_JAMP(1654) = TMP_JAMP(1506) - TMP_JAMP(1504) ! used 8 times + TMP_JAMP(1653) = TMP_JAMP(1506) + TMP_JAMP(1485) ! used 8 times + TMP_JAMP(1652) = TMP_JAMP(1505) + TMP_JAMP(1504) ! used 8 times + TMP_JAMP(1651) = TMP_JAMP(1503) + TMP_JAMP(1501) ! used 8 times + TMP_JAMP(1650) = TMP_JAMP(1502) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1150) ! used 8 times + TMP_JAMP(1649) = TMP_JAMP(1502) - TMP_JAMP(1501) ! used 8 times + TMP_JAMP(1648) = TMP_JAMP(1502) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1149) ! used 8 times + TMP_JAMP(1647) = TMP_JAMP(1501) - AMP(1374) ! used 8 times + TMP_JAMP(1646) = TMP_JAMP(1499) + TMP_JAMP(1496) ! used 8 times + TMP_JAMP(1645) = TMP_JAMP(1498) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1225) ! used 8 times + TMP_JAMP(1644) = TMP_JAMP(1498) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1226) ! used 8 times + TMP_JAMP(1643) = TMP_JAMP(1496) + TMP_JAMP(1495) ! used 8 times + TMP_JAMP(1642) = TMP_JAMP(1496) + TMP_JAMP(1494) ! used 8 times + TMP_JAMP(1641) = TMP_JAMP(1496) - TMP_JAMP(1484) ! used 8 times + TMP_JAMP(1640) = TMP_JAMP(1495) + AMP(1094) ! used 8 times + TMP_JAMP(1639) = TMP_JAMP(1495) + TMP_JAMP(1484) ! used 8 times + TMP_JAMP(1638) = TMP_JAMP(1495) + TMP_JAMP(1493) ! used 8 times + TMP_JAMP(1637) = TMP_JAMP(1494) - AMP(1350) ! used 8 times + TMP_JAMP(1636) = TMP_JAMP(1494) + TMP_JAMP(1493) ! used 8 times + TMP_JAMP(1635) = TMP_JAMP(1494) - TMP_JAMP(1483) ! used 8 times + TMP_JAMP(1634) = TMP_JAMP(1494) - TMP_JAMP(1489) ! used 8 times + TMP_JAMP(1633) = TMP_JAMP(1493) - AMP(1094) ! used 8 times + TMP_JAMP(1632) = TMP_JAMP(1493) - TMP_JAMP(1492) ! used 8 times + TMP_JAMP(1631) = TMP_JAMP(1493) + TMP_JAMP(1483) ! used 8 times + TMP_JAMP(1630) = TMP_JAMP(1491) + TMP_JAMP(1489) ! used 8 times + TMP_JAMP(1629) = TMP_JAMP(1490) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1228) ! used 8 times + TMP_JAMP(1628) = TMP_JAMP(1490) - TMP_JAMP(1489) ! used 8 times + TMP_JAMP(1627) = TMP_JAMP(1490) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1227) ! used 8 times + TMP_JAMP(1626) = TMP_JAMP(1489) - AMP(1350) ! used 8 times + TMP_JAMP(1625) = TMP_JAMP(1488) - TMP_JAMP(1486) ! used 8 times + TMP_JAMP(1624) = TMP_JAMP(1488) + TMP_JAMP(1484) ! used 8 times + TMP_JAMP(1623) = TMP_JAMP(1487) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1305) ! used 8 times + TMP_JAMP(1622) = TMP_JAMP(1487) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1306) ! used 8 times + TMP_JAMP(1621) = TMP_JAMP(1486) + AMP(1250) ! used 8 times + TMP_JAMP(1620) = TMP_JAMP(1486) + TMP_JAMP(1485) ! used 8 times + TMP_JAMP(1619) = TMP_JAMP(1485) - AMP(1250) ! used 8 times + TMP_JAMP(1618) = TMP_JAMP(1485) - TMP_JAMP(1481) ! used 8 times + TMP_JAMP(1617) = TMP_JAMP(1484) + TMP_JAMP(1483) ! used 8 times + TMP_JAMP(1616) = TMP_JAMP(1483) - TMP_JAMP(1480) ! used 8 times + TMP_JAMP(1615) = TMP_JAMP(1482) - TMP_JAMP(1481) ! used 8 times + TMP_JAMP(1614) = TMP_JAMP(1482) + TMP_JAMP(1480) ! used 8 times + TMP_JAMP(1613) = TMP_JAMP(1482) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1303) ! used 8 times + TMP_JAMP(1612) = TMP_JAMP(1481) + TMP_JAMP(1480) ! used 8 times + TMP_JAMP(1611) = TMP_JAMP(1479) + TMP_JAMP(1476) ! used 8 times + TMP_JAMP(1610) = TMP_JAMP(1479) - TMP_JAMP(1448) ! used 8 times + TMP_JAMP(1609) = TMP_JAMP(1479) - AMP(1374) ! used 8 times + TMP_JAMP(1608) = TMP_JAMP(1476) + AMP(1326) ! used 8 times + TMP_JAMP(1607) = TMP_JAMP(1476) + TMP_JAMP(1448) ! used 8 times + TMP_JAMP(1606) = TMP_JAMP(1448) + AMP(1350) ! used 8 times + TMP_JAMP(1605) = TMP_JAMP(1422) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(948) ! used 8 times + TMP_JAMP(1604) = TMP_JAMP(1422) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(951) ! used 8 times + TMP_JAMP(1603) = TMP_JAMP(1421) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(946) ! used 8 times + TMP_JAMP(1602) = TMP_JAMP(1421) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(949) ! used 8 times + TMP_JAMP(1601) = TMP_JAMP(1420) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(947) ! used 8 times + TMP_JAMP(1600) = TMP_JAMP(1420) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(950) ! used 8 times + TMP_JAMP(1599) = AMP(1122) + AMP(1123) ! used 8 times + TMP_JAMP(1598) = AMP(1117) + AMP(1125) ! used 8 times + TMP_JAMP(1597) = AMP(1068) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1380) ! used 8 times + TMP_JAMP(1596) = AMP(1064) - AMP(1066) ! used 8 times + TMP_JAMP(1595) = AMP(1046) - AMP(1048) ! used 8 times + TMP_JAMP(1594) = AMP(1044) + AMP(1050) ! used 8 times + TMP_JAMP(1593) = AMP(1200) + AMP(1201) ! used 8 times + TMP_JAMP(1592) = AMP(1172) + AMP(1376) ! used 8 times + TMP_JAMP(1591) = AMP(1166) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1202) ! used 8 times + TMP_JAMP(1590) = AMP(1166) + AMP(1172) ! used 8 times + TMP_JAMP(1589) = AMP(1212) + AMP(1213) ! used 8 times + TMP_JAMP(1588) = AMP(1207) + AMP(1215) ! used 8 times + TMP_JAMP(1587) = AMP(1195) + AMP(1203) ! used 8 times + TMP_JAMP(1586) = AMP(1088) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1124) ! used 8 times + TMP_JAMP(1585) = AMP(1062) + AMP(1067) ! used 8 times + TMP_JAMP(1584) = AMP(1058) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1355) ! used 8 times + TMP_JAMP(1583) = AMP(1055) - AMP(1057) ! used 8 times + TMP_JAMP(1582) = AMP(1094) + AMP(1352) ! used 8 times + TMP_JAMP(1581) = AMP(1088) + AMP(1094) ! used 8 times + TMP_JAMP(1580) = AMP(1134) + AMP(1135) ! used 8 times + TMP_JAMP(1579) = AMP(1129) + AMP(1137) ! used 8 times + TMP_JAMP(1578) = AMP(1053) + AMP(1059) ! used 8 times + TMP_JAMP(1577) = AMP(1172) + AMP(1250) ! used 8 times + TMP_JAMP(1576) = AMP(1290) + AMP(1291) ! used 8 times + TMP_JAMP(1575) = AMP(1247) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1292) ! used 8 times + TMP_JAMP(1574) = AMP(1094) + AMP(1253) ! used 8 times + TMP_JAMP(1573) = AMP(1299) + AMP(1300) ! used 8 times + TMP_JAMP(1572) = AMP(1244) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1301) ! used 8 times + TMP_JAMP(1571) = AMP(1285) + AMP(1293) ! used 8 times + TMP_JAMP(1570) = AMP(1294) + AMP(1302) ! used 8 times + TMP_JAMP(1569) = AMP(1049) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1331) ! used 8 times + TMP_JAMP(1568) = AMP(1169) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1214) ! used 8 times + TMP_JAMP(1567) = AMP(1091) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1136) ! used 8 times + TMP_JAMP(1566) = AMP(1110) + AMP(1111) ! used 8 times + TMP_JAMP(1565) = AMP(1105) + AMP(1113) ! used 8 times + TMP_JAMP(1564) = AMP(1278) + AMP(1279) ! used 8 times + TMP_JAMP(1563) = AMP(1250) - AMP(1376) ! used 8 times + TMP_JAMP(1562) = AMP(1244) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1280) ! used 8 times + TMP_JAMP(1561) = AMP(1244) + AMP(1250) ! used 8 times + TMP_JAMP(1560) = AMP(1273) + AMP(1281) ! used 8 times + TMP_JAMP(1559) = AMP(1091) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1112) ! used 8 times + TMP_JAMP(1558) = AMP(1143) + AMP(1144) ! used 8 times + TMP_JAMP(1557) = AMP(1138) + AMP(1146) ! used 8 times + TMP_JAMP(1556) = AMP(1221) + AMP(1222) ! used 8 times + TMP_JAMP(1555) = AMP(1166) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1223) ! used 8 times + TMP_JAMP(1554) = AMP(1216) + AMP(1224) ! used 8 times + TMP_JAMP(1553) = AMP(1352) + AMP(1355) ! used 8 times + TMP_JAMP(1552) = AMP(1247) + AMP(1253) ! used 8 times + TMP_JAMP(1551) = AMP(1253) - AMP(1352) ! used 8 times + TMP_JAMP(1550) = AMP(1088) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1145) ! used 8 times + TMP_JAMP(1549) = AMP(1413) + AMP(1414) ! used 8 times + TMP_JAMP(1548) = AMP(1374) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1416) ! used 8 times + TMP_JAMP(1547) = AMP(1188) + AMP(1189) ! used 8 times + TMP_JAMP(1546) = AMP(1183) + AMP(1191) ! used 8 times + TMP_JAMP(1545) = AMP(1411) - AMP(1415) ! used 8 times + TMP_JAMP(1544) = AMP(1266) + AMP(1267) ! used 8 times + TMP_JAMP(1543) = AMP(1247) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1268) ! used 8 times + TMP_JAMP(1542) = AMP(1261) + AMP(1269) ! used 8 times + TMP_JAMP(1541) = AMP(1169) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1190) ! used 8 times + TMP_JAMP(1540) = AMP(1376) + AMP(1380) ! used 8 times + TMP_JAMP(1539) = AMP(1008) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1380) ! used 8 times + TMP_JAMP(1538) = AMP(1004) - AMP(1006) ! used 8 times + TMP_JAMP(1537) = AMP(986) - AMP(988) ! used 8 times + TMP_JAMP(1536) = AMP(984) + AMP(990) ! used 8 times + TMP_JAMP(1535) = AMP(1002) + AMP(1007) ! used 8 times + TMP_JAMP(1534) = AMP(998) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1355) ! used 8 times + TMP_JAMP(1533) = AMP(995) - AMP(997) ! used 8 times + TMP_JAMP(1532) = AMP(993) + AMP(999) ! used 8 times + TMP_JAMP(1531) = AMP(989) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1331) ! used 8 times + TMP_JAMP(1711) = TMP_JAMP(1698) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1538) ! used 8 times + TMP_JAMP(1710) = TMP_JAMP(1694) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1537) ! used 8 times + TMP_JAMP(1709) = TMP_JAMP(1689) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1533) ! used 8 times + TMP_JAMP(1712) = TMP_JAMP(1691) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1583) ! used 6 times + TMP_JAMP(1714) = TMP_JAMP(1697) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1595) ! used 5 times + TMP_JAMP(1713) = TMP_JAMP(1557) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1516) ! used 5 times + TMP_JAMP(1843) = TMP_JAMP(1711) + TMP_JAMP(1710) ! used 4 times + TMP_JAMP(1842) = TMP_JAMP(1711) - TMP_JAMP(1709) ! used 4 times + TMP_JAMP(1841) = TMP_JAMP(1710) + TMP_JAMP(1709) ! used 4 times + TMP_JAMP(1840) = TMP_JAMP(1710) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1531) ! used 4 times + TMP_JAMP(1839) = TMP_JAMP(1709) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1534) ! used 4 times + TMP_JAMP(1838) = TMP_JAMP(1703) - TMP_JAMP(1659) ! used 4 times + TMP_JAMP(1837) = TMP_JAMP(1701) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1596) ! used 4 times + TMP_JAMP(1836) = TMP_JAMP(1685) + TMP_JAMP(1521) ! used 4 times + TMP_JAMP(1835) = TMP_JAMP(1679) - TMP_JAMP(1632) ! used 4 times + TMP_JAMP(1834) = TMP_JAMP(1673) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1598) ! used 4 times + TMP_JAMP(1833) = TMP_JAMP(1671) - AMP(1139) ! used 4 times + TMP_JAMP(1832) = TMP_JAMP(1668) - AMP(1041) ! used 4 times + TMP_JAMP(1831) = TMP_JAMP(1664) + TMP_JAMP(1659) ! used 4 times + TMP_JAMP(1830) = TMP_JAMP(1661) + TMP_JAMP(1654) ! used 4 times + TMP_JAMP(1829) = TMP_JAMP(1651) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1585) ! used 4 times + TMP_JAMP(1828) = TMP_JAMP(1648) + AMP(1151) ! used 4 times + TMP_JAMP(1827) = TMP_JAMP(1648) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1535) ! used 4 times + TMP_JAMP(1826) = TMP_JAMP(1645) + AMP(1184) ! used 4 times + TMP_JAMP(1825) = TMP_JAMP(1642) - TMP_JAMP(1606) ! used 4 times + TMP_JAMP(1824) = TMP_JAMP(1635) + TMP_JAMP(1551) ! used 4 times + TMP_JAMP(1823) = TMP_JAMP(1630) - TMP_JAMP(1606) ! used 4 times + TMP_JAMP(1822) = TMP_JAMP(1629) + AMP(1230) ! used 4 times + TMP_JAMP(1821) = TMP_JAMP(1627) + AMP(1229) ! used 4 times + TMP_JAMP(1820) = TMP_JAMP(1627) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1532) ! used 4 times + TMP_JAMP(1819) = TMP_JAMP(1623) + AMP(1307) ! used 4 times + TMP_JAMP(1818) = TMP_JAMP(1623) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1536) ! used 4 times + TMP_JAMP(1817) = TMP_JAMP(1620) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1576) ! used 4 times + TMP_JAMP(1816) = TMP_JAMP(1617) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1573) ! used 4 times + TMP_JAMP(1815) = TMP_JAMP(1615) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1571) ! used 4 times + TMP_JAMP(1814) = TMP_JAMP(1614) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1570) ! used 4 times + TMP_JAMP(1813) = TMP_JAMP(1613) + AMP(1308) ! used 4 times + TMP_JAMP(1812) = TMP_JAMP(1612) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1571) ! used 4 times + TMP_JAMP(1811) = TMP_JAMP(1612) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1570) ! used 4 times + TMP_JAMP(1810) = TMP_JAMP(1607) + AMP(1326) ! used 4 times + TMP_JAMP(1809) = TMP_JAMP(1605) - TMP_JAMP(1603) ! used 4 times + TMP_JAMP(1808) = TMP_JAMP(1605) + TMP_JAMP(1601) ! used 4 times + TMP_JAMP(1807) = TMP_JAMP(1604) - TMP_JAMP(1559) ! used 4 times + TMP_JAMP(1806) = TMP_JAMP(1604) - AMP(1141) ! used 4 times + TMP_JAMP(1805) = TMP_JAMP(1604) + TMP_JAMP(1600) ! used 4 times + TMP_JAMP(1804) = TMP_JAMP(1603) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1569) ! used 4 times + TMP_JAMP(1803) = TMP_JAMP(1603) + TMP_JAMP(1601) ! used 4 times + TMP_JAMP(1802) = TMP_JAMP(1602) - AMP(945) ! used 4 times + TMP_JAMP(1801) = TMP_JAMP(1602) + TMP_JAMP(1600) ! used 4 times + TMP_JAMP(1800) = TMP_JAMP(1602) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1531) ! used 4 times + TMP_JAMP(1799) = TMP_JAMP(1600) - AMP(1219) ! used 4 times + TMP_JAMP(1798) = TMP_JAMP(1600) - TMP_JAMP(1541) ! used 4 times + TMP_JAMP(1797) = TMP_JAMP(1599) - TMP_JAMP(1598) ! used 4 times + TMP_JAMP(1796) = TMP_JAMP(1599) + TMP_JAMP(1593) ! used 4 times + TMP_JAMP(1795) = TMP_JAMP(1599) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1120) ! used 4 times + TMP_JAMP(1794) = TMP_JAMP(1598) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1118) ! used 4 times + TMP_JAMP(1793) = TMP_JAMP(1598) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1126) ! used 4 times + TMP_JAMP(1792) = TMP_JAMP(1596) - AMP(1072) ! used 4 times + TMP_JAMP(1791) = TMP_JAMP(1596) - TMP_JAMP(1585) ! used 4 times + TMP_JAMP(1790) = TMP_JAMP(1594) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1041) ! used 4 times + TMP_JAMP(1789) = TMP_JAMP(1594) + TMP_JAMP(1569) ! used 4 times + TMP_JAMP(1788) = TMP_JAMP(1594) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1045) ! used 4 times + TMP_JAMP(1787) = TMP_JAMP(1593) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1198) ! used 4 times + TMP_JAMP(1786) = TMP_JAMP(1589) - TMP_JAMP(1588) ! used 4 times + TMP_JAMP(1785) = TMP_JAMP(1589) + TMP_JAMP(1576) ! used 4 times + TMP_JAMP(1784) = TMP_JAMP(1589) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1568) ! used 4 times + TMP_JAMP(1783) = TMP_JAMP(1588) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1568) ! used 4 times + TMP_JAMP(1782) = TMP_JAMP(1588) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1208) ! used 4 times + TMP_JAMP(1781) = TMP_JAMP(1587) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1204) ! used 4 times + TMP_JAMP(1780) = TMP_JAMP(1587) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1196) ! used 4 times + TMP_JAMP(1779) = TMP_JAMP(1585) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1063) ! used 4 times + TMP_JAMP(1778) = TMP_JAMP(1580) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1132) ! used 4 times + TMP_JAMP(1777) = TMP_JAMP(1580) + TMP_JAMP(1573) ! used 4 times + TMP_JAMP(1776) = TMP_JAMP(1580) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1567) ! used 4 times + TMP_JAMP(1775) = TMP_JAMP(1579) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1126) ! used 4 times + TMP_JAMP(1774) = TMP_JAMP(1579) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1567) ! used 4 times + TMP_JAMP(1773) = TMP_JAMP(1579) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1130) ! used 4 times + TMP_JAMP(1772) = TMP_JAMP(1578) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1054) ! used 4 times + TMP_JAMP(1771) = TMP_JAMP(1578) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1032) ! used 4 times + TMP_JAMP(1770) = TMP_JAMP(1576) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1288) ! used 4 times + TMP_JAMP(1769) = TMP_JAMP(1576) - TMP_JAMP(1571) ! used 4 times + TMP_JAMP(1768) = TMP_JAMP(1573) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1297) ! used 4 times + TMP_JAMP(1767) = TMP_JAMP(1573) - TMP_JAMP(1570) ! used 4 times + TMP_JAMP(1766) = TMP_JAMP(1566) + TMP_JAMP(1564) ! used 4 times + TMP_JAMP(1765) = TMP_JAMP(1566) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1559) ! used 4 times + TMP_JAMP(1764) = TMP_JAMP(1566) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1108) ! used 4 times + TMP_JAMP(1763) = TMP_JAMP(1565) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1106) ! used 4 times + TMP_JAMP(1762) = TMP_JAMP(1565) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1559) ! used 4 times + TMP_JAMP(1761) = TMP_JAMP(1565) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1114) ! used 4 times + TMP_JAMP(1760) = TMP_JAMP(1564) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1276) ! used 4 times + TMP_JAMP(1759) = TMP_JAMP(1561) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1280) ! used 4 times + TMP_JAMP(1758) = TMP_JAMP(1561) + AMP(1172) ! used 4 times + TMP_JAMP(1757) = TMP_JAMP(1561) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1301) ! used 4 times + TMP_JAMP(1756) = TMP_JAMP(1560) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1282) ! used 4 times + TMP_JAMP(1755) = TMP_JAMP(1560) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1274) ! used 4 times + TMP_JAMP(1754) = TMP_JAMP(1558) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1141) ! used 4 times + TMP_JAMP(1753) = TMP_JAMP(1558) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1550) ! used 4 times + TMP_JAMP(1752) = TMP_JAMP(1556) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1555) ! used 4 times + TMP_JAMP(1751) = TMP_JAMP(1556) - TMP_JAMP(1554) ! used 4 times + TMP_JAMP(1750) = TMP_JAMP(1555) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1554) ! used 4 times + TMP_JAMP(1749) = TMP_JAMP(1554) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1217) ! used 4 times + TMP_JAMP(1748) = TMP_JAMP(1549) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1548) ! used 4 times + TMP_JAMP(1747) = TMP_JAMP(1549) - TMP_JAMP(1544) ! used 4 times + TMP_JAMP(1746) = TMP_JAMP(1549) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1408) ! used 4 times + TMP_JAMP(1745) = TMP_JAMP(1547) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1541) ! used 4 times + TMP_JAMP(1744) = TMP_JAMP(1547) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1186) ! used 4 times + TMP_JAMP(1743) = TMP_JAMP(1546) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1184) ! used 4 times + TMP_JAMP(1742) = TMP_JAMP(1546) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1541) ! used 4 times + TMP_JAMP(1741) = TMP_JAMP(1546) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1192) ! used 4 times + TMP_JAMP(1740) = TMP_JAMP(1545) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1023) ! used 4 times + TMP_JAMP(1739) = TMP_JAMP(1545) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1410) ! used 4 times + TMP_JAMP(1738) = TMP_JAMP(1544) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1543) ! used 4 times + TMP_JAMP(1737) = TMP_JAMP(1544) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1264) ! used 4 times + TMP_JAMP(1736) = TMP_JAMP(1542) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1270) ! used 4 times + TMP_JAMP(1735) = TMP_JAMP(1542) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1262) ! used 4 times + TMP_JAMP(1734) = TMP_JAMP(1540) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1068) ! used 4 times + TMP_JAMP(1733) = TMP_JAMP(1539) + TMP_JAMP(1535) ! used 4 times + TMP_JAMP(1732) = TMP_JAMP(1536) + TMP_JAMP(1531) ! used 4 times + TMP_JAMP(1731) = TMP_JAMP(1536) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(981) ! used 4 times + TMP_JAMP(1730) = TMP_JAMP(1535) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(963) ! used 4 times + TMP_JAMP(1729) = TMP_JAMP(1534) + TMP_JAMP(1532) ! used 4 times + TMP_JAMP(1728) = TMP_JAMP(1532) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(972) ! used 4 times + TMP_JAMP(1727) = TMP_JAMP(1512) + AMP(985) ! used 4 times + TMP_JAMP(1726) = TMP_JAMP(1503) + AMP(1003) ! used 4 times + TMP_JAMP(1725) = TMP_JAMP(1491) + AMP(994) ! used 4 times + TMP_JAMP(1724) = AMP(1118) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1147) ! used 4 times + TMP_JAMP(1723) = AMP(1061) + AMP(1069) ! used 4 times + TMP_JAMP(1722) = AMP(1043) - AMP(1071) ! used 4 times + TMP_JAMP(1721) = AMP(1147) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1152) ! used 4 times + TMP_JAMP(1720) = AMP(1052) - AMP(1070) ! used 4 times + TMP_JAMP(1719) = AMP(1286) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1304) ! used 4 times + TMP_JAMP(1718) = AMP(1295) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1304) ! used 4 times + TMP_JAMP(1717) = AMP(1001) + AMP(1009) ! used 4 times + TMP_JAMP(1716) = AMP(983) - AMP(1011) ! used 4 times + TMP_JAMP(1715) = AMP(992) - AMP(1010) ! used 4 times + TMP_JAMP(1857) = TMP_JAMP(1833) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1713) ! used 4 times + TMP_JAMP(1856) = TMP_JAMP(1813) + TMP_JAMP(1622) ! used 4 times + TMP_JAMP(1855) = TMP_JAMP(1788) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1622) ! used 4 times + TMP_JAMP(1854) = TMP_JAMP(1782) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1644) ! used 4 times + TMP_JAMP(1853) = TMP_JAMP(1781) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1652) ! used 4 times + TMP_JAMP(1852) = TMP_JAMP(1780) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1645) ! used 4 times + TMP_JAMP(1851) = TMP_JAMP(1779) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1650) ! used 4 times + TMP_JAMP(1850) = TMP_JAMP(1773) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1671) ! used 4 times + TMP_JAMP(1849) = TMP_JAMP(1749) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1644) ! used 4 times + TMP_JAMP(1848) = TMP_JAMP(1741) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1652) ! used 4 times + TMP_JAMP(1847) = TMP_JAMP(1731) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1668) ! used 4 times + TMP_JAMP(1846) = TMP_JAMP(1730) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1651) ! used 4 times + TMP_JAMP(1845) = TMP_JAMP(1721) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1650) ! used 4 times + TMP_JAMP(1844) = TMP_JAMP(1720) - TMP_JAMP(1712) ! used 4 times + TMP_JAMP(1862) = TMP_JAMP(1722) - TMP_JAMP(1714) ! used 3 times + TMP_JAMP(1861) = TMP_JAMP(1670) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1557) ! used 3 times + TMP_JAMP(1860) = TMP_JAMP(1631) - TMP_JAMP(1574) ! used 3 times + TMP_JAMP(1859) = TMP_JAMP(1608) + TMP_JAMP(1479) ! used 3 times + TMP_JAMP(1858) = TMP_JAMP(1595) + AMP(1074) ! used 3 times + TMP_JAMP(1863) = TMP_JAMP(1861) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1761) ! used 3 times + TMP_JAMP(2077) = TMP_JAMP(1863) - TMP_JAMP(1807) ! used 2 times + TMP_JAMP(2076) = TMP_JAMP(1862) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1790) ! used 2 times + TMP_JAMP(2075) = TMP_JAMP(1857) + TMP_JAMP(1828) ! used 2 times + TMP_JAMP(2074) = TMP_JAMP(1857) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1558) ! used 2 times + TMP_JAMP(2073) = TMP_JAMP(1856) - TMP_JAMP(1669) ! used 2 times + TMP_JAMP(2072) = TMP_JAMP(1855) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1695) ! used 2 times + TMP_JAMP(2071) = TMP_JAMP(1854) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1568) ! used 2 times + TMP_JAMP(2070) = TMP_JAMP(1853) + TMP_JAMP(1786) ! used 2 times + TMP_JAMP(2069) = TMP_JAMP(1852) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1831) ! used 2 times + TMP_JAMP(2068) = TMP_JAMP(1852) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1591) ! used 2 times + TMP_JAMP(2067) = TMP_JAMP(1850) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1567) ! used 2 times + TMP_JAMP(2066) = TMP_JAMP(1849) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1555) ! used 2 times + TMP_JAMP(2065) = TMP_JAMP(1848) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1750) ! used 2 times + TMP_JAMP(2064) = TMP_JAMP(1846) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1711) ! used 2 times + TMP_JAMP(2063) = TMP_JAMP(1845) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1647) ! used 2 times + TMP_JAMP(2062) = TMP_JAMP(1844) - TMP_JAMP(1823) ! used 2 times + TMP_JAMP(2061) = TMP_JAMP(1840) - TMP_JAMP(1716) ! used 2 times + TMP_JAMP(2060) = TMP_JAMP(1839) + TMP_JAMP(1710) ! used 2 times + TMP_JAMP(2059) = TMP_JAMP(1839) - TMP_JAMP(1711) ! used 2 times + TMP_JAMP(2058) = TMP_JAMP(1838) + TMP_JAMP(1521) ! used 2 times + TMP_JAMP(2057) = TMP_JAMP(1837) + TMP_JAMP(1734) ! used 2 times + TMP_JAMP(2056) = TMP_JAMP(1836) + TMP_JAMP(1623) ! used 2 times + TMP_JAMP(2055) = TMP_JAMP(1836) + TMP_JAMP(1622) ! used 2 times + TMP_JAMP(2054) = TMP_JAMP(1835) - TMP_JAMP(1825) ! used 2 times + TMP_JAMP(2053) = TMP_JAMP(1835) + TMP_JAMP(1666) ! used 2 times + TMP_JAMP(2052) = TMP_JAMP(1831) + TMP_JAMP(1810) ! used 2 times + TMP_JAMP(2051) = TMP_JAMP(1831) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1556) ! used 2 times + TMP_JAMP(2050) = TMP_JAMP(1830) + TMP_JAMP(1665) ! used 2 times + TMP_JAMP(2049) = TMP_JAMP(1830) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1743) ! used 2 times + TMP_JAMP(2048) = TMP_JAMP(1830) - TMP_JAMP(1641) ! used 2 times + TMP_JAMP(2047) = TMP_JAMP(1828) - TMP_JAMP(1567) ! used 2 times + TMP_JAMP(2046) = TMP_JAMP(1828) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1733) ! used 2 times + TMP_JAMP(2045) = TMP_JAMP(1827) + TMP_JAMP(1726) ! used 2 times + TMP_JAMP(2044) = TMP_JAMP(1825) - TMP_JAMP(1476) ! used 2 times + TMP_JAMP(2043) = TMP_JAMP(1824) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1760) ! used 2 times + TMP_JAMP(2042) = TMP_JAMP(1824) - AMP(1350) ! used 2 times + TMP_JAMP(2041) = TMP_JAMP(1823) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1728) ! used 2 times + TMP_JAMP(2040) = TMP_JAMP(1822) + TMP_JAMP(1591) ! used 2 times + TMP_JAMP(2039) = TMP_JAMP(1822) - TMP_JAMP(1626) ! used 2 times + TMP_JAMP(2038) = TMP_JAMP(1822) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1742) ! used 2 times + TMP_JAMP(2037) = TMP_JAMP(1821) - TMP_JAMP(1626) ! used 2 times + TMP_JAMP(2036) = TMP_JAMP(1821) + TMP_JAMP(1555) ! used 2 times + TMP_JAMP(2035) = TMP_JAMP(1821) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1729) ! used 2 times + TMP_JAMP(2034) = TMP_JAMP(1820) + TMP_JAMP(1725) ! used 2 times + TMP_JAMP(2033) = TMP_JAMP(1819) - TMP_JAMP(1669) ! used 2 times + TMP_JAMP(2032) = TMP_JAMP(1819) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1732) ! used 2 times + TMP_JAMP(2031) = TMP_JAMP(1818) + TMP_JAMP(1727) ! used 2 times + TMP_JAMP(2030) = TMP_JAMP(1815) + TMP_JAMP(1719) ! used 2 times + TMP_JAMP(2029) = TMP_JAMP(1814) - TMP_JAMP(1718) ! used 2 times + TMP_JAMP(2028) = TMP_JAMP(1813) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1569) ! used 2 times + TMP_JAMP(2027) = TMP_JAMP(1812) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1760) ! used 2 times + TMP_JAMP(2026) = TMP_JAMP(1811) + TMP_JAMP(1757) ! used 2 times + TMP_JAMP(2025) = TMP_JAMP(1809) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1795) ! used 2 times + TMP_JAMP(2024) = TMP_JAMP(1808) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1795) ! used 2 times + TMP_JAMP(2023) = TMP_JAMP(1805) - TMP_JAMP(1676) ! used 2 times + TMP_JAMP(2022) = TMP_JAMP(1803) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1787) ! used 2 times + TMP_JAMP(2021) = TMP_JAMP(1800) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(980) ! used 2 times + TMP_JAMP(2020) = TMP_JAMP(1799) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1218) ! used 2 times + TMP_JAMP(2019) = TMP_JAMP(1798) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1751) ! used 2 times + TMP_JAMP(2018) = TMP_JAMP(1795) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1688) ! used 2 times + TMP_JAMP(2017) = TMP_JAMP(1794) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1673) ! used 2 times + TMP_JAMP(2016) = TMP_JAMP(1793) - TMP_JAMP(1774) ! used 2 times + TMP_JAMP(2015) = TMP_JAMP(1792) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1699) ! used 2 times + TMP_JAMP(2014) = TMP_JAMP(1789) - AMP(1040) ! used 2 times + TMP_JAMP(2013) = TMP_JAMP(1787) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1677) ! used 2 times + TMP_JAMP(2012) = TMP_JAMP(1787) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1686) ! used 2 times + TMP_JAMP(2011) = TMP_JAMP(1784) + TMP_JAMP(1769) ! used 2 times + TMP_JAMP(2010) = TMP_JAMP(1784) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1658) ! used 2 times + TMP_JAMP(2009) = TMP_JAMP(1783) - AMP(1205) ! used 2 times + TMP_JAMP(2008) = TMP_JAMP(1779) + TMP_JAMP(1597) ! used 2 times + TMP_JAMP(2007) = TMP_JAMP(1778) - TMP_JAMP(1775) ! used 2 times + TMP_JAMP(2006) = TMP_JAMP(1776) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1636) ! used 2 times + TMP_JAMP(2005) = TMP_JAMP(1776) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1518) ! used 2 times + TMP_JAMP(2004) = TMP_JAMP(1772) + TMP_JAMP(1584) ! used 2 times + TMP_JAMP(2003) = TMP_JAMP(1771) + AMP(1030) ! used 2 times + TMP_JAMP(2002) = TMP_JAMP(1769) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1719) ! used 2 times + TMP_JAMP(2001) = TMP_JAMP(1767) + TMP_JAMP(1736) ! used 2 times + TMP_JAMP(2000) = TMP_JAMP(1767) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1718) ! used 2 times + TMP_JAMP(1999) = TMP_JAMP(1765) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1638) ! used 2 times + TMP_JAMP(1998) = TMP_JAMP(1764) + TMP_JAMP(1760) ! used 2 times + TMP_JAMP(1997) = TMP_JAMP(1763) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1674) ! used 2 times + TMP_JAMP(1996) = TMP_JAMP(1762) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1672) ! used 2 times + TMP_JAMP(1995) = TMP_JAMP(1758) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1280) ! used 2 times + TMP_JAMP(1994) = TMP_JAMP(1757) + AMP(1172) ! used 2 times + TMP_JAMP(1993) = TMP_JAMP(1756) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1612) ! used 2 times + TMP_JAMP(1992) = TMP_JAMP(1756) + AMP(1283) ! used 2 times + TMP_JAMP(1991) = TMP_JAMP(1755) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1562) ! used 2 times + TMP_JAMP(1990) = TMP_JAMP(1754) - AMP(1116) ! used 2 times + TMP_JAMP(1989) = TMP_JAMP(1753) + AMP(1140) ! used 2 times + TMP_JAMP(1988) = TMP_JAMP(1752) + AMP(1218) ! used 2 times + TMP_JAMP(1987) = TMP_JAMP(1752) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1677) ! used 2 times + TMP_JAMP(1986) = TMP_JAMP(1746) + TMP_JAMP(1744) ! used 2 times + TMP_JAMP(1985) = TMP_JAMP(1746) - TMP_JAMP(1737) ! used 2 times + TMP_JAMP(1984) = TMP_JAMP(1745) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1660) ! used 2 times + TMP_JAMP(1983) = TMP_JAMP(1744) - AMP(1193) ! used 2 times + TMP_JAMP(1982) = TMP_JAMP(1740) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1723) ! used 2 times + TMP_JAMP(1981) = TMP_JAMP(1740) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1734) ! used 2 times + TMP_JAMP(1980) = TMP_JAMP(1739) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1548) ! used 2 times + TMP_JAMP(1979) = TMP_JAMP(1738) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1620) ! used 2 times + TMP_JAMP(1978) = TMP_JAMP(1737) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1653) ! used 2 times + TMP_JAMP(1977) = TMP_JAMP(1736) + AMP(1271) ! used 2 times + TMP_JAMP(1976) = TMP_JAMP(1735) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1625) ! used 2 times + TMP_JAMP(1975) = TMP_JAMP(1735) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1543) ! used 2 times + TMP_JAMP(1974) = TMP_JAMP(1734) - TMP_JAMP(1705) ! used 2 times + TMP_JAMP(1973) = TMP_JAMP(1728) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1630) ! used 2 times + TMP_JAMP(1972) = TMP_JAMP(1727) - TMP_JAMP(1529) ! used 2 times + TMP_JAMP(1971) = TMP_JAMP(1727) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(987) ! used 2 times + TMP_JAMP(1970) = TMP_JAMP(1726) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1005) ! used 2 times + TMP_JAMP(1969) = TMP_JAMP(1725) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(996) ! used 2 times + TMP_JAMP(1968) = TMP_JAMP(1723) - TMP_JAMP(1700) ! used 2 times + TMP_JAMP(1967) = TMP_JAMP(1717) - TMP_JAMP(1711) ! used 2 times + TMP_JAMP(1966) = TMP_JAMP(1717) + TMP_JAMP(1716) ! used 2 times + TMP_JAMP(1965) = TMP_JAMP(1716) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(979) ! used 2 times + TMP_JAMP(1964) = TMP_JAMP(1715) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(970) ! used 2 times + TMP_JAMP(1963) = TMP_JAMP(1715) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(991) ! used 2 times + TMP_JAMP(1962) = TMP_JAMP(1712) - TMP_JAMP(1692) ! used 2 times + TMP_JAMP(1961) = TMP_JAMP(1707) + TMP_JAMP(1687) ! used 2 times + TMP_JAMP(1960) = TMP_JAMP(1706) - TMP_JAMP(1479) ! used 2 times + TMP_JAMP(1959) = TMP_JAMP(1705) - TMP_JAMP(1526) ! used 2 times + TMP_JAMP(1958) = TMP_JAMP(1703) + TMP_JAMP(1687) ! used 2 times + TMP_JAMP(1957) = TMP_JAMP(1702) - TMP_JAMP(1476) ! used 2 times + TMP_JAMP(1956) = TMP_JAMP(1701) - TMP_JAMP(1651) ! used 2 times + TMP_JAMP(1955) = TMP_JAMP(1692) - TMP_JAMP(1624) ! used 2 times + TMP_JAMP(1954) = TMP_JAMP(1690) + TMP_JAMP(1629) ! used 2 times + TMP_JAMP(1953) = TMP_JAMP(1688) - AMP(1326) ! used 2 times + TMP_JAMP(1952) = TMP_JAMP(1686) - AMP(1326) ! used 2 times + TMP_JAMP(1951) = TMP_JAMP(1681) + TMP_JAMP(1530) ! used 2 times + TMP_JAMP(1950) = TMP_JAMP(1680) + TMP_JAMP(1656) ! used 2 times + TMP_JAMP(1949) = TMP_JAMP(1678) + TMP_JAMP(1520) ! used 2 times + TMP_JAMP(1948) = TMP_JAMP(1678) + TMP_JAMP(1643) ! used 2 times + TMP_JAMP(1947) = TMP_JAMP(1677) + TMP_JAMP(1663) ! used 2 times + TMP_JAMP(1946) = TMP_JAMP(1675) + TMP_JAMP(1624) ! used 2 times + TMP_JAMP(1945) = TMP_JAMP(1670) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(1127) ! used 2 times - TMP_JAMP(2719) = TMP_JAMP(2508) - TMP_JAMP(2506) ! used 2 times - TMP_JAMP(2718) = TMP_JAMP(2502) - AMP(1451) ! used 2 times - TMP_JAMP(2717) = TMP_JAMP(2499) + TMP_JAMP(2495) ! used 2 times - TMP_JAMP(2716) = TMP_JAMP(2487) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1719) ! used 2 times - TMP_JAMP(2715) = TMP_JAMP(2488) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1070) ! used 2 times - TMP_JAMP(2714) = TMP_JAMP(2490) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2489) ! used 2 times - TMP_JAMP(2713) = TMP_JAMP(2472) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2467) ! used 2 times - TMP_JAMP(2712) = TMP_JAMP(2475) - TMP_JAMP(2474) ! used 2 times - TMP_JAMP(2711) = TMP_JAMP(2413) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2412) ! used 2 times - TMP_JAMP(2710) = TMP_JAMP(2395) - AMP(582) ! used 2 times - TMP_JAMP(2709) = TMP_JAMP(2375) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(912) ! used 2 times - TMP_JAMP(2708) = TMP_JAMP(2373) - TMP_JAMP(2371) ! used 2 times - TMP_JAMP(2707) = TMP_JAMP(2353) - AMP(1511) ! used 2 times - TMP_JAMP(2706) = TMP_JAMP(2345) + AMP(1107) ! used 2 times - TMP_JAMP(2705) = TMP_JAMP(2330) + AMP(1275) ! used 2 times - TMP_JAMP(2704) = TMP_JAMP(2326) - TMP_JAMP(2325) ! used 2 times - TMP_JAMP(2703) = TMP_JAMP(2329) + TMP_JAMP(2327) ! used 2 times - TMP_JAMP(2702) = TMP_JAMP(2308) + AMP(364) ! used 2 times - TMP_JAMP(2701) = TMP_JAMP(2307) + AMP(1021) ! used 2 times - TMP_JAMP(2700) = TMP_JAMP(2287) - TMP_JAMP(2285) ! used 2 times - TMP_JAMP(2699) = TMP_JAMP(2269) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(46) ! used 2 times - TMP_JAMP(2698) = TMP_JAMP(2261) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2257) ! used 2 times - TMP_JAMP(2697) = TMP_JAMP(2256) - TMP_JAMP(2255) ! used 2 times - TMP_JAMP(2696) = TMP_JAMP(2244) - TMP_JAMP(1407) ! used 2 times - TMP_JAMP(2695) = TMP_JAMP(2243) - TMP_JAMP(2242) ! used 2 times - TMP_JAMP(2694) = TMP_JAMP(2236) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2235) ! used 2 times - TMP_JAMP(2693) = TMP_JAMP(2231) - TMP_JAMP(2230) ! used 2 times - TMP_JAMP(2692) = TMP_JAMP(2225) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1140) ! used 2 times - TMP_JAMP(2691) = TMP_JAMP(2227) - TMP_JAMP(2226) ! used 2 times - TMP_JAMP(2690) = TMP_JAMP(2211) - AMP(1185) ! used 2 times - TMP_JAMP(2689) = TMP_JAMP(2213) + TMP_JAMP(2212) ! used 2 times - TMP_JAMP(2688) = TMP_JAMP(2205) - TMP_JAMP(2202) ! used 2 times - TMP_JAMP(2687) = TMP_JAMP(2200) + AMP(615) ! used 2 times - TMP_JAMP(2686) = TMP_JAMP(2192) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2191) ! used 2 times - TMP_JAMP(2685) = TMP_JAMP(2182) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2181) ! used 2 times - TMP_JAMP(2684) = TMP_JAMP(2175) + TMP_JAMP(2170) ! used 2 times - TMP_JAMP(2683) = TMP_JAMP(2169) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2165) ! used 2 times - TMP_JAMP(2682) = TMP_JAMP(2155) + ((-0.000000000000000D+00 + TMP_JAMP(1944) = TMP_JAMP(1668) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1039) ! used 2 times + TMP_JAMP(1943) = TMP_JAMP(1663) - TMP_JAMP(1625) ! used 2 times + TMP_JAMP(1942) = TMP_JAMP(1663) + TMP_JAMP(1518) ! used 2 times + TMP_JAMP(1941) = TMP_JAMP(1661) + TMP_JAMP(1526) ! used 2 times + TMP_JAMP(1940) = TMP_JAMP(1661) + AMP(1172) ! used 2 times + TMP_JAMP(1939) = TMP_JAMP(1658) - TMP_JAMP(1592) ! used 2 times + TMP_JAMP(1938) = TMP_JAMP(1657) - AMP(1376) ! used 2 times + TMP_JAMP(1937) = TMP_JAMP(1653) - TMP_JAMP(1577) ! used 2 times + TMP_JAMP(1936) = TMP_JAMP(1649) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1150) ! used 2 times + TMP_JAMP(1935) = TMP_JAMP(1648) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1549) ! used 2 times + TMP_JAMP(1934) = TMP_JAMP(1645) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1547) ! used 2 times + TMP_JAMP(1933) = TMP_JAMP(1643) + TMP_JAMP(1582) ! used 2 times + TMP_JAMP(1932) = TMP_JAMP(1637) + TMP_JAMP(1632) ! used 2 times + TMP_JAMP(1931) = TMP_JAMP(1634) + TMP_JAMP(1627) ! used 2 times + TMP_JAMP(1930) = TMP_JAMP(1630) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1031) ! used 2 times + TMP_JAMP(1929) = TMP_JAMP(1628) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1228) ! used 2 times + TMP_JAMP(1928) = TMP_JAMP(1624) + TMP_JAMP(1616) ! used 2 times + TMP_JAMP(1927) = TMP_JAMP(1620) + TMP_JAMP(1551) ! used 2 times + TMP_JAMP(1926) = TMP_JAMP(1620) + TMP_JAMP(1615) ! used 2 times + TMP_JAMP(1925) = TMP_JAMP(1618) + TMP_JAMP(1613) ! used 2 times + TMP_JAMP(1924) = TMP_JAMP(1617) - AMP(1376) ! used 2 times + TMP_JAMP(1923) = TMP_JAMP(1617) - TMP_JAMP(1614) ! used 2 times + TMP_JAMP(1922) = TMP_JAMP(1613) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1564) ! used 2 times + TMP_JAMP(1921) = TMP_JAMP(1612) + TMP_JAMP(1543) ! used 2 times + TMP_JAMP(1920) = TMP_JAMP(1611) - TMP_JAMP(1548) ! used 2 times + TMP_JAMP(1919) = TMP_JAMP(1609) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(961) ! used 2 times + TMP_JAMP(1918) = TMP_JAMP(1609) - TMP_JAMP(1530) ! used 2 times + TMP_JAMP(1917) = TMP_JAMP(1598) - AMP(1128) ! used 2 times + TMP_JAMP(1916) = TMP_JAMP(1597) + AMP(1060) ! used 2 times + TMP_JAMP(1915) = TMP_JAMP(1592) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1539) ! used 2 times + TMP_JAMP(1914) = TMP_JAMP(1591) + TMP_JAMP(1577) ! used 2 times + TMP_JAMP(1913) = TMP_JAMP(1591) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1197) ! used 2 times + TMP_JAMP(1912) = TMP_JAMP(1590) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1202) ! used 2 times + TMP_JAMP(1911) = TMP_JAMP(1586) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1121) ! used 2 times + TMP_JAMP(1910) = TMP_JAMP(1586) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1119) ! used 2 times + TMP_JAMP(1909) = TMP_JAMP(1584) + AMP(1051) ! used 2 times + TMP_JAMP(1908) = TMP_JAMP(1583) + AMP(1073) ! used 2 times + TMP_JAMP(1907) = TMP_JAMP(1577) + TMP_JAMP(1510) ! used 2 times + TMP_JAMP(1906) = TMP_JAMP(1575) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1287) ! used 2 times + TMP_JAMP(1905) = TMP_JAMP(1575) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1289) ! used 2 times + TMP_JAMP(1904) = TMP_JAMP(1574) + TMP_JAMP(1519) ! used 2 times + TMP_JAMP(1903) = TMP_JAMP(1572) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1296) ! used 2 times + TMP_JAMP(1902) = TMP_JAMP(1572) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1298) ! used 2 times + TMP_JAMP(1901) = TMP_JAMP(1569) + AMP(1042) ! used 2 times + TMP_JAMP(1900) = TMP_JAMP(1563) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1539) ! used 2 times + TMP_JAMP(1899) = TMP_JAMP(1562) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1275) ! used 2 times + TMP_JAMP(1898) = TMP_JAMP(1559) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1107) ! used 2 times + TMP_JAMP(1897) = TMP_JAMP(1553) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1058) ! used 2 times + TMP_JAMP(1896) = TMP_JAMP(1551) - TMP_JAMP(1529) ! used 2 times + TMP_JAMP(1895) = TMP_JAMP(1550) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1115) ! used 2 times + TMP_JAMP(1894) = TMP_JAMP(1550) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1142) ! used 2 times + TMP_JAMP(1893) = TMP_JAMP(1548) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1021) ! used 2 times + TMP_JAMP(1892) = TMP_JAMP(1548) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1409) ! used 2 times + TMP_JAMP(1891) = TMP_JAMP(1543) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1263) ! used 2 times + TMP_JAMP(1890) = TMP_JAMP(1541) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1185) ! used 2 times + TMP_JAMP(1889) = TMP_JAMP(1539) - AMP(962) ! used 2 times + TMP_JAMP(1888) = TMP_JAMP(1539) + AMP(1000) ! used 2 times + TMP_JAMP(1887) = TMP_JAMP(1534) - AMP(971) ! used 2 times + TMP_JAMP(1886) = TMP_JAMP(1512) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1047) ! used 2 times + TMP_JAMP(1885) = TMP_JAMP(1507) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1022) ! used 2 times + TMP_JAMP(1884) = TMP_JAMP(1505) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1199) ! used 2 times + TMP_JAMP(1883) = TMP_JAMP(1505) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1220) ! used 2 times + TMP_JAMP(1882) = TMP_JAMP(1504) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1211) ! used 2 times + TMP_JAMP(1881) = TMP_JAMP(1504) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1187) ! used 2 times + TMP_JAMP(1880) = TMP_JAMP(1503) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1065) ! used 2 times + TMP_JAMP(1879) = TMP_JAMP(1501) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1412) ! used 2 times + TMP_JAMP(1878) = TMP_JAMP(1492) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1133) ! used 2 times + TMP_JAMP(1877) = TMP_JAMP(1491) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1056) ! used 2 times + TMP_JAMP(1876) = TMP_JAMP(1481) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1265) ! used 2 times + TMP_JAMP(1875) = TMP_JAMP(1480) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1277) ! used 2 times + TMP_JAMP(1874) = TMP_JAMP(1476) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(982) ! used 2 times + TMP_JAMP(1873) = AMP(1374) + AMP(1376) ! used 2 times + TMP_JAMP(1872) = AMP(1206) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1210) ! used 2 times + TMP_JAMP(1871) = AMP(1124) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1352) ! used 2 times + TMP_JAMP(1870) = AMP(1284) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1288) ! used 2 times + TMP_JAMP(1869) = AMP(1106) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1109) ! used 2 times + TMP_JAMP(1868) = AMP(1209) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1210) ! used 2 times + TMP_JAMP(1867) = AMP(1094) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1292) ! used 2 times + TMP_JAMP(1866) = AMP(1272) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1297) ! used 2 times + TMP_JAMP(1865) = AMP(1194) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1219) ! used 2 times + TMP_JAMP(1864) = AMP(1131) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1132) ! used 2 times + TMP_JAMP(2141) = TMP_JAMP(2077) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1990) ! used 2 times + TMP_JAMP(2140) = TMP_JAMP(2076) - TMP_JAMP(1944) ! used 2 times + TMP_JAMP(2139) = TMP_JAMP(2072) + TMP_JAMP(1858) ! used 2 times + TMP_JAMP(2138) = TMP_JAMP(2071) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1882) ! used 2 times + TMP_JAMP(2137) = TMP_JAMP(2070) - TMP_JAMP(1872) ! used 2 times + TMP_JAMP(2136) = TMP_JAMP(2065) - TMP_JAMP(1983) ! used 2 times + TMP_JAMP(2135) = TMP_JAMP(2062) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2003) ! used 2 times + TMP_JAMP(2134) = TMP_JAMP(2054) + TMP_JAMP(1960) ! used 2 times + TMP_JAMP(2133) = TMP_JAMP(2053) - TMP_JAMP(1924) ! used 2 times + TMP_JAMP(2132) = TMP_JAMP(2051) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1849) ! used 2 times + TMP_JAMP(2131) = TMP_JAMP(2048) + TMP_JAMP(1927) ! used 2 times + TMP_JAMP(2130) = TMP_JAMP(2046) + TMP_JAMP(1970) ! used 2 times + TMP_JAMP(2129) = TMP_JAMP(2041) - TMP_JAMP(1964) ! used 2 times + TMP_JAMP(2128) = TMP_JAMP(2035) + TMP_JAMP(1969) ! used 2 times + TMP_JAMP(2127) = TMP_JAMP(2032) + TMP_JAMP(1971) ! used 2 times + TMP_JAMP(2126) = TMP_JAMP(2030) - TMP_JAMP(1905) ! used 2 times + TMP_JAMP(2125) = TMP_JAMP(2029) + TMP_JAMP(1902) ! used 2 times + TMP_JAMP(2124) = TMP_JAMP(2024) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2013) ! used 2 times + TMP_JAMP(2123) = TMP_JAMP(2021) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1847) ! used 2 times + TMP_JAMP(2122) = TMP_JAMP(2017) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1911) ! used 2 times + TMP_JAMP(2121) = TMP_JAMP(2016) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1945) ! used 2 times + TMP_JAMP(2120) = TMP_JAMP(2015) - TMP_JAMP(1851) ! used 2 times + TMP_JAMP(2119) = TMP_JAMP(2014) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1832) ! used 2 times + TMP_JAMP(2118) = TMP_JAMP(2009) - TMP_JAMP(1853) ! used 2 times + TMP_JAMP(2117) = TMP_JAMP(2007) + TMP_JAMP(1917) ! used 2 times + TMP_JAMP(2116) = TMP_JAMP(2004) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1877) ! used 2 times + TMP_JAMP(2115) = TMP_JAMP(2002) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1926) ! used 2 times + TMP_JAMP(2114) = TMP_JAMP(2000) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1923) ! used 2 times + TMP_JAMP(2113) = TMP_JAMP(1996) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1869) ! used 2 times + TMP_JAMP(2112) = TMP_JAMP(1993) - TMP_JAMP(1870) ! used 2 times + TMP_JAMP(2111) = TMP_JAMP(1991) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1875) ! used 2 times + TMP_JAMP(2110) = TMP_JAMP(1989) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1806) ! used 2 times + TMP_JAMP(2109) = TMP_JAMP(1982) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1956) ! used 2 times + TMP_JAMP(2108) = TMP_JAMP(1980) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1879) ! used 2 times + TMP_JAMP(2107) = TMP_JAMP(1976) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1925) ! used 2 times + TMP_JAMP(2106) = TMP_JAMP(1975) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1876) ! used 2 times + TMP_JAMP(2105) = TMP_JAMP(1973) + TMP_JAMP(1887) ! used 2 times + TMP_JAMP(2104) = TMP_JAMP(1965) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1847) ! used 2 times + TMP_JAMP(2103) = TMP_JAMP(1955) - TMP_JAMP(1896) ! used 2 times + TMP_JAMP(2102) = TMP_JAMP(1951) + TMP_JAMP(1704) ! used 2 times + TMP_JAMP(2101) = TMP_JAMP(1949) - TMP_JAMP(1859) ! used 2 times + TMP_JAMP(2100) = TMP_JAMP(1946) + TMP_JAMP(1904) ! used 2 times + TMP_JAMP(2099) = TMP_JAMP(1943) + TMP_JAMP(1907) ! used 2 times + TMP_JAMP(2098) = TMP_JAMP(1942) + TMP_JAMP(1680) ! used 2 times + TMP_JAMP(2097) = TMP_JAMP(1935) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1739) ! used 2 times + TMP_JAMP(2096) = TMP_JAMP(1931) + TMP_JAMP(1646) ! used 2 times + TMP_JAMP(2095) = TMP_JAMP(1930) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1771) ! used 2 times + TMP_JAMP(2094) = TMP_JAMP(1922) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1755) ! used 2 times + TMP_JAMP(2093) = TMP_JAMP(1921) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1866) ! used 2 times + TMP_JAMP(2092) = TMP_JAMP(1916) + TMP_JAMP(1792) ! used 2 times + TMP_JAMP(2091) = TMP_JAMP(1909) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1844) ! used 2 times + TMP_JAMP(2090) = TMP_JAMP(1908) + TMP_JAMP(1772) ! used 2 times + TMP_JAMP(2089) = TMP_JAMP(1906) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1770) ! used 2 times + TMP_JAMP(2088) = TMP_JAMP(1903) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1768) ! used 2 times + TMP_JAMP(2087) = TMP_JAMP(1893) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1791) ! used 2 times + TMP_JAMP(2086) = TMP_JAMP(1889) + TMP_JAMP(1846) ! used 2 times + TMP_JAMP(2085) = TMP_JAMP(1888) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1717) ! used 2 times + TMP_JAMP(2084) = TMP_JAMP(1886) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1855) ! used 2 times + TMP_JAMP(2083) = TMP_JAMP(1885) - TMP_JAMP(1829) ! used 2 times + TMP_JAMP(2082) = TMP_JAMP(1881) - TMP_JAMP(1826) ! used 2 times + TMP_JAMP(2081) = TMP_JAMP(1880) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1845) ! used 2 times + TMP_JAMP(2080) = TMP_JAMP(1871) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1581) ! used 2 times + TMP_JAMP(2079) = TMP_JAMP(1867) + TMP_JAMP(1552) ! used 2 times + TMP_JAMP(2078) = TMP_JAMP(1865) - TMP_JAMP(1848) ! used 2 times + TMP_JAMP(2153) = TMP_JAMP(2109) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2087) ! used 2 times + TMP_JAMP(2152) = TMP_JAMP(2101) + TMP_JAMP(1961) ! used 2 times + TMP_JAMP(2151) = TMP_JAMP(2097) + TMP_JAMP(1950) ! used 2 times + TMP_JAMP(2150) = TMP_JAMP(2094) - TMP_JAMP(1928) ! used 2 times + TMP_JAMP(2149) = TMP_JAMP(2093) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2001) ! used 2 times + TMP_JAMP(2148) = TMP_JAMP(2092) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1968) ! used 2 times + TMP_JAMP(2147) = TMP_JAMP(2090) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1954) ! used 2 times + TMP_JAMP(2146) = TMP_JAMP(2084) + TMP_JAMP(2028) ! used 2 times + TMP_JAMP(2145) = TMP_JAMP(2083) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1981) ! used 2 times + TMP_JAMP(2144) = TMP_JAMP(2082) - TMP_JAMP(2038) ! used 2 times + TMP_JAMP(2143) = TMP_JAMP(2081) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2008) ! used 2 times + TMP_JAMP(2142) = TMP_JAMP(2078) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2019) ! used 2 times + TMP_JAMP(2225) = AMP(1817) + AMP(1824) ! used 16 times + TMP_JAMP(2224) = AMP(1811) + AMP(1822) ! used 16 times + TMP_JAMP(2223) = AMP(1816) + AMP(1821) ! used 16 times + TMP_JAMP(2222) = AMP(1810) + AMP(1819) ! used 16 times + TMP_JAMP(2221) = AMP(1493) + AMP(1497) ! used 16 times + TMP_JAMP(2220) = AMP(1487) + AMP(1495) ! used 16 times + TMP_JAMP(2219) = AMP(1492) + AMP(1503) ! used 16 times + TMP_JAMP(2218) = AMP(1486) + AMP(1501) ! used 16 times + TMP_JAMP(2217) = AMP(1683) + AMP(1689) ! used 16 times + TMP_JAMP(2216) = AMP(1677) + AMP(1687) ! used 16 times + TMP_JAMP(2215) = AMP(1681) + AMP(1686) ! used 16 times + TMP_JAMP(2214) = AMP(1675) + AMP(1684) ! used 16 times + TMP_JAMP(2213) = AMP(1490) + AMP(1496) ! used 16 times + TMP_JAMP(2212) = AMP(1489) + AMP(1502) ! used 16 times + TMP_JAMP(2211) = AMP(1871) + AMP(1878) ! used 16 times + TMP_JAMP(2210) = AMP(1865) + AMP(1876) ! used 16 times + TMP_JAMP(2209) = AMP(1814) + AMP(1823) ! used 16 times + TMP_JAMP(2208) = AMP(1813) + AMP(1820) ! used 16 times + TMP_JAMP(2207) = AMP(1870) + AMP(1875) ! used 16 times + TMP_JAMP(2206) = AMP(1864) + AMP(1873) ! used 16 times + TMP_JAMP(2205) = AMP(1548) + AMP(1554) ! used 16 times + TMP_JAMP(2204) = AMP(1542) + AMP(1552) ! used 16 times + TMP_JAMP(2203) = AMP(1547) + AMP(1551) ! used 16 times + TMP_JAMP(2202) = AMP(1541) + AMP(1549) ! used 16 times + TMP_JAMP(2201) = AMP(1791) + AMP(1797) ! used 16 times + TMP_JAMP(2200) = AMP(1785) + AMP(1795) ! used 16 times + TMP_JAMP(2199) = AMP(1782) - AMP(1790) ! used 16 times + TMP_JAMP(2198) = AMP(1780) - AMP(1784) ! used 16 times + TMP_JAMP(2197) = AMP(1680) + AMP(1688) ! used 16 times + TMP_JAMP(2196) = AMP(1678) + AMP(1685) ! used 16 times + TMP_JAMP(2195) = AMP(1789) + AMP(1794) ! used 16 times + TMP_JAMP(2194) = AMP(1783) + AMP(1792) ! used 16 times + TMP_JAMP(2193) = AMP(1545) + AMP(1553) ! used 16 times + TMP_JAMP(2192) = AMP(1544) + AMP(1550) ! used 16 times + TMP_JAMP(2191) = AMP(1546) + AMP(1557) ! used 16 times + TMP_JAMP(2190) = AMP(1540) + AMP(1555) ! used 16 times + TMP_JAMP(2189) = AMP(1543) + AMP(1556) ! used 16 times + TMP_JAMP(2188) = AMP(1844) + AMP(1851) ! used 16 times + TMP_JAMP(2187) = AMP(1838) + AMP(1849) ! used 16 times + TMP_JAMP(2186) = AMP(1843) + AMP(1848) ! used 16 times + TMP_JAMP(2185) = AMP(1837) + AMP(1846) ! used 16 times + TMP_JAMP(2184) = AMP(1494) + AMP(1500) ! used 16 times + TMP_JAMP(2183) = AMP(1488) + AMP(1498) ! used 16 times + TMP_JAMP(2182) = AMP(1737) + AMP(1743) ! used 16 times + TMP_JAMP(2181) = AMP(1731) + AMP(1741) ! used 16 times + TMP_JAMP(2180) = AMP(1728) - AMP(1736) ! used 16 times + TMP_JAMP(2179) = AMP(1726) - AMP(1730) ! used 16 times + TMP_JAMP(2178) = AMP(1735) + AMP(1740) ! used 16 times + TMP_JAMP(2177) = AMP(1729) + AMP(1738) ! used 16 times + TMP_JAMP(2176) = AMP(1491) + AMP(1499) ! used 16 times + TMP_JAMP(2175) = AMP(1868) + AMP(1877) ! used 16 times + TMP_JAMP(2174) = AMP(1674) - AMP(1682) ! used 16 times + TMP_JAMP(2173) = AMP(1672) - AMP(1676) ! used 16 times + TMP_JAMP(2172) = AMP(1867) + AMP(1874) ! used 16 times + TMP_JAMP(2171) = AMP(1673) - AMP(1679) ! used 16 times + TMP_JAMP(2170) = AMP(1841) + AMP(1850) ! used 16 times + TMP_JAMP(2169) = AMP(1840) + AMP(1847) ! used 16 times + TMP_JAMP(2168) = AMP(1602) + AMP(1608) ! used 16 times + TMP_JAMP(2167) = AMP(1596) + AMP(1606) ! used 16 times + TMP_JAMP(2166) = AMP(1600) + AMP(1611) ! used 16 times + TMP_JAMP(2165) = AMP(1594) + AMP(1609) ! used 16 times + TMP_JAMP(2164) = AMP(1601) + AMP(1605) ! used 16 times + TMP_JAMP(2163) = AMP(1595) + AMP(1603) ! used 16 times + TMP_JAMP(2162) = AMP(1788) + AMP(1796) ! used 16 times + TMP_JAMP(2161) = AMP(1781) - AMP(1787) ! used 16 times + TMP_JAMP(2160) = AMP(1786) + AMP(1793) ! used 16 times + TMP_JAMP(2159) = AMP(1734) + AMP(1742) ! used 16 times + TMP_JAMP(2158) = AMP(1727) - AMP(1733) ! used 16 times + TMP_JAMP(2157) = AMP(1732) + AMP(1739) ! used 16 times + TMP_JAMP(2156) = AMP(1599) + AMP(1607) ! used 16 times + TMP_JAMP(2155) = AMP(1597) + AMP(1610) ! used 16 times + TMP_JAMP(2154) = AMP(1598) + AMP(1604) ! used 16 times + TMP_JAMP(2380) = TMP_JAMP(2225) - TMP_JAMP(2224) ! used 8 times + TMP_JAMP(2379) = TMP_JAMP(2225) + TMP_JAMP(2209) ! used 8 times + TMP_JAMP(2378) = TMP_JAMP(2224) + TMP_JAMP(2209) ! used 8 times + TMP_JAMP(2377) = TMP_JAMP(2223) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1827) ! used 8 times + TMP_JAMP(2376) = TMP_JAMP(2223) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1833) ! used 8 times + TMP_JAMP(2375) = TMP_JAMP(2222) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1825) ! used 8 times + TMP_JAMP(2374) = TMP_JAMP(2222) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1831) ! used 8 times + TMP_JAMP(2373) = TMP_JAMP(2221) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1518) ! used 8 times + TMP_JAMP(2372) = TMP_JAMP(2221) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1533) ! used 8 times + TMP_JAMP(2371) = TMP_JAMP(2220) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1516) ! used 8 times + TMP_JAMP(2370) = TMP_JAMP(2220) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1531) ! used 8 times + TMP_JAMP(2369) = TMP_JAMP(2219) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1539) ! used 8 times + TMP_JAMP(2368) = TMP_JAMP(2219) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1536) ! used 8 times + TMP_JAMP(2367) = TMP_JAMP(2218) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1537) ! used 8 times + TMP_JAMP(2366) = TMP_JAMP(2218) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1534) ! used 8 times + TMP_JAMP(2365) = TMP_JAMP(2217) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1662) ! used 8 times + TMP_JAMP(2364) = TMP_JAMP(2217) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1653) ! used 8 times + TMP_JAMP(2363) = TMP_JAMP(2216) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1660) ! used 8 times + TMP_JAMP(2362) = TMP_JAMP(2216) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1651) ! used 8 times + TMP_JAMP(2361) = TMP_JAMP(2215) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1692) ! used 8 times + TMP_JAMP(2360) = TMP_JAMP(2215) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1698) ! used 8 times + TMP_JAMP(2359) = TMP_JAMP(2214) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1690) ! used 8 times + TMP_JAMP(2358) = TMP_JAMP(2214) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1696) ! used 8 times + TMP_JAMP(2357) = TMP_JAMP(2213) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1517) ! used 8 times + TMP_JAMP(2356) = TMP_JAMP(2213) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1532) ! used 8 times + TMP_JAMP(2355) = TMP_JAMP(2212) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1538) ! used 8 times + TMP_JAMP(2354) = TMP_JAMP(2212) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1535) ! used 8 times + TMP_JAMP(2353) = TMP_JAMP(2211) - TMP_JAMP(2210) ! used 8 times + TMP_JAMP(2352) = TMP_JAMP(2211) + TMP_JAMP(2175) ! used 8 times + TMP_JAMP(2351) = TMP_JAMP(2210) + TMP_JAMP(2175) ! used 8 times + TMP_JAMP(2350) = TMP_JAMP(2208) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1826) ! used 8 times + TMP_JAMP(2349) = TMP_JAMP(2208) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1832) ! used 8 times + TMP_JAMP(2348) = TMP_JAMP(2207) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1887) ! used 8 times + TMP_JAMP(2347) = TMP_JAMP(2207) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1881) ! used 8 times + TMP_JAMP(2346) = TMP_JAMP(2206) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1885) ! used 8 times + TMP_JAMP(2345) = TMP_JAMP(2206) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1879) ! used 8 times + TMP_JAMP(2344) = TMP_JAMP(2205) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1581) ! used 8 times + TMP_JAMP(2343) = TMP_JAMP(2205) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1563) ! used 8 times + TMP_JAMP(2342) = TMP_JAMP(2204) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1579) ! used 8 times + TMP_JAMP(2341) = TMP_JAMP(2204) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1561) ! used 8 times + TMP_JAMP(2340) = TMP_JAMP(2203) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1572) ! used 8 times + TMP_JAMP(2339) = TMP_JAMP(2203) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1587) ! used 8 times + TMP_JAMP(2338) = TMP_JAMP(2202) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1570) ! used 8 times + TMP_JAMP(2337) = TMP_JAMP(2202) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1585) ! used 8 times + TMP_JAMP(2336) = TMP_JAMP(2201) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1770) ! used 8 times + TMP_JAMP(2335) = TMP_JAMP(2201) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1761) ! used 8 times + TMP_JAMP(2334) = TMP_JAMP(2200) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1768) ! used 8 times + TMP_JAMP(2333) = TMP_JAMP(2200) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1759) ! used 8 times + TMP_JAMP(2332) = TMP_JAMP(2199) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1776) ! used 8 times + TMP_JAMP(2331) = TMP_JAMP(2199) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1779) ! used 8 times + TMP_JAMP(2330) = TMP_JAMP(2198) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1774) ! used 8 times + TMP_JAMP(2329) = TMP_JAMP(2198) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1777) ! used 8 times + TMP_JAMP(2328) = TMP_JAMP(2197) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1661) ! used 8 times + TMP_JAMP(2327) = TMP_JAMP(2197) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1652) ! used 8 times + TMP_JAMP(2326) = TMP_JAMP(2196) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1691) ! used 8 times + TMP_JAMP(2325) = TMP_JAMP(2196) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1697) ! used 8 times + TMP_JAMP(2324) = TMP_JAMP(2195) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1806) ! used 8 times + TMP_JAMP(2323) = TMP_JAMP(2195) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1800) ! used 8 times + TMP_JAMP(2322) = TMP_JAMP(2194) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1804) ! used 8 times + TMP_JAMP(2321) = TMP_JAMP(2194) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1798) ! used 8 times + TMP_JAMP(2320) = TMP_JAMP(2193) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1580) ! used 8 times + TMP_JAMP(2319) = TMP_JAMP(2193) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1562) ! used 8 times + TMP_JAMP(2318) = TMP_JAMP(2192) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1571) ! used 8 times + TMP_JAMP(2317) = TMP_JAMP(2192) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1586) ! used 8 times + TMP_JAMP(2316) = TMP_JAMP(2191) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1593) ! used 8 times + TMP_JAMP(2315) = TMP_JAMP(2191) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1590) ! used 8 times + TMP_JAMP(2314) = TMP_JAMP(2190) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1591) ! used 8 times + TMP_JAMP(2313) = TMP_JAMP(2190) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1588) ! used 8 times + TMP_JAMP(2312) = TMP_JAMP(2189) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1592) ! used 8 times + TMP_JAMP(2311) = TMP_JAMP(2189) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1589) ! used 8 times + TMP_JAMP(2310) = TMP_JAMP(2188) - TMP_JAMP(2187) ! used 8 times + TMP_JAMP(2309) = TMP_JAMP(2188) + TMP_JAMP(2170) ! used 8 times + TMP_JAMP(2308) = TMP_JAMP(2187) + TMP_JAMP(2170) ! used 8 times + TMP_JAMP(2307) = TMP_JAMP(2186) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1860) ! used 8 times + TMP_JAMP(2306) = TMP_JAMP(2186) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1854) ! used 8 times + TMP_JAMP(2305) = TMP_JAMP(2185) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1858) ! used 8 times + TMP_JAMP(2304) = TMP_JAMP(2185) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1852) ! used 8 times + TMP_JAMP(2303) = TMP_JAMP(2184) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1527) ! used 8 times + TMP_JAMP(2302) = TMP_JAMP(2184) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1509) ! used 8 times + TMP_JAMP(2301) = TMP_JAMP(2183) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1525) ! used 8 times + TMP_JAMP(2300) = TMP_JAMP(2183) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1507) ! used 8 times + TMP_JAMP(2299) = TMP_JAMP(2182) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1716) ! used 8 times + TMP_JAMP(2298) = TMP_JAMP(2182) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1707) ! used 8 times + TMP_JAMP(2297) = TMP_JAMP(2181) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1714) ! used 8 times + TMP_JAMP(2296) = TMP_JAMP(2181) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1705) ! used 8 times + TMP_JAMP(2295) = TMP_JAMP(2180) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1722) ! used 8 times + TMP_JAMP(2294) = TMP_JAMP(2180) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1725) ! used 8 times + TMP_JAMP(2293) = TMP_JAMP(2179) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1720) ! used 8 times + TMP_JAMP(2292) = TMP_JAMP(2179) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1723) ! used 8 times + TMP_JAMP(2291) = TMP_JAMP(2178) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1752) ! used 8 times + TMP_JAMP(2290) = TMP_JAMP(2178) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1746) ! used 8 times + TMP_JAMP(2289) = TMP_JAMP(2177) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1750) ! used 8 times + TMP_JAMP(2288) = TMP_JAMP(2177) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1744) ! used 8 times + TMP_JAMP(2287) = TMP_JAMP(2176) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1526) ! used 8 times + TMP_JAMP(2286) = TMP_JAMP(2176) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1508) ! used 8 times + TMP_JAMP(2285) = TMP_JAMP(2175) + TMP_JAMP(2170) ! used 8 times + TMP_JAMP(2284) = TMP_JAMP(2174) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1671) ! used 8 times + TMP_JAMP(2283) = TMP_JAMP(2174) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1668) ! used 8 times + TMP_JAMP(2282) = TMP_JAMP(2173) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1669) ! used 8 times + TMP_JAMP(2281) = TMP_JAMP(2173) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1666) ! used 8 times + TMP_JAMP(2280) = TMP_JAMP(2172) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1886) ! used 8 times + TMP_JAMP(2279) = TMP_JAMP(2172) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1880) ! used 8 times + TMP_JAMP(2278) = TMP_JAMP(2171) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1670) ! used 8 times + TMP_JAMP(2277) = TMP_JAMP(2171) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1667) ! used 8 times + TMP_JAMP(2276) = TMP_JAMP(2169) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1859) ! used 8 times + TMP_JAMP(2275) = TMP_JAMP(2169) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1853) ! used 8 times + TMP_JAMP(2274) = TMP_JAMP(2168) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1635) ! used 8 times + TMP_JAMP(2273) = TMP_JAMP(2168) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1617) ! used 8 times + TMP_JAMP(2272) = TMP_JAMP(2167) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1633) ! used 8 times + TMP_JAMP(2271) = TMP_JAMP(2167) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1615) ! used 8 times + TMP_JAMP(2270) = TMP_JAMP(2166) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1644) ! used 8 times + TMP_JAMP(2269) = TMP_JAMP(2166) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1647) ! used 8 times + TMP_JAMP(2268) = TMP_JAMP(2165) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1642) ! used 8 times + TMP_JAMP(2267) = TMP_JAMP(2165) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1645) ! used 8 times + TMP_JAMP(2266) = TMP_JAMP(2164) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1641) ! used 8 times + TMP_JAMP(2265) = TMP_JAMP(2164) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1626) ! used 8 times + TMP_JAMP(2264) = TMP_JAMP(2163) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1639) ! used 8 times + TMP_JAMP(2263) = TMP_JAMP(2163) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1624) ! used 8 times + TMP_JAMP(2262) = TMP_JAMP(2162) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1769) ! used 8 times + TMP_JAMP(2261) = TMP_JAMP(2162) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1760) ! used 8 times + TMP_JAMP(2260) = TMP_JAMP(2161) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1775) ! used 8 times + TMP_JAMP(2259) = TMP_JAMP(2161) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1778) ! used 8 times + TMP_JAMP(2258) = TMP_JAMP(2160) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1805) ! used 8 times + TMP_JAMP(2257) = TMP_JAMP(2160) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1799) ! used 8 times + TMP_JAMP(2256) = TMP_JAMP(2159) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1715) ! used 8 times + TMP_JAMP(2255) = TMP_JAMP(2159) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1706) ! used 8 times + TMP_JAMP(2254) = TMP_JAMP(2158) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1721) ! used 8 times + TMP_JAMP(2253) = TMP_JAMP(2158) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1724) ! used 8 times + TMP_JAMP(2252) = TMP_JAMP(2157) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1751) ! used 8 times + TMP_JAMP(2251) = TMP_JAMP(2157) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1745) ! used 8 times + TMP_JAMP(2250) = TMP_JAMP(2156) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1634) ! used 8 times + TMP_JAMP(2249) = TMP_JAMP(2156) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1616) ! used 8 times + TMP_JAMP(2248) = TMP_JAMP(2155) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1643) ! used 8 times + TMP_JAMP(2247) = TMP_JAMP(2155) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1646) ! used 8 times + TMP_JAMP(2246) = TMP_JAMP(2154) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1640) ! used 8 times + TMP_JAMP(2245) = TMP_JAMP(2154) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1625) ! used 8 times + TMP_JAMP(2244) = AMP(1455) + AMP(1456) ! used 8 times + TMP_JAMP(2243) = AMP(1453) - AMP(1457) ! used 8 times + TMP_JAMP(2242) = AMP(1866) - AMP(1872) ! used 8 times + TMP_JAMP(2241) = AMP(1464) + AMP(1465) ! used 8 times + TMP_JAMP(2240) = AMP(1462) - AMP(1466) ! used 8 times + TMP_JAMP(2239) = AMP(1839) - AMP(1845) ! used 8 times + TMP_JAMP(2238) = AMP(1473) + AMP(1474) ! used 8 times + TMP_JAMP(2237) = AMP(1471) - AMP(1475) ! used 8 times + TMP_JAMP(2236) = AMP(1869) + AMP(1872) ! used 8 times + TMP_JAMP(2235) = AMP(1842) + AMP(1845) ! used 8 times + TMP_JAMP(2234) = AMP(1812) - AMP(1818) ! used 8 times + TMP_JAMP(2233) = AMP(1815) + AMP(1818) ! used 8 times + TMP_JAMP(2232) = AMP(1812) + AMP(1815) ! used 8 times + TMP_JAMP(2231) = AMP(1434) + AMP(1435) ! used 8 times + TMP_JAMP(2230) = AMP(1432) - AMP(1436) ! used 8 times + TMP_JAMP(2229) = AMP(1866) + AMP(1869) ! used 8 times + TMP_JAMP(2228) = AMP(1482) + AMP(1483) ! used 8 times + TMP_JAMP(2227) = AMP(1480) - AMP(1484) ! used 8 times + TMP_JAMP(2226) = AMP(1839) + AMP(1842) ! used 8 times + TMP_JAMP(2390) = TMP_JAMP(2375) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2244) ! used 8 times + TMP_JAMP(2389) = TMP_JAMP(2374) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2228) ! used 8 times + TMP_JAMP(2388) = TMP_JAMP(2359) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2243) ! used 8 times + TMP_JAMP(2387) = TMP_JAMP(2358) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2227) ! used 8 times + TMP_JAMP(2386) = TMP_JAMP(2346) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2241) ! used 8 times + TMP_JAMP(2385) = TMP_JAMP(2322) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2240) ! used 8 times + TMP_JAMP(2384) = TMP_JAMP(2305) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2238) ! used 8 times + TMP_JAMP(2383) = TMP_JAMP(2304) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2231) ! used 8 times + TMP_JAMP(2382) = TMP_JAMP(2289) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2237) ! used 8 times + TMP_JAMP(2381) = TMP_JAMP(2288) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2230) ! used 8 times + TMP_JAMP(2671) = TMP_JAMP(2390) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1458) ! used 4 times + TMP_JAMP(2670) = TMP_JAMP(2390) - TMP_JAMP(2377) ! used 4 times + TMP_JAMP(2669) = TMP_JAMP(2390) - TMP_JAMP(2388) ! used 4 times + TMP_JAMP(2668) = TMP_JAMP(2389) - TMP_JAMP(2376) ! used 4 times + TMP_JAMP(2667) = TMP_JAMP(2389) + TMP_JAMP(2349) ! used 4 times + TMP_JAMP(2666) = TMP_JAMP(2389) - TMP_JAMP(2387) ! used 4 times + TMP_JAMP(2665) = TMP_JAMP(2388) - AMP(1663) ! used 4 times + TMP_JAMP(2664) = TMP_JAMP(2388) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1458) ! used 4 times + TMP_JAMP(2663) = TMP_JAMP(2388) - TMP_JAMP(2282) ! used 4 times + TMP_JAMP(2662) = TMP_JAMP(2387) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1485) ! used 4 times + TMP_JAMP(2661) = TMP_JAMP(2387) - TMP_JAMP(2360) ! used 4 times + TMP_JAMP(2660) = TMP_JAMP(2387) + TMP_JAMP(2325) ! used 4 times + TMP_JAMP(2659) = TMP_JAMP(2386) - TMP_JAMP(2348) ! used 4 times + TMP_JAMP(2658) = TMP_JAMP(2386) - TMP_JAMP(2385) ! used 4 times + TMP_JAMP(2657) = TMP_JAMP(2385) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1467) ! used 4 times + TMP_JAMP(2656) = TMP_JAMP(2385) - AMP(1762) ! used 4 times + TMP_JAMP(2655) = TMP_JAMP(2384) - TMP_JAMP(2307) ! used 4 times + TMP_JAMP(2654) = TMP_JAMP(2384) + TMP_JAMP(2276) ! used 4 times + TMP_JAMP(2653) = TMP_JAMP(2384) - TMP_JAMP(2382) ! used 4 times + TMP_JAMP(2652) = TMP_JAMP(2383) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1437) ! used 4 times + TMP_JAMP(2651) = TMP_JAMP(2383) - TMP_JAMP(2306) ! used 4 times + TMP_JAMP(2650) = TMP_JAMP(2383) + TMP_JAMP(2275) ! used 4 times + TMP_JAMP(2649) = TMP_JAMP(2383) - TMP_JAMP(2381) ! used 4 times + TMP_JAMP(2648) = TMP_JAMP(2382) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1476) ! used 4 times + TMP_JAMP(2647) = TMP_JAMP(2382) - AMP(1708) ! used 4 times + TMP_JAMP(2646) = TMP_JAMP(2381) - AMP(1717) ! used 4 times + TMP_JAMP(2645) = TMP_JAMP(2381) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1437) ! used 4 times + TMP_JAMP(2644) = TMP_JAMP(2380) + TMP_JAMP(2309) ! used 4 times + TMP_JAMP(2643) = TMP_JAMP(2380) - TMP_JAMP(2234) ! used 4 times + TMP_JAMP(2642) = TMP_JAMP(2379) + TMP_JAMP(2233) ! used 4 times + TMP_JAMP(2641) = TMP_JAMP(2378) + TMP_JAMP(2352) ! used 4 times + TMP_JAMP(2640) = TMP_JAMP(2378) + TMP_JAMP(2232) ! used 4 times + TMP_JAMP(2639) = TMP_JAMP(2377) + TMP_JAMP(2350) ! used 4 times + TMP_JAMP(2638) = TMP_JAMP(2377) - AMP(1830) ! used 4 times + TMP_JAMP(2637) = TMP_JAMP(2376) - AMP(1836) ! used 4 times + TMP_JAMP(2636) = TMP_JAMP(2376) + TMP_JAMP(2349) ! used 4 times + TMP_JAMP(2635) = TMP_JAMP(2373) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1458) ! used 4 times + TMP_JAMP(2634) = TMP_JAMP(2373) - TMP_JAMP(2371) ! used 4 times + TMP_JAMP(2633) = TMP_JAMP(2373) + TMP_JAMP(2357) ! used 4 times + TMP_JAMP(2632) = TMP_JAMP(2373) - AMP(1521) ! used 4 times + TMP_JAMP(2631) = TMP_JAMP(2372) - TMP_JAMP(2370) ! used 4 times + TMP_JAMP(2630) = TMP_JAMP(2372) + TMP_JAMP(2356) ! used 4 times + TMP_JAMP(2629) = TMP_JAMP(2371) + AMP(1513) ! used 4 times + TMP_JAMP(2628) = TMP_JAMP(2371) + TMP_JAMP(2357) ! used 4 times + TMP_JAMP(2627) = TMP_JAMP(2370) + TMP_JAMP(2356) ! used 4 times + TMP_JAMP(2626) = TMP_JAMP(2369) + AMP(1515) ! used 4 times + TMP_JAMP(2625) = TMP_JAMP(2369) + TMP_JAMP(2355) ! used 4 times + TMP_JAMP(2624) = TMP_JAMP(2369) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1467) ! used 4 times + TMP_JAMP(2623) = TMP_JAMP(2369) - AMP(1506) ! used 4 times + TMP_JAMP(2622) = TMP_JAMP(2368) - TMP_JAMP(2366) ! used 4 times + TMP_JAMP(2621) = TMP_JAMP(2368) + AMP(1530) ! used 4 times + TMP_JAMP(2620) = TMP_JAMP(2368) + TMP_JAMP(2354) ! used 4 times + TMP_JAMP(2619) = TMP_JAMP(2367) + AMP(1513) ! used 4 times + TMP_JAMP(2618) = TMP_JAMP(2367) + TMP_JAMP(2355) ! used 4 times + TMP_JAMP(2617) = TMP_JAMP(2367) - TMP_JAMP(2330) ! used 4 times + TMP_JAMP(2616) = TMP_JAMP(2366) + AMP(1528) ! used 4 times + TMP_JAMP(2615) = TMP_JAMP(2366) + TMP_JAMP(2354) ! used 4 times + TMP_JAMP(2614) = TMP_JAMP(2365) + AMP(1665) ! used 4 times + TMP_JAMP(2613) = TMP_JAMP(2365) - TMP_JAMP(2363) ! used 4 times + TMP_JAMP(2612) = TMP_JAMP(2365) + TMP_JAMP(2328) ! used 4 times + TMP_JAMP(2611) = TMP_JAMP(2365) + TMP_JAMP(2299) ! used 4 times + TMP_JAMP(2610) = TMP_JAMP(2364) - TMP_JAMP(2362) ! used 4 times + TMP_JAMP(2609) = TMP_JAMP(2364) + TMP_JAMP(2327) ! used 4 times + TMP_JAMP(2608) = TMP_JAMP(2364) + TMP_JAMP(2298) ! used 4 times + TMP_JAMP(2607) = TMP_JAMP(2363) + AMP(1663) ! used 4 times + TMP_JAMP(2606) = TMP_JAMP(2363) + TMP_JAMP(2328) ! used 4 times + TMP_JAMP(2605) = TMP_JAMP(2362) + TMP_JAMP(2327) ! used 4 times + TMP_JAMP(2604) = TMP_JAMP(2362) + AMP(1654) ! used 4 times + TMP_JAMP(2603) = TMP_JAMP(2361) - AMP(1665) ! used 4 times + TMP_JAMP(2602) = TMP_JAMP(2361) + TMP_JAMP(2357) ! used 4 times + TMP_JAMP(2601) = TMP_JAMP(2361) + TMP_JAMP(2326) ! used 4 times + TMP_JAMP(2600) = TMP_JAMP(2361) + AMP(1695) ! used 4 times + TMP_JAMP(2599) = TMP_JAMP(2360) + TMP_JAMP(2356) ! used 4 times + TMP_JAMP(2598) = TMP_JAMP(2360) + TMP_JAMP(2325) ! used 4 times + TMP_JAMP(2597) = TMP_JAMP(2360) - AMP(1656) ! used 4 times + TMP_JAMP(2596) = TMP_JAMP(2355) + AMP(1514) ! used 4 times + TMP_JAMP(2595) = TMP_JAMP(2354) + AMP(1529) ! used 4 times + TMP_JAMP(2594) = TMP_JAMP(2353) - TMP_JAMP(2242) ! used 4 times + TMP_JAMP(2593) = TMP_JAMP(2350) - TMP_JAMP(2338) ! used 4 times + TMP_JAMP(2592) = TMP_JAMP(2350) - AMP(1829) ! used 4 times + TMP_JAMP(2591) = TMP_JAMP(2349) - AMP(1835) ! used 4 times + TMP_JAMP(2590) = TMP_JAMP(2349) - TMP_JAMP(2337) ! used 4 times + TMP_JAMP(2589) = TMP_JAMP(2348) - AMP(1890) ! used 4 times + TMP_JAMP(2588) = TMP_JAMP(2348) + TMP_JAMP(2280) ! used 4 times + TMP_JAMP(2587) = TMP_JAMP(2347) - TMP_JAMP(2345) ! used 4 times + TMP_JAMP(2586) = TMP_JAMP(2347) + TMP_JAMP(2279) ! used 4 times + TMP_JAMP(2585) = TMP_JAMP(2347) - AMP(1884) ! used 4 times + TMP_JAMP(2584) = TMP_JAMP(2345) + TMP_JAMP(2279) ! used 4 times + TMP_JAMP(2583) = TMP_JAMP(2345) - AMP(1882) ! used 4 times + TMP_JAMP(2582) = TMP_JAMP(2344) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1467) ! used 4 times + TMP_JAMP(2581) = TMP_JAMP(2344) - TMP_JAMP(2342) ! used 4 times + TMP_JAMP(2580) = TMP_JAMP(2344) + TMP_JAMP(2320) ! used 4 times + TMP_JAMP(2579) = TMP_JAMP(2343) - TMP_JAMP(2341) ! used 4 times + TMP_JAMP(2578) = TMP_JAMP(2343) + TMP_JAMP(2319) ! used 4 times + TMP_JAMP(2577) = TMP_JAMP(2343) - AMP(1566) ! used 4 times + TMP_JAMP(2576) = TMP_JAMP(2342) + TMP_JAMP(2320) ! used 4 times + TMP_JAMP(2575) = TMP_JAMP(2341) + TMP_JAMP(2319) ! used 4 times + TMP_JAMP(2574) = TMP_JAMP(2340) - AMP(1575) ! used 4 times + TMP_JAMP(2573) = TMP_JAMP(2340) - TMP_JAMP(2338) ! used 4 times + TMP_JAMP(2572) = TMP_JAMP(2340) + TMP_JAMP(2318) ! used 4 times + TMP_JAMP(2571) = TMP_JAMP(2340) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1458) ! used 4 times + TMP_JAMP(2570) = TMP_JAMP(2339) - TMP_JAMP(2337) ! used 4 times + TMP_JAMP(2569) = TMP_JAMP(2339) + TMP_JAMP(2317) ! used 4 times + TMP_JAMP(2568) = TMP_JAMP(2339) - AMP(1566) ! used 4 times + TMP_JAMP(2567) = TMP_JAMP(2339) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1485) ! used 4 times + TMP_JAMP(2566) = TMP_JAMP(2338) - AMP(1573) ! used 4 times + TMP_JAMP(2565) = TMP_JAMP(2338) + TMP_JAMP(2318) ! used 4 times + TMP_JAMP(2564) = TMP_JAMP(2337) - AMP(1564) ! used 4 times + TMP_JAMP(2563) = TMP_JAMP(2337) + TMP_JAMP(2317) ! used 4 times + TMP_JAMP(2562) = TMP_JAMP(2336) + TMP_JAMP(2328) ! used 4 times + TMP_JAMP(2561) = TMP_JAMP(2336) - TMP_JAMP(2334) ! used 4 times + TMP_JAMP(2560) = TMP_JAMP(2336) + TMP_JAMP(2262) ! used 4 times + TMP_JAMP(2559) = TMP_JAMP(2336) + AMP(1773) ! used 4 times + TMP_JAMP(2558) = TMP_JAMP(2335) + TMP_JAMP(2327) ! used 4 times + TMP_JAMP(2557) = TMP_JAMP(2335) - TMP_JAMP(2333) ! used 4 times + TMP_JAMP(2556) = TMP_JAMP(2335) + TMP_JAMP(2261) ! used 4 times + TMP_JAMP(2555) = TMP_JAMP(2334) + TMP_JAMP(2262) ! used 4 times + TMP_JAMP(2554) = TMP_JAMP(2333) + AMP(1762) ! used 4 times + TMP_JAMP(2553) = TMP_JAMP(2333) + TMP_JAMP(2261) ! used 4 times + TMP_JAMP(2552) = TMP_JAMP(2332) + AMP(1767) ! used 4 times + TMP_JAMP(2551) = TMP_JAMP(2332) - TMP_JAMP(2330) ! used 4 times + TMP_JAMP(2550) = TMP_JAMP(2332) - AMP(1809) ! used 4 times + TMP_JAMP(2549) = TMP_JAMP(2332) + TMP_JAMP(2260) ! used 4 times + TMP_JAMP(2548) = TMP_JAMP(2331) - TMP_JAMP(2329) ! used 4 times + TMP_JAMP(2547) = TMP_JAMP(2331) + TMP_JAMP(2259) ! used 4 times + TMP_JAMP(2546) = TMP_JAMP(2331) + AMP(1758) ! used 4 times + TMP_JAMP(2545) = TMP_JAMP(2330) + AMP(1765) ! used 4 times + TMP_JAMP(2544) = TMP_JAMP(2330) + TMP_JAMP(2260) ! used 4 times + TMP_JAMP(2543) = TMP_JAMP(2329) + TMP_JAMP(2259) ! used 4 times + TMP_JAMP(2542) = TMP_JAMP(2329) + AMP(1756) ! used 4 times + TMP_JAMP(2541) = TMP_JAMP(2328) + AMP(1664) ! used 4 times + TMP_JAMP(2540) = TMP_JAMP(2326) - AMP(1664) ! used 4 times + TMP_JAMP(2539) = TMP_JAMP(2326) + TMP_JAMP(2318) ! used 4 times + TMP_JAMP(2538) = TMP_JAMP(2325) - AMP(1655) ! used 4 times + TMP_JAMP(2537) = TMP_JAMP(2324) + AMP(1809) ! used 4 times + TMP_JAMP(2536) = TMP_JAMP(2324) + TMP_JAMP(2320) ! used 4 times + TMP_JAMP(2535) = TMP_JAMP(2324) - AMP(1764) ! used 4 times + TMP_JAMP(2534) = TMP_JAMP(2323) - AMP(1773) ! used 4 times + TMP_JAMP(2533) = TMP_JAMP(2323) + TMP_JAMP(2319) ! used 4 times + TMP_JAMP(2532) = TMP_JAMP(2323) + AMP(1803) ! used 4 times + TMP_JAMP(2531) = TMP_JAMP(2321) - AMP(1771) ! used 4 times + TMP_JAMP(2530) = TMP_JAMP(2321) + AMP(1801) ! used 4 times + TMP_JAMP(2529) = TMP_JAMP(2318) - AMP(1574) ! used 4 times + TMP_JAMP(2528) = TMP_JAMP(2317) - AMP(1565) ! used 4 times + TMP_JAMP(2527) = TMP_JAMP(2316) + AMP(1569) ! used 4 times + TMP_JAMP(2526) = TMP_JAMP(2316) - AMP(1560) ! used 4 times + TMP_JAMP(2525) = TMP_JAMP(2315) - AMP(1578) ! used 4 times + TMP_JAMP(2524) = TMP_JAMP(2315) + AMP(1584) ! used 4 times + TMP_JAMP(2523) = TMP_JAMP(2314) + AMP(1567) ! used 4 times + TMP_JAMP(2522) = TMP_JAMP(2314) - AMP(1558) ! used 4 times + TMP_JAMP(2521) = TMP_JAMP(2313) - AMP(1576) ! used 4 times + TMP_JAMP(2520) = TMP_JAMP(2313) + AMP(1582) ! used 4 times + TMP_JAMP(2519) = TMP_JAMP(2312) + AMP(1568) ! used 4 times + TMP_JAMP(2518) = TMP_JAMP(2312) - AMP(1559) ! used 4 times + TMP_JAMP(2517) = TMP_JAMP(2311) - AMP(1577) ! used 4 times + TMP_JAMP(2516) = TMP_JAMP(2311) + AMP(1583) ! used 4 times + TMP_JAMP(2515) = TMP_JAMP(2310) - TMP_JAMP(2239) ! used 4 times + TMP_JAMP(2514) = TMP_JAMP(2307) - AMP(1863) ! used 4 times + TMP_JAMP(2513) = TMP_JAMP(2307) + TMP_JAMP(2276) ! used 4 times + TMP_JAMP(2512) = TMP_JAMP(2306) + TMP_JAMP(2275) ! used 4 times + TMP_JAMP(2511) = TMP_JAMP(2306) - AMP(1857) ! used 4 times + TMP_JAMP(2510) = TMP_JAMP(2303) - AMP(1521) ! used 4 times + TMP_JAMP(2509) = TMP_JAMP(2303) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1476) ! used 4 times + TMP_JAMP(2508) = TMP_JAMP(2303) + AMP(1524) ! used 4 times + TMP_JAMP(2507) = TMP_JAMP(2302) + AMP(1506) ! used 4 times + TMP_JAMP(2506) = TMP_JAMP(2302) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1437) ! used 4 times + TMP_JAMP(2505) = TMP_JAMP(2302) - AMP(1512) ! used 4 times + TMP_JAMP(2504) = TMP_JAMP(2301) - AMP(1519) ! used 4 times + TMP_JAMP(2503) = TMP_JAMP(2301) + AMP(1522) ! used 4 times + TMP_JAMP(2502) = TMP_JAMP(2300) + AMP(1504) ! used 4 times + TMP_JAMP(2501) = TMP_JAMP(2300) - AMP(1510) ! used 4 times + TMP_JAMP(2500) = TMP_JAMP(2299) - TMP_JAMP(2297) ! used 4 times + TMP_JAMP(2499) = TMP_JAMP(2299) + TMP_JAMP(2256) ! used 4 times + TMP_JAMP(2498) = TMP_JAMP(2298) - TMP_JAMP(2296) ! used 4 times + TMP_JAMP(2497) = TMP_JAMP(2298) + TMP_JAMP(2255) ! used 4 times + TMP_JAMP(2496) = TMP_JAMP(2297) + AMP(1717) ! used 4 times + TMP_JAMP(2495) = TMP_JAMP(2297) + TMP_JAMP(2256) ! used 4 times + TMP_JAMP(2494) = TMP_JAMP(2296) + AMP(1708) ! used 4 times + TMP_JAMP(2493) = TMP_JAMP(2296) + TMP_JAMP(2255) ! used 4 times + TMP_JAMP(2492) = TMP_JAMP(2295) + AMP(1713) ! used 4 times + TMP_JAMP(2491) = TMP_JAMP(2295) - TMP_JAMP(2293) ! used 4 times + TMP_JAMP(2490) = TMP_JAMP(2295) + TMP_JAMP(2254) ! used 4 times + TMP_JAMP(2489) = TMP_JAMP(2294) - TMP_JAMP(2292) ! used 4 times + TMP_JAMP(2488) = TMP_JAMP(2294) + TMP_JAMP(2253) ! used 4 times + TMP_JAMP(2487) = TMP_JAMP(2294) + AMP(1704) ! used 4 times + TMP_JAMP(2486) = TMP_JAMP(2293) + AMP(1711) ! used 4 times + TMP_JAMP(2485) = TMP_JAMP(2293) + TMP_JAMP(2254) ! used 4 times + TMP_JAMP(2484) = TMP_JAMP(2292) + TMP_JAMP(2253) ! used 4 times + TMP_JAMP(2483) = TMP_JAMP(2292) + AMP(1702) ! used 4 times + TMP_JAMP(2482) = TMP_JAMP(2291) + AMP(1755) ! used 4 times + TMP_JAMP(2481) = TMP_JAMP(2291) - AMP(1710) ! used 4 times + TMP_JAMP(2480) = TMP_JAMP(2290) - AMP(1719) ! used 4 times + TMP_JAMP(2479) = TMP_JAMP(2290) + AMP(1749) ! used 4 times + TMP_JAMP(2478) = TMP_JAMP(2287) - AMP(1520) ! used 4 times + TMP_JAMP(2477) = TMP_JAMP(2287) + AMP(1523) ! used 4 times + TMP_JAMP(2476) = TMP_JAMP(2286) + AMP(1505) ! used 4 times + TMP_JAMP(2475) = TMP_JAMP(2286) - AMP(1511) ! used 4 times + TMP_JAMP(2474) = TMP_JAMP(2284) - AMP(1695) ! used 4 times + TMP_JAMP(2473) = TMP_JAMP(2284) - TMP_JAMP(2282) ! used 4 times + TMP_JAMP(2472) = TMP_JAMP(2284) + AMP(1650) ! used 4 times + TMP_JAMP(2471) = TMP_JAMP(2283) + AMP(1659) ! used 4 times + TMP_JAMP(2470) = TMP_JAMP(2283) - AMP(1701) ! used 4 times + TMP_JAMP(2469) = TMP_JAMP(2282) + AMP(1648) ! used 4 times + TMP_JAMP(2468) = TMP_JAMP(2281) + AMP(1657) ! used 4 times + TMP_JAMP(2467) = TMP_JAMP(2281) - TMP_JAMP(2267) ! used 4 times + TMP_JAMP(2466) = TMP_JAMP(2280) - AMP(1889) ! used 4 times + TMP_JAMP(2465) = TMP_JAMP(2280) - TMP_JAMP(2272) ! used 4 times + TMP_JAMP(2464) = TMP_JAMP(2279) - AMP(1883) ! used 4 times + TMP_JAMP(2463) = TMP_JAMP(2278) - AMP(1694) ! used 4 times + TMP_JAMP(2462) = TMP_JAMP(2278) + AMP(1649) ! used 4 times + TMP_JAMP(2461) = TMP_JAMP(2277) + AMP(1658) ! used 4 times + TMP_JAMP(2460) = TMP_JAMP(2277) - AMP(1700) ! used 4 times + TMP_JAMP(2459) = TMP_JAMP(2276) - AMP(1862) ! used 4 times + TMP_JAMP(2458) = TMP_JAMP(2275) - AMP(1856) ! used 4 times + TMP_JAMP(2457) = TMP_JAMP(2274) - TMP_JAMP(2272) ! used 4 times + TMP_JAMP(2456) = TMP_JAMP(2274) + TMP_JAMP(2250) ! used 4 times + TMP_JAMP(2455) = TMP_JAMP(2274) - AMP(1629) ! used 4 times + TMP_JAMP(2454) = TMP_JAMP(2274) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1467) ! used 4 times + TMP_JAMP(2453) = TMP_JAMP(2273) - TMP_JAMP(2271) ! used 4 times + TMP_JAMP(2452) = TMP_JAMP(2273) + TMP_JAMP(2249) ! used 4 times + TMP_JAMP(2451) = TMP_JAMP(2272) + TMP_JAMP(2250) ! used 4 times + TMP_JAMP(2450) = TMP_JAMP(2271) + TMP_JAMP(2249) ! used 4 times + TMP_JAMP(2449) = TMP_JAMP(2270) - AMP(1632) ! used 4 times + TMP_JAMP(2448) = TMP_JAMP(2270) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1458) ! used 4 times + TMP_JAMP(2447) = TMP_JAMP(2270) - TMP_JAMP(2268) ! used 4 times + TMP_JAMP(2446) = TMP_JAMP(2270) + AMP(1638) ! used 4 times + TMP_JAMP(2445) = TMP_JAMP(2270) + TMP_JAMP(2248) ! used 4 times + TMP_JAMP(2444) = TMP_JAMP(2269) - TMP_JAMP(2267) ! used 4 times + TMP_JAMP(2443) = TMP_JAMP(2269) + TMP_JAMP(2247) ! used 4 times + TMP_JAMP(2442) = TMP_JAMP(2269) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1485) ! used 4 times + TMP_JAMP(2441) = TMP_JAMP(2269) - AMP(1614) ! used 4 times + TMP_JAMP(2440) = TMP_JAMP(2268) - AMP(1630) ! used 4 times + TMP_JAMP(2439) = TMP_JAMP(2268) + TMP_JAMP(2248) ! used 4 times + TMP_JAMP(2438) = TMP_JAMP(2267) + TMP_JAMP(2247) ! used 4 times + TMP_JAMP(2437) = TMP_JAMP(2267) - AMP(1612) ! used 4 times + TMP_JAMP(2436) = TMP_JAMP(2266) + AMP(1638) ! used 4 times + TMP_JAMP(2435) = TMP_JAMP(2266) - AMP(1620) ! used 4 times + TMP_JAMP(2434) = TMP_JAMP(2266) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1476) ! used 4 times + TMP_JAMP(2433) = TMP_JAMP(2265) - AMP(1629) ! used 4 times + TMP_JAMP(2432) = TMP_JAMP(2265) + AMP(1623) ! used 4 times + TMP_JAMP(2431) = TMP_JAMP(2265) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1437) ! used 4 times + TMP_JAMP(2430) = TMP_JAMP(2264) + AMP(1636) ! used 4 times + TMP_JAMP(2429) = TMP_JAMP(2264) - AMP(1618) ! used 4 times + TMP_JAMP(2428) = TMP_JAMP(2263) - AMP(1627) ! used 4 times + TMP_JAMP(2427) = TMP_JAMP(2263) + AMP(1621) ! used 4 times + TMP_JAMP(2426) = TMP_JAMP(2262) + TMP_JAMP(2256) ! used 4 times + TMP_JAMP(2425) = TMP_JAMP(2262) + AMP(1772) ! used 4 times + TMP_JAMP(2424) = TMP_JAMP(2261) + TMP_JAMP(2255) ! used 4 times + TMP_JAMP(2423) = TMP_JAMP(2260) + AMP(1766) ! used 4 times + TMP_JAMP(2422) = TMP_JAMP(2260) - AMP(1808) ! used 4 times + TMP_JAMP(2421) = TMP_JAMP(2259) + AMP(1757) ! used 4 times + TMP_JAMP(2420) = TMP_JAMP(2258) + AMP(1808) ! used 4 times + TMP_JAMP(2419) = TMP_JAMP(2258) + TMP_JAMP(2250) ! used 4 times + TMP_JAMP(2418) = TMP_JAMP(2258) - AMP(1763) ! used 4 times + TMP_JAMP(2417) = TMP_JAMP(2257) - AMP(1772) ! used 4 times + TMP_JAMP(2416) = TMP_JAMP(2257) + TMP_JAMP(2249) ! used 4 times + TMP_JAMP(2415) = TMP_JAMP(2257) + AMP(1802) ! used 4 times + TMP_JAMP(2414) = TMP_JAMP(2254) + AMP(1712) ! used 4 times + TMP_JAMP(2413) = TMP_JAMP(2253) + AMP(1703) ! used 4 times + TMP_JAMP(2412) = TMP_JAMP(2252) + AMP(1754) ! used 4 times + TMP_JAMP(2411) = TMP_JAMP(2252) - AMP(1709) ! used 4 times + TMP_JAMP(2410) = TMP_JAMP(2251) - AMP(1718) ! used 4 times + TMP_JAMP(2409) = TMP_JAMP(2251) + AMP(1748) ! used 4 times + TMP_JAMP(2408) = TMP_JAMP(2248) - AMP(1631) ! used 4 times + TMP_JAMP(2407) = TMP_JAMP(2247) - AMP(1613) ! used 4 times + TMP_JAMP(2406) = TMP_JAMP(2246) + AMP(1637) ! used 4 times + TMP_JAMP(2405) = TMP_JAMP(2246) - AMP(1619) ! used 4 times + TMP_JAMP(2404) = TMP_JAMP(2245) - AMP(1628) ! used 4 times + TMP_JAMP(2403) = TMP_JAMP(2245) + AMP(1622) ! used 4 times + TMP_JAMP(2402) = TMP_JAMP(2211) + TMP_JAMP(2187) ! used 4 times + TMP_JAMP(2401) = TMP_JAMP(2210) + TMP_JAMP(2188) ! used 4 times + TMP_JAMP(2400) = AMP(1459) + AMP(1888) ! used 4 times + TMP_JAMP(2399) = AMP(1461) + AMP(1807) ! used 4 times + TMP_JAMP(2398) = AMP(1468) + AMP(1861) ! used 4 times + TMP_JAMP(2397) = AMP(1470) + AMP(1753) ! used 4 times + TMP_JAMP(2396) = AMP(1452) + AMP(1693) ! used 4 times + TMP_JAMP(2395) = AMP(1450) + AMP(1828) ! used 4 times + TMP_JAMP(2394) = AMP(1477) + AMP(1834) ! used 4 times + TMP_JAMP(2393) = AMP(1479) + AMP(1699) ! used 4 times + TMP_JAMP(2392) = AMP(1431) + AMP(1747) ! used 4 times + TMP_JAMP(2391) = AMP(1429) + AMP(1855) ! used 4 times + TMP_JAMP(2673) = TMP_JAMP(2402) + TMP_JAMP(2285) ! used 4 times + TMP_JAMP(2672) = TMP_JAMP(2401) + TMP_JAMP(2285) ! used 4 times + TMP_JAMP(2675) = TMP_JAMP(2531) - TMP_JAMP(2334) ! used 3 times + TMP_JAMP(2674) = TMP_JAMP(2393) - TMP_JAMP(2281) ! used 3 times + TMP_JAMP(2881) = TMP_JAMP(2674) + TMP_JAMP(2660) ! used 2 times + TMP_JAMP(2880) = TMP_JAMP(2673) + TMP_JAMP(2236) ! used 2 times + TMP_JAMP(2879) = TMP_JAMP(2672) + TMP_JAMP(2235) ! used 2 times + TMP_JAMP(2878) = TMP_JAMP(2666) + TMP_JAMP(2604) ! used 2 times + TMP_JAMP(2877) = TMP_JAMP(2658) + TMP_JAMP(2554) ! used 2 times + TMP_JAMP(2876) = TMP_JAMP(2658) - TMP_JAMP(2399) ! used 2 times + TMP_JAMP(2875) = TMP_JAMP(2653) + TMP_JAMP(2494) ! used 2 times + TMP_JAMP(2874) = TMP_JAMP(2649) + TMP_JAMP(2496) ! used 2 times + TMP_JAMP(2873) = TMP_JAMP(2643) + TMP_JAMP(2309) ! used 2 times + TMP_JAMP(2872) = TMP_JAMP(2642) + TMP_JAMP(2310) ! used 2 times + TMP_JAMP(2871) = TMP_JAMP(2642) + TMP_JAMP(2353) ! used 2 times + TMP_JAMP(2870) = TMP_JAMP(2641) + TMP_JAMP(2236) ! used 2 times + TMP_JAMP(2869) = TMP_JAMP(2640) + TMP_JAMP(2352) ! used 2 times + TMP_JAMP(2868) = TMP_JAMP(2638) + TMP_JAMP(2234) ! used 2 times + TMP_JAMP(2867) = TMP_JAMP(2638) - TMP_JAMP(2233) ! used 2 times + TMP_JAMP(2866) = TMP_JAMP(2638) - TMP_JAMP(2504) ! used 2 times + TMP_JAMP(2865) = TMP_JAMP(2630) + TMP_JAMP(2621) ! used 2 times + TMP_JAMP(2864) = TMP_JAMP(2627) + TMP_JAMP(2501) ! used 2 times + TMP_JAMP(2863) = TMP_JAMP(2627) + TMP_JAMP(2616) ! used 2 times + TMP_JAMP(2862) = TMP_JAMP(2623) - TMP_JAMP(2506) ! used 2 times + TMP_JAMP(2861) = TMP_JAMP(2621) - TMP_JAMP(2616) ! used 2 times + TMP_JAMP(2860) = TMP_JAMP(2621) + TMP_JAMP(2595) ! used 2 times + TMP_JAMP(2859) = TMP_JAMP(2620) - TMP_JAMP(2508) ! used 2 times + TMP_JAMP(2858) = TMP_JAMP(2619) + TMP_JAMP(2596) ! used 2 times + TMP_JAMP(2857) = TMP_JAMP(2618) - TMP_JAMP(2502) ! used 2 times + TMP_JAMP(2856) = TMP_JAMP(2617) + TMP_JAMP(2399) ! used 2 times + TMP_JAMP(2855) = TMP_JAMP(2616) + TMP_JAMP(2595) ! used 2 times + TMP_JAMP(2854) = TMP_JAMP(2615) - TMP_JAMP(2503) ! used 2 times + TMP_JAMP(2853) = TMP_JAMP(2612) + TMP_JAMP(2561) ! used 2 times + TMP_JAMP(2852) = TMP_JAMP(2607) - TMP_JAMP(2388) ! used 2 times + TMP_JAMP(2851) = TMP_JAMP(2604) - TMP_JAMP(2364) ! used 2 times + TMP_JAMP(2850) = TMP_JAMP(2603) - TMP_JAMP(2365) ! used 2 times + TMP_JAMP(2849) = TMP_JAMP(2602) + TMP_JAMP(2596) ! used 2 times + TMP_JAMP(2848) = TMP_JAMP(2600) - TMP_JAMP(2473) ! used 2 times + TMP_JAMP(2847) = TMP_JAMP(2597) - TMP_JAMP(2364) ! used 2 times + TMP_JAMP(2846) = TMP_JAMP(2597) + TMP_JAMP(2538) ! used 2 times + TMP_JAMP(2845) = TMP_JAMP(2597) + TMP_JAMP(2595) ! used 2 times + TMP_JAMP(2844) = TMP_JAMP(2594) + TMP_JAMP(2379) ! used 2 times + TMP_JAMP(2843) = TMP_JAMP(2592) - TMP_JAMP(2233) ! used 2 times + TMP_JAMP(2842) = TMP_JAMP(2592) - TMP_JAMP(2566) ! used 2 times + TMP_JAMP(2841) = TMP_JAMP(2592) - TMP_JAMP(2232) ! used 2 times + TMP_JAMP(2840) = TMP_JAMP(2591) - TMP_JAMP(2233) ! used 2 times + TMP_JAMP(2839) = TMP_JAMP(2591) - TMP_JAMP(2564) ! used 2 times + TMP_JAMP(2838) = TMP_JAMP(2587) + TMP_JAMP(2353) ! used 2 times + TMP_JAMP(2837) = TMP_JAMP(2585) - TMP_JAMP(2564) ! used 2 times + TMP_JAMP(2836) = TMP_JAMP(2583) - TMP_JAMP(2242) ! used 2 times + TMP_JAMP(2835) = TMP_JAMP(2580) - TMP_JAMP(2525) ! used 2 times + TMP_JAMP(2834) = TMP_JAMP(2577) + TMP_JAMP(2567) ! used 2 times + TMP_JAMP(2833) = TMP_JAMP(2576) - TMP_JAMP(2521) ! used 2 times + TMP_JAMP(2832) = TMP_JAMP(2575) + TMP_JAMP(2564) ! used 2 times + TMP_JAMP(2831) = TMP_JAMP(2574) - TMP_JAMP(2566) ! used 2 times + TMP_JAMP(2830) = TMP_JAMP(2574) + TMP_JAMP(2529) ! used 2 times + TMP_JAMP(2829) = TMP_JAMP(2567) + TMP_JAMP(2389) ! used 2 times + TMP_JAMP(2828) = TMP_JAMP(2566) + TMP_JAMP(2529) ! used 2 times + TMP_JAMP(2827) = TMP_JAMP(2564) + TMP_JAMP(2528) ! used 2 times + TMP_JAMP(2826) = TMP_JAMP(2559) - TMP_JAMP(2533) ! used 2 times + TMP_JAMP(2825) = TMP_JAMP(2557) + TMP_JAMP(2542) ! used 2 times + TMP_JAMP(2824) = TMP_JAMP(2554) + TMP_JAMP(2535) ! used 2 times + TMP_JAMP(2823) = TMP_JAMP(2552) - TMP_JAMP(2545) ! used 2 times + TMP_JAMP(2822) = TMP_JAMP(2552) + TMP_JAMP(2423) ! used 2 times + TMP_JAMP(2821) = TMP_JAMP(2548) + TMP_JAMP(2530) ! used 2 times + TMP_JAMP(2820) = TMP_JAMP(2547) - TMP_JAMP(2415) ! used 2 times + TMP_JAMP(2819) = TMP_JAMP(2547) - TMP_JAMP(2532) ! used 2 times + TMP_JAMP(2818) = TMP_JAMP(2546) - TMP_JAMP(2542) ! used 2 times + TMP_JAMP(2817) = TMP_JAMP(2546) + TMP_JAMP(2421) ! used 2 times + TMP_JAMP(2816) = TMP_JAMP(2546) + TMP_JAMP(2538) ! used 2 times + TMP_JAMP(2815) = TMP_JAMP(2545) + TMP_JAMP(2423) ! used 2 times + TMP_JAMP(2814) = TMP_JAMP(2543) - TMP_JAMP(2530) ! used 2 times + TMP_JAMP(2813) = TMP_JAMP(2542) + TMP_JAMP(2421) ! used 2 times + TMP_JAMP(2812) = TMP_JAMP(2541) - TMP_JAMP(2539) ! used 2 times + TMP_JAMP(2811) = TMP_JAMP(2538) - TMP_JAMP(2327) ! used 2 times + TMP_JAMP(2810) = TMP_JAMP(2537) + TMP_JAMP(2235) ! used 2 times + TMP_JAMP(2809) = TMP_JAMP(2536) + TMP_JAMP(2529) ! used 2 times + TMP_JAMP(2808) = TMP_JAMP(2532) - TMP_JAMP(2530) ! used 2 times + TMP_JAMP(2807) = TMP_JAMP(2532) + TMP_JAMP(2528) ! used 2 times + TMP_JAMP(2806) = TMP_JAMP(2530) + TMP_JAMP(2415) ! used 2 times + TMP_JAMP(2805) = TMP_JAMP(2528) - TMP_JAMP(2460) ! used 2 times + TMP_JAMP(2804) = TMP_JAMP(2527) - TMP_JAMP(2523) ! used 2 times + TMP_JAMP(2803) = TMP_JAMP(2527) + TMP_JAMP(2519) ! used 2 times + TMP_JAMP(2802) = TMP_JAMP(2527) + TMP_JAMP(2509) ! used 2 times + TMP_JAMP(2801) = TMP_JAMP(2526) - TMP_JAMP(2522) ! used 2 times + TMP_JAMP(2800) = TMP_JAMP(2526) + TMP_JAMP(2518) ! used 2 times + TMP_JAMP(2799) = TMP_JAMP(2525) - TMP_JAMP(2521) ! used 2 times + TMP_JAMP(2798) = TMP_JAMP(2525) + TMP_JAMP(2517) ! used 2 times + TMP_JAMP(2797) = TMP_JAMP(2524) - TMP_JAMP(2520) ! used 2 times + TMP_JAMP(2796) = TMP_JAMP(2524) + TMP_JAMP(2516) ! used 2 times + TMP_JAMP(2795) = TMP_JAMP(2523) + TMP_JAMP(2519) ! used 2 times + TMP_JAMP(2794) = TMP_JAMP(2522) + TMP_JAMP(2518) ! used 2 times + TMP_JAMP(2793) = TMP_JAMP(2521) + TMP_JAMP(2517) ! used 2 times + TMP_JAMP(2792) = TMP_JAMP(2520) + TMP_JAMP(2516) ! used 2 times + TMP_JAMP(2791) = TMP_JAMP(2518) + TMP_JAMP(2226) ! used 2 times + TMP_JAMP(2790) = TMP_JAMP(2517) + TMP_JAMP(2226) ! used 2 times + TMP_JAMP(2789) = TMP_JAMP(2517) + TMP_JAMP(2335) ! used 2 times + TMP_JAMP(2788) = TMP_JAMP(2515) + TMP_JAMP(2379) ! used 2 times + TMP_JAMP(2787) = TMP_JAMP(2514) - TMP_JAMP(2504) ! used 2 times + TMP_JAMP(2786) = TMP_JAMP(2511) + TMP_JAMP(2239) ! used 2 times + TMP_JAMP(2785) = TMP_JAMP(2510) + TMP_JAMP(2436) ! used 2 times + TMP_JAMP(2784) = TMP_JAMP(2508) - TMP_JAMP(2503) ! used 2 times + TMP_JAMP(2783) = TMP_JAMP(2508) + TMP_JAMP(2477) ! used 2 times + TMP_JAMP(2782) = TMP_JAMP(2505) - TMP_JAMP(2501) ! used 2 times + TMP_JAMP(2781) = TMP_JAMP(2504) + TMP_JAMP(2478) ! used 2 times + TMP_JAMP(2780) = TMP_JAMP(2501) + TMP_JAMP(2475) ! used 2 times + TMP_JAMP(2779) = TMP_JAMP(2496) + TMP_JAMP(2480) ! used 2 times + TMP_JAMP(2778) = TMP_JAMP(2494) + TMP_JAMP(2481) ! used 2 times + TMP_JAMP(2777) = TMP_JAMP(2492) - TMP_JAMP(2486) ! used 2 times + TMP_JAMP(2776) = TMP_JAMP(2492) + TMP_JAMP(2414) ! used 2 times + TMP_JAMP(2775) = TMP_JAMP(2491) + TMP_JAMP(2397) ! used 2 times + TMP_JAMP(2774) = TMP_JAMP(2490) - TMP_JAMP(2482) ! used 2 times + TMP_JAMP(2773) = TMP_JAMP(2488) - TMP_JAMP(2409) ! used 2 times + TMP_JAMP(2772) = TMP_JAMP(2488) - TMP_JAMP(2479) ! used 2 times + TMP_JAMP(2771) = TMP_JAMP(2487) - TMP_JAMP(2483) ! used 2 times + TMP_JAMP(2770) = TMP_JAMP(2487) + TMP_JAMP(2413) ! used 2 times + TMP_JAMP(2769) = TMP_JAMP(2486) + TMP_JAMP(2414) ! used 2 times + TMP_JAMP(2768) = TMP_JAMP(2485) - TMP_JAMP(2397) ! used 2 times + TMP_JAMP(2767) = TMP_JAMP(2483) + TMP_JAMP(2413) ! used 2 times + TMP_JAMP(2766) = TMP_JAMP(2482) + TMP_JAMP(2478) ! used 2 times + TMP_JAMP(2765) = TMP_JAMP(2482) + TMP_JAMP(2412) ! used 2 times + TMP_JAMP(2764) = TMP_JAMP(2482) + TMP_JAMP(2236) ! used 2 times + TMP_JAMP(2763) = TMP_JAMP(2481) + TMP_JAMP(2477) ! used 2 times + TMP_JAMP(2762) = TMP_JAMP(2480) + TMP_JAMP(2476) ! used 2 times + TMP_JAMP(2761) = TMP_JAMP(2479) - TMP_JAMP(2392) ! used 2 times + TMP_JAMP(2760) = TMP_JAMP(2479) + TMP_JAMP(2475) ! used 2 times + TMP_JAMP(2759) = TMP_JAMP(2477) - TMP_JAMP(2229) ! used 2 times + TMP_JAMP(2758) = TMP_JAMP(2477) - TMP_JAMP(2298) ! used 2 times + TMP_JAMP(2757) = TMP_JAMP(2476) - TMP_JAMP(2299) ! used 2 times + TMP_JAMP(2756) = TMP_JAMP(2476) - TMP_JAMP(2229) ! used 2 times + TMP_JAMP(2755) = TMP_JAMP(2475) - TMP_JAMP(2470) ! used 2 times + TMP_JAMP(2754) = TMP_JAMP(2474) + TMP_JAMP(2463) ! used 2 times + TMP_JAMP(2753) = TMP_JAMP(2473) + TMP_JAMP(2396) ! used 2 times + TMP_JAMP(2752) = TMP_JAMP(2472) - TMP_JAMP(2469) ! used 2 times + TMP_JAMP(2751) = TMP_JAMP(2472) + TMP_JAMP(2462) ! used 2 times + TMP_JAMP(2750) = TMP_JAMP(2471) - TMP_JAMP(2468) ! used 2 times + TMP_JAMP(2749) = TMP_JAMP(2471) + TMP_JAMP(2461) ! used 2 times + TMP_JAMP(2748) = TMP_JAMP(2470) + TMP_JAMP(2460) ! used 2 times + TMP_JAMP(2747) = TMP_JAMP(2470) - TMP_JAMP(2236) ! used 2 times + TMP_JAMP(2746) = TMP_JAMP(2469) + TMP_JAMP(2462) ! used 2 times + TMP_JAMP(2745) = TMP_JAMP(2468) + TMP_JAMP(2461) ! used 2 times + TMP_JAMP(2744) = TMP_JAMP(2466) - TMP_JAMP(2236) ! used 2 times + TMP_JAMP(2743) = TMP_JAMP(2465) + TMP_JAMP(2386) ! used 2 times + TMP_JAMP(2742) = TMP_JAMP(2464) - TMP_JAMP(2236) ! used 2 times + TMP_JAMP(2741) = TMP_JAMP(2464) - TMP_JAMP(2229) ! used 2 times + TMP_JAMP(2740) = TMP_JAMP(2463) - TMP_JAMP(2235) ! used 2 times + TMP_JAMP(2739) = TMP_JAMP(2463) - TMP_JAMP(2326) ! used 2 times + TMP_JAMP(2738) = TMP_JAMP(2460) - TMP_JAMP(2235) ! used 2 times + TMP_JAMP(2737) = TMP_JAMP(2459) - TMP_JAMP(2235) ! used 2 times + TMP_JAMP(2736) = TMP_JAMP(2458) - TMP_JAMP(2235) ! used 2 times + TMP_JAMP(2735) = TMP_JAMP(2458) - TMP_JAMP(2226) ! used 2 times + TMP_JAMP(2734) = TMP_JAMP(2455) + TMP_JAMP(2431) ! used 2 times + TMP_JAMP(2733) = TMP_JAMP(2454) + TMP_JAMP(2433) ! used 2 times + TMP_JAMP(2732) = TMP_JAMP(2454) - TMP_JAMP(2449) ! used 2 times + TMP_JAMP(2731) = TMP_JAMP(2453) - TMP_JAMP(2429) ! used 2 times + TMP_JAMP(2730) = TMP_JAMP(2451) - TMP_JAMP(2440) ! used 2 times + TMP_JAMP(2729) = TMP_JAMP(2450) + TMP_JAMP(2429) ! used 2 times + TMP_JAMP(2728) = TMP_JAMP(2448) - AMP(1632) ! used 2 times + TMP_JAMP(2727) = TMP_JAMP(2445) + TMP_JAMP(2406) ! used 2 times + TMP_JAMP(2726) = TMP_JAMP(2442) + TMP_JAMP(2432) ! used 2 times + TMP_JAMP(2725) = TMP_JAMP(2441) - TMP_JAMP(2437) ! used 2 times + TMP_JAMP(2724) = TMP_JAMP(2441) + TMP_JAMP(2407) ! used 2 times + TMP_JAMP(2723) = TMP_JAMP(2440) + TMP_JAMP(2408) ! used 2 times + TMP_JAMP(2722) = TMP_JAMP(2439) + TMP_JAMP(2430) ! used 2 times + TMP_JAMP(2721) = TMP_JAMP(2438) + TMP_JAMP(2427) ! used 2 times + TMP_JAMP(2720) = TMP_JAMP(2437) + TMP_JAMP(2407) ! used 2 times + TMP_JAMP(2719) = TMP_JAMP(2434) - AMP(1620) ! used 2 times + TMP_JAMP(2718) = TMP_JAMP(2431) + AMP(1623) ! used 2 times + TMP_JAMP(2717) = TMP_JAMP(2430) + TMP_JAMP(2406) ! used 2 times + TMP_JAMP(2716) = TMP_JAMP(2428) + TMP_JAMP(2272) ! used 2 times + TMP_JAMP(2715) = TMP_JAMP(2427) + TMP_JAMP(2403) ! used 2 times + TMP_JAMP(2714) = TMP_JAMP(2426) + TMP_JAMP(2299) ! used 2 times + TMP_JAMP(2713) = TMP_JAMP(2424) + TMP_JAMP(2298) ! used 2 times + TMP_JAMP(2712) = TMP_JAMP(2424) + TMP_JAMP(2335) ! used 2 times + TMP_JAMP(2711) = TMP_JAMP(2423) + TMP_JAMP(2410) ! used 2 times + TMP_JAMP(2710) = TMP_JAMP(2421) + TMP_JAMP(2411) ! used 2 times + TMP_JAMP(2709) = TMP_JAMP(2419) + TMP_JAMP(2404) ! used 2 times + TMP_JAMP(2708) = TMP_JAMP(2418) - TMP_JAMP(2408) ! used 2 times + TMP_JAMP(2707) = TMP_JAMP(2418) + TMP_JAMP(2413) ! used 2 times + TMP_JAMP(2706) = TMP_JAMP(2417) + TMP_JAMP(2414) ! used 2 times + TMP_JAMP(2705) = TMP_JAMP(2416) - TMP_JAMP(2407) ! used 2 times + TMP_JAMP(2704) = TMP_JAMP(2415) + TMP_JAMP(2405) ! used 2 times + TMP_JAMP(2703) = TMP_JAMP(2412) + TMP_JAMP(2397) ! used 2 times + TMP_JAMP(2702) = TMP_JAMP(2412) + TMP_JAMP(2405) ! used 2 times + TMP_JAMP(2701) = TMP_JAMP(2411) + TMP_JAMP(2406) ! used 2 times + TMP_JAMP(2700) = TMP_JAMP(2410) + TMP_JAMP(2403) ! used 2 times + TMP_JAMP(2699) = TMP_JAMP(2409) + TMP_JAMP(2404) ! used 2 times + TMP_JAMP(2698) = TMP_JAMP(2409) + TMP_JAMP(2392) ! used 2 times + TMP_JAMP(2697) = TMP_JAMP(2400) + TMP_JAMP(2242) ! used 2 times + TMP_JAMP(2696) = TMP_JAMP(2400) + TMP_JAMP(2229) ! used 2 times + TMP_JAMP(2695) = TMP_JAMP(2398) + TMP_JAMP(2239) ! used 2 times + TMP_JAMP(2694) = TMP_JAMP(2398) + TMP_JAMP(2226) ! used 2 times + TMP_JAMP(2693) = TMP_JAMP(2396) + TMP_JAMP(2326) ! used 2 times + TMP_JAMP(2692) = TMP_JAMP(2396) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1454) ! used 2 times + TMP_JAMP(2691) = TMP_JAMP(2395) - TMP_JAMP(2390) ! used 2 times + TMP_JAMP(2690) = TMP_JAMP(2395) + TMP_JAMP(2232) ! used 2 times + TMP_JAMP(2689) = TMP_JAMP(2395) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1451) ! used 2 times + TMP_JAMP(2688) = TMP_JAMP(2394) + TMP_JAMP(2234) ! used 2 times + TMP_JAMP(2687) = TMP_JAMP(2394) + TMP_JAMP(2232) ! used 2 times + TMP_JAMP(2686) = TMP_JAMP(2392) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1433) ! used 2 times + TMP_JAMP(2685) = TMP_JAMP(2391) + TMP_JAMP(2239) ! used 2 times + TMP_JAMP(2684) = TMP_JAMP(2391) + TMP_JAMP(2226) ! used 2 times + TMP_JAMP(2683) = TMP_JAMP(2391) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1430) ! used 2 times + TMP_JAMP(2682) = TMP_JAMP(2389) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1478) ! used 2 times + TMP_JAMP(2681) = TMP_JAMP(2386) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1460) ! used 2 times + TMP_JAMP(2680) = TMP_JAMP(2385) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1463) ! used 2 times + TMP_JAMP(2679) = TMP_JAMP(2384) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1469) ! used 2 times + TMP_JAMP(2678) = TMP_JAMP(2382) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(1472) ! used 2 times + TMP_JAMP(2677) = TMP_JAMP(2351) + TMP_JAMP(2229) ! used 2 times + TMP_JAMP(2676) = TMP_JAMP(2308) + TMP_JAMP(2226) ! used 2 times + TMP_JAMP(2911) = TMP_JAMP(2861) + TMP_JAMP(2631) ! used 2 times + TMP_JAMP(2910) = TMP_JAMP(2856) + TMP_JAMP(2680) ! used 2 times + TMP_JAMP(2909) = TMP_JAMP(2840) + TMP_JAMP(2637) ! used 2 times + TMP_JAMP(2908) = TMP_JAMP(2831) + TMP_JAMP(2581) ! used 2 times + TMP_JAMP(2907) = TMP_JAMP(2802) + TMP_JAMP(2632) ! used 2 times + TMP_JAMP(2906) = TMP_JAMP(2801) - TMP_JAMP(2579) ! used 2 times + TMP_JAMP(2905) = TMP_JAMP(2799) - TMP_JAMP(2581) ! used 2 times + TMP_JAMP(2904) = TMP_JAMP(2792) + TMP_JAMP(2563) ! used 2 times + TMP_JAMP(2903) = TMP_JAMP(2784) - TMP_JAMP(2622) ! used 2 times + TMP_JAMP(2902) = TMP_JAMP(2782) + TMP_JAMP(2631) ! used 2 times + TMP_JAMP(2901) = TMP_JAMP(2781) + TMP_JAMP(2628) ! used 2 times + TMP_JAMP(2900) = TMP_JAMP(2777) - TMP_JAMP(2500) ! used 2 times + TMP_JAMP(2899) = TMP_JAMP(2771) - TMP_JAMP(2498) ! used 2 times + TMP_JAMP(2898) = TMP_JAMP(2754) - TMP_JAMP(2601) ! used 2 times + TMP_JAMP(2897) = TMP_JAMP(2752) - TMP_JAMP(2610) ! used 2 times + TMP_JAMP(2896) = TMP_JAMP(2750) - TMP_JAMP(2613) ! used 2 times + TMP_JAMP(2895) = TMP_JAMP(2748) - TMP_JAMP(2598) ! used 2 times + TMP_JAMP(2894) = TMP_JAMP(2746) - TMP_JAMP(2605) ! used 2 times + TMP_JAMP(2893) = TMP_JAMP(2744) + TMP_JAMP(2589) ! used 2 times + TMP_JAMP(2892) = TMP_JAMP(2742) + TMP_JAMP(2585) ! used 2 times + TMP_JAMP(2891) = TMP_JAMP(2741) + TMP_JAMP(2583) ! used 2 times + TMP_JAMP(2890) = TMP_JAMP(2737) + TMP_JAMP(2514) ! used 2 times + TMP_JAMP(2889) = TMP_JAMP(2736) + TMP_JAMP(2511) ! used 2 times + TMP_JAMP(2888) = TMP_JAMP(2733) + TMP_JAMP(2507) ! used 2 times + TMP_JAMP(2887) = TMP_JAMP(2725) - TMP_JAMP(2453) ! used 2 times + TMP_JAMP(2886) = TMP_JAMP(2709) - TMP_JAMP(2422) ! used 2 times + TMP_JAMP(2885) = TMP_JAMP(2705) - TMP_JAMP(2425) ! used 2 times + TMP_JAMP(2884) = TMP_JAMP(2697) + TMP_JAMP(2589) ! used 2 times + TMP_JAMP(2883) = TMP_JAMP(2694) - TMP_JAMP(2459) ! used 2 times + TMP_JAMP(2882) = TMP_JAMP(2688) + TMP_JAMP(2637) ! used 2 times + TMP_JAMP(2941) = TMP_JAMP(2910) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2063) ! used 2 times + TMP_JAMP(2940) = TMP_JAMP(2903) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1850) ! used 2 times + TMP_JAMP(2939) = TMP_JAMP(2893) - TMP_JAMP(1653) ! used 2 times + TMP_JAMP(2938) = TMP_JAMP(2891) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1985) ! used 2 times + TMP_JAMP(2937) = TMP_JAMP(2890) - TMP_JAMP(1860) ! used 2 times + TMP_JAMP(2936) = TMP_JAMP(2889) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1998) ! used 2 times + TMP_JAMP(2935) = TMP_JAMP(2878) - TMP_JAMP(2123) ! used 2 times + TMP_JAMP(2934) = TMP_JAMP(2876) + TMP_JAMP(1936) ! used 2 times + TMP_JAMP(2933) = TMP_JAMP(2852) + TMP_JAMP(2140) ! used 2 times + TMP_JAMP(2932) = TMP_JAMP(2716) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1992) ! used 2 times + TMP_JAMP(2931) = TMP_JAMP(2696) - TMP_JAMP(1657) ! used 2 times + TMP_JAMP(2930) = TMP_JAMP(2692) - TMP_JAMP(2033) ! used 2 times + TMP_JAMP(2929) = TMP_JAMP(2682) - TMP_JAMP(1802) ! used 2 times + TMP_JAMP(2928) = TMP_JAMP(2681) - TMP_JAMP(1873) ! used 2 times + TMP_JAMP(2927) = TMP_JAMP(2676) + TMP_JAMP(2103) ! used 2 times + TMP_JAMP(2926) = TMP_JAMP(2675) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(2153) ! used 2 times + TMP_JAMP(2925) = TMP_JAMP(2673) - TMP_JAMP(2131) ! used 2 times + TMP_JAMP(2924) = TMP_JAMP(2672) + TMP_JAMP(2133) ! used 2 times + TMP_JAMP(2923) = TMP_JAMP(2653) + TMP_JAMP(1929) ! used 2 times + TMP_JAMP(2922) = TMP_JAMP(2649) + TMP_JAMP(2096) ! used 2 times + TMP_JAMP(2921) = TMP_JAMP(2644) - TMP_JAMP(2100) ! used 2 times + TMP_JAMP(2920) = TMP_JAMP(2643) - TMP_JAMP(2102) ! used 2 times + TMP_JAMP(2919) = TMP_JAMP(2640) + TMP_JAMP(2058) ! used 2 times + TMP_JAMP(2918) = TMP_JAMP(2639) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1796) ! used 2 times + TMP_JAMP(2917) = TMP_JAMP(2428) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(2112) ! used 2 times + TMP_JAMP(2916) = TMP_JAMP(2380) - TMP_JAMP(2152) ! used 2 times + TMP_JAMP(2915) = TMP_JAMP(2378) + TMP_JAMP(1958) ! used 2 times + TMP_JAMP(2914) = TMP_JAMP(2351) + TMP_JAMP(1665) ! used 2 times + TMP_JAMP(2913) = TMP_JAMP(2310) + TMP_JAMP(2134) ! used 2 times + TMP_JAMP(2912) = TMP_JAMP(2073) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(1483) ! used 2 times + TMP_JAMP(3030) = TMP_JAMP(2935) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1044) ! used 2 times + TMP_JAMP(3029) = TMP_JAMP(2934) - TMP_JAMP(329) ! used 2 times + TMP_JAMP(3028) = TMP_JAMP(2926) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(451) ! used 2 times + TMP_JAMP(3027) = TMP_JAMP(2907) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(586) ! used 2 times + TMP_JAMP(3026) = TMP_JAMP(2898) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1238) ! used 2 times + TMP_JAMP(3025) = TMP_JAMP(2894) - TMP_JAMP(1130) ! used 2 times + TMP_JAMP(3024) = TMP_JAMP(2888) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(587) ! used 2 times + TMP_JAMP(3023) = TMP_JAMP(2886) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1402) ! used 2 times + TMP_JAMP(3022) = TMP_JAMP(2885) - TMP_JAMP(1095) ! used 2 times + TMP_JAMP(3021) = TMP_JAMP(2862) + TMP_JAMP(580) ! used 2 times + TMP_JAMP(3020) = TMP_JAMP(2850) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1364) ! used 2 times + TMP_JAMP(3019) = TMP_JAMP(2849) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1411) ! used 2 times + TMP_JAMP(3018) = TMP_JAMP(2845) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1398) ! used 2 times + TMP_JAMP(3017) = TMP_JAMP(2834) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(582) ! used 2 times + TMP_JAMP(3016) = TMP_JAMP(2826) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1174) ! used 2 times + TMP_JAMP(3015) = TMP_JAMP(2812) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1360) ! used 2 times + TMP_JAMP(3014) = TMP_JAMP(2809) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1409) ! used 2 times + TMP_JAMP(3013) = TMP_JAMP(2807) + TMP_JAMP(1113) ! used 2 times + TMP_JAMP(3012) = TMP_JAMP(2785) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(588) ! used 2 times + TMP_JAMP(3011) = TMP_JAMP(2760) + TMP_JAMP(1329) ! used 2 times + TMP_JAMP(3010) = TMP_JAMP(2751) - TMP_JAMP(1131) ! used 2 times + TMP_JAMP(3009) = TMP_JAMP(2749) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1366) ! used 2 times + TMP_JAMP(3008) = TMP_JAMP(2734) + TMP_JAMP(593) ! used 2 times + TMP_JAMP(3007) = TMP_JAMP(2732) - TMP_JAMP(358) ! used 2 times + TMP_JAMP(3006) = TMP_JAMP(2728) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(590) ! used 2 times + TMP_JAMP(3005) = TMP_JAMP(2726) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(583) ! used 2 times + TMP_JAMP(3004) = TMP_JAMP(2719) + TMP_JAMP(592) ! used 2 times + TMP_JAMP(3003) = TMP_JAMP(2718) + TMP_JAMP(345) ! used 2 times + TMP_JAMP(3002) = TMP_JAMP(2711) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1193) ! used 2 times + TMP_JAMP(3001) = TMP_JAMP(2710) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1145) ! used 2 times + TMP_JAMP(3000) = TMP_JAMP(2708) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1400) ! used 2 times + TMP_JAMP(2999) = TMP_JAMP(2706) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1167) ! used 2 times + TMP_JAMP(2998) = TMP_JAMP(2704) + TMP_JAMP(1088) ! used 2 times + TMP_JAMP(2997) = TMP_JAMP(2702) + TMP_JAMP(1412) ! used 2 times + TMP_JAMP(2996) = TMP_JAMP(2701) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * TMP_JAMP(1390) ! used 2 times - TMP_JAMP(2681) = TMP_JAMP(2156) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1710) ! used 2 times - TMP_JAMP(2680) = TMP_JAMP(2151) + AMP(1702) ! used 2 times - TMP_JAMP(2679) = TMP_JAMP(2152) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2150) ! used 2 times - TMP_JAMP(2678) = TMP_JAMP(2145) - AMP(1703) ! used 2 times - TMP_JAMP(2677) = TMP_JAMP(2142) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2141) ! used 2 times - TMP_JAMP(2676) = TMP_JAMP(2130) + TMP_JAMP(2129) ! used 2 times - TMP_JAMP(2675) = TMP_JAMP(2121) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(333) ! used 2 times - TMP_JAMP(2674) = TMP_JAMP(2123) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2120) ! used 2 times - TMP_JAMP(2673) = TMP_JAMP(2112) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(650) ! used 2 times - TMP_JAMP(2672) = TMP_JAMP(2111) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2109) ! used 2 times - TMP_JAMP(2671) = TMP_JAMP(2107) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2106) ! used 2 times - TMP_JAMP(2670) = TMP_JAMP(2103) - AMP(982) ! used 2 times - TMP_JAMP(2669) = TMP_JAMP(2104) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2100) ! used 2 times - TMP_JAMP(2668) = TMP_JAMP(2091) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2090) ! used 2 times - TMP_JAMP(2667) = TMP_JAMP(2086) + TMP_JAMP(2082) ! used 2 times - TMP_JAMP(2666) = TMP_JAMP(2087) - TMP_JAMP(2085) ! used 2 times - TMP_JAMP(2665) = TMP_JAMP(2081) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1530) ! used 2 times - TMP_JAMP(2664) = TMP_JAMP(2080) + TMP_JAMP(2076) ! used 2 times - TMP_JAMP(2663) = TMP_JAMP(2073) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(240) ! used 2 times - TMP_JAMP(2662) = TMP_JAMP(2068) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(170) ! used 2 times - TMP_JAMP(2661) = TMP_JAMP(2071) + TMP_JAMP(2066) ! used 2 times - TMP_JAMP(2660) = TMP_JAMP(2061) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(249) ! used 2 times - TMP_JAMP(2659) = TMP_JAMP(2063) - TMP_JAMP(2062) ! used 2 times - TMP_JAMP(2658) = TMP_JAMP(2065) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2064) ! used 2 times - TMP_JAMP(2657) = TMP_JAMP(2060) + TMP_JAMP(2059) ! used 2 times - TMP_JAMP(2656) = TMP_JAMP(2056) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(303) ! used 2 times - TMP_JAMP(2655) = TMP_JAMP(2050) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1774) ! used 2 times - TMP_JAMP(2654) = TMP_JAMP(2051) - AMP(298) ! used 2 times - TMP_JAMP(2653) = TMP_JAMP(2054) + TMP_JAMP(2052) ! used 2 times - TMP_JAMP(2652) = TMP_JAMP(2045) - AMP(299) ! used 2 times - TMP_JAMP(2651) = TMP_JAMP(2047) + TMP_JAMP(2046) ! used 2 times - TMP_JAMP(2650) = TMP_JAMP(2042) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2041) ! used 2 times - TMP_JAMP(2649) = TMP_JAMP(2043) - TMP_JAMP(2040) ! used 2 times - TMP_JAMP(2648) = TMP_JAMP(2031) + TMP_JAMP(2030) ! used 2 times - TMP_JAMP(2647) = TMP_JAMP(2029) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2028) ! used 2 times - TMP_JAMP(2646) = TMP_JAMP(2027) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2026) ! used 2 times - TMP_JAMP(2645) = TMP_JAMP(2017) - AMP(532) ! used 2 times - TMP_JAMP(2644) = TMP_JAMP(2013) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(307) ! used 2 times - TMP_JAMP(2643) = TMP_JAMP(1995) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(1994) ! used 2 times - TMP_JAMP(2642) = TMP_JAMP(1993) + TMP_JAMP(1992) ! used 2 times - TMP_JAMP(2768) = TMP_JAMP(2742) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(1890) ! used 2 times - TMP_JAMP(2767) = TMP_JAMP(2737) + TMP_JAMP(2575) ! used 2 times - TMP_JAMP(2766) = TMP_JAMP(2724) + AMP(1573) ! used 2 times - TMP_JAMP(2765) = TMP_JAMP(2720) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2719) ! used 2 times - TMP_JAMP(2764) = TMP_JAMP(2717) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2493) ! used 2 times - TMP_JAMP(2763) = TMP_JAMP(2716) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2714) ! used 2 times - TMP_JAMP(2762) = TMP_JAMP(2713) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2712) ! used 2 times - TMP_JAMP(2761) = TMP_JAMP(2704) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2703) ! used 2 times - TMP_JAMP(2760) = TMP_JAMP(2700) - TMP_JAMP(2284) ! used 2 times - TMP_JAMP(2759) = TMP_JAMP(2697) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(2252) ! used 2 times - TMP_JAMP(2758) = TMP_JAMP(2695) - TMP_JAMP(2241) ! used 2 times - TMP_JAMP(2757) = TMP_JAMP(2691) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(1565) ! used 2 times - TMP_JAMP(2756) = TMP_JAMP(2689) + TMP_JAMP(2210) ! used 2 times - TMP_JAMP(2755) = TMP_JAMP(2685) + TMP_JAMP(2178) ! used 2 times - TMP_JAMP(2754) = TMP_JAMP(2676) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(652) ! used 2 times - TMP_JAMP(2753) = TMP_JAMP(2672) + AMP(1005) ! used 2 times - TMP_JAMP(2752) = TMP_JAMP(2668) - TMP_JAMP(2089) ! used 2 times - TMP_JAMP(2751) = TMP_JAMP(2666) + TMP_JAMP(2083) ! used 2 times - TMP_JAMP(2750) = TMP_JAMP(2659) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(848) ! used 2 times - TMP_JAMP(2749) = TMP_JAMP(2657) - TMP_JAMP(2058) ! used 2 times - TMP_JAMP(2748) = TMP_JAMP(2655) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(2653) ! used 2 times - TMP_JAMP(2747) = TMP_JAMP(2649) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(231) ! used 2 times - TMP_JAMP(2746) = TMP_JAMP(2648) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(211) ! used 2 times - TMP_JAMP(2745) = TMP_JAMP(2646) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(173) ! used 2 times - JAMP(1,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(190)+(-1.000000000000000D+00)*AMP(251) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2008) - $ +TMP_JAMP(2642)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2643)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2665) - JAMP(2,1) = (-1.000000000000000D+00)*AMP(242) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(247)+( - $ -1.000000000000000D+00)*TMP_JAMP(841)+(-1.000000000000000D+00) - $ *TMP_JAMP(842)+TMP_JAMP(2000)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2011)+(-1.000000000000000D+00) - $ *TMP_JAMP(2642)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2658)+TMP_JAMP(2667) - JAMP(3,1) = (-1.000000000000000D+00)*AMP(250) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(268) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1504) - $ +(-1.000000000000000D+00)*TMP_JAMP(1997)+(-1.000000000000000D - $ +00)*TMP_JAMP(2088)+((0.000000000000000D+00,1.000000000000000D - $ +00))*TMP_JAMP(2643)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2647) - JAMP(4,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(101)+(-1.000000000000000D+00)*AMP(233)+( - $ -1.000000000000000D+00)*TMP_JAMP(935)+(-1.000000000000000D+00) - $ *TMP_JAMP(1996)+(-1.000000000000000D+00)*TMP_JAMP(1998) - $ +TMP_JAMP(2006)+TMP_JAMP(2075)+(-1.000000000000000D+00) - $ *TMP_JAMP(2093)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2746) - JAMP(5,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(112)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(226)+(-1.000000000000000D+00)*AMP(241)+( - $ -1.000000000000000D+00)*AMP(301)+(-1.000000000000000D+00) - $ *TMP_JAMP(1596)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1681)+(-1.000000000000000D+00)*TMP_JAMP(1999)+( - $ -1.000000000000000D+00)*TMP_JAMP(2001)+TMP_JAMP(2003) - $ +TMP_JAMP(2007)+TMP_JAMP(2012)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2021)+TMP_JAMP(2097) - $ +TMP_JAMP(2532) - JAMP(6,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(223)+(-1.000000000000000D+00)*AMP(232) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(238) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(259) - $ +AMP(1630)+(-1.000000000000000D+00)*TMP_JAMP(757) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1688) - $ +(-1.000000000000000D+00)*TMP_JAMP(2002)+TMP_JAMP(2004) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2005) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2473) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2651) - $ +(-1.000000000000000D+00)*TMP_JAMP(2669) - JAMP(7,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(210)+(-1.000000000000000D+00)*AMP(253) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1353) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2008) - $ +(-1.000000000000000D+00)*TMP_JAMP(2009)+(-1.000000000000000D - $ +00)*TMP_JAMP(2015)+((0.000000000000000D+00,1.000000000000000D - $ +00))*TMP_JAMP(2644)+((0.000000000000000D+00,1.000000000000000D - $ +00))*TMP_JAMP(2686) - JAMP(8,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(187)+(-1.000000000000000D+00)*AMP(244)+TMP_JAMP(773) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(775) - $ +(-1.000000000000000D+00)*TMP_JAMP(1347)+(-1.000000000000000D - $ +00)*TMP_JAMP(1350)+((0.000000000000000D+00,-1.000000000000000D - $ +00))*TMP_JAMP(2010)+(-1.000000000000000D+00)*TMP_JAMP(2012) - $ +TMP_JAMP(2019)+TMP_JAMP(2084)+TMP_JAMP(2199)+TMP_JAMP(2543) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2644) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2656) - JAMP(9,1) = (-1.000000000000000D+00)*AMP(252)+( - $ -1.000000000000000D+00)*AMP(530)+AMP(1699)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1545)+TMP_JAMP(1552)+( - $ -1.000000000000000D+00)*TMP_JAMP(2014)+(-1.000000000000000D+00) - $ *TMP_JAMP(2016)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2038)+(-1.000000000000000D+00)*TMP_JAMP(2645) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2687) - JAMP(10,1) = (-1.000000000000000D+00)*AMP(161)+( - $ -1.000000000000000D+00)*TMP_JAMP(979)+TMP_JAMP(2204) - $ +TMP_JAMP(2645)+(-1.000000000000000D+00)*TMP_JAMP(2745) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2747) - JAMP(11,1) = (-1.000000000000000D+00)*AMP(243) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(606)+( - $ -1.000000000000000D+00)*TMP_JAMP(592)+(-1.000000000000000D+00) - $ *TMP_JAMP(827)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1941)+(-1.000000000000000D+00)*TMP_JAMP(2018) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2020) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2022) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2023) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2025) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2069) - $ +TMP_JAMP(2207)+TMP_JAMP(2660) + TMP_JAMP(2995) = TMP_JAMP(2700) - TMP_JAMP(1092) ! used 2 times + TMP_JAMP(2994) = TMP_JAMP(2668) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(284) ! used 2 times + TMP_JAMP(2993) = TMP_JAMP(2663) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1237) ! used 2 times + TMP_JAMP(2992) = TMP_JAMP(2626) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(591) ! used 2 times + TMP_JAMP(2991) = TMP_JAMP(2571) + TMP_JAMP(572) ! used 2 times + TMP_JAMP(2990) = TMP_JAMP(2568) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(581) ! used 2 times + TMP_JAMP(2989) = TMP_JAMP(2540) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1407) ! used 2 times + TMP_JAMP(2988) = TMP_JAMP(2534) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1341) ! used 2 times + TMP_JAMP(2987) = TMP_JAMP(2484) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1194) ! used 2 times + TMP_JAMP(2986) = TMP_JAMP(2435) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(585) ! used 2 times + TMP_JAMP(2985) = TMP_JAMP(2434) + TMP_JAMP(536) ! used 2 times + TMP_JAMP(2984) = TMP_JAMP(2420) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1403) ! used 2 times + TMP_JAMP(2983) = TMP_JAMP(2151) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(574) ! used 2 times + TMP_JAMP(2982) = TMP_JAMP(2150) - TMP_JAMP(423) ! used 2 times + TMP_JAMP(2981) = TMP_JAMP(2147) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(549) ! used 2 times + TMP_JAMP(2980) = TMP_JAMP(2132) + TMP_JAMP(376) ! used 2 times + TMP_JAMP(2979) = TMP_JAMP(2115) + TMP_JAMP(264) ! used 2 times + TMP_JAMP(2978) = TMP_JAMP(2114) - TMP_JAMP(263) ! used 2 times + TMP_JAMP(2977) = TMP_JAMP(2111) - TMP_JAMP(1197) ! used 2 times + TMP_JAMP(2976) = TMP_JAMP(2110) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1026) ! used 2 times + TMP_JAMP(2975) = TMP_JAMP(2107) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(413) ! used 2 times + TMP_JAMP(2974) = TMP_JAMP(2098) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(492) ! used 2 times + TMP_JAMP(2973) = TMP_JAMP(2080) - TMP_JAMP(1406) ! used 2 times + TMP_JAMP(2972) = TMP_JAMP(2079) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1395) ! used 2 times + TMP_JAMP(2971) = TMP_JAMP(2074) - TMP_JAMP(377) ! used 2 times + TMP_JAMP(2970) = TMP_JAMP(2056) + TMP_JAMP(530) ! used 2 times + TMP_JAMP(2969) = TMP_JAMP(2045) - TMP_JAMP(554) ! used 2 times + TMP_JAMP(2968) = TMP_JAMP(2034) + TMP_JAMP(552) ! used 2 times + TMP_JAMP(2967) = TMP_JAMP(1999) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(420) ! used 2 times + TMP_JAMP(2966) = TMP_JAMP(1997) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(425) ! used 2 times + TMP_JAMP(2965) = TMP_JAMP(1995) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1351) ! used 2 times + TMP_JAMP(2964) = TMP_JAMP(1984) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(415) ! used 2 times + TMP_JAMP(2963) = TMP_JAMP(1957) + TMP_JAMP(545) ! used 2 times + TMP_JAMP(2962) = TMP_JAMP(1940) - TMP_JAMP(374) ! used 2 times + TMP_JAMP(2961) = TMP_JAMP(1934) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(363) ! used 2 times + TMP_JAMP(2960) = TMP_JAMP(1918) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(577) ! used 2 times + TMP_JAMP(2959) = TMP_JAMP(1912) - TMP_JAMP(1416) ! used 2 times + TMP_JAMP(2958) = TMP_JAMP(1897) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1408) ! used 2 times + TMP_JAMP(2957) = TMP_JAMP(1878) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(928) ! used 2 times + TMP_JAMP(2956) = TMP_JAMP(1864) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1026) ! used 2 times + TMP_JAMP(2955) = TMP_JAMP(1854) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(396) ! used 2 times + TMP_JAMP(2954) = TMP_JAMP(1843) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(1417) ! used 2 times + TMP_JAMP(2953) = TMP_JAMP(1810) - TMP_JAMP(356) ! used 2 times + TMP_JAMP(2952) = TMP_JAMP(1803) - TMP_JAMP(1381) ! used 2 times + TMP_JAMP(2951) = TMP_JAMP(1800) - TMP_JAMP(409) ! used 2 times + TMP_JAMP(2950) = TMP_JAMP(1759) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1410) ! used 2 times + TMP_JAMP(2949) = TMP_JAMP(1757) - TMP_JAMP(372) ! used 2 times + TMP_JAMP(2948) = TMP_JAMP(1753) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(378) ! used 2 times + TMP_JAMP(2947) = TMP_JAMP(1714) + TMP_JAMP(401) ! used 2 times + TMP_JAMP(2946) = TMP_JAMP(1682) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(544) ! used 2 times + TMP_JAMP(2945) = TMP_JAMP(1610) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(578) ! used 2 times + TMP_JAMP(2944) = TMP_JAMP(1586) + TMP_JAMP(1389) ! used 2 times + TMP_JAMP(2943) = TMP_JAMP(1584) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(1320) ! used 2 times + TMP_JAMP(2942) = TMP_JAMP(1575) - TMP_JAMP(1414) ! used 2 times + JAMP(1,1) = (-1.000000000000000D+00)*AMP(251) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(289) + $ +TMP_JAMP(360)+TMP_JAMP(485)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(558)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(576)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*AMP(1489)+(-1.000000000000000D+00) + $ *TMP_JAMP(2911)+(-1.000000000000000D+00)*TMP_JAMP(2916)+( + $ -1.000000000000000D+00)*TMP_JAMP(2971)+TMP_JAMP(2994) + JAMP(2,1) = (-1.000000000000000D+00)*AMP(242)+( + $ -1.000000000000000D+00)*TMP_JAMP(359)+TMP_JAMP(388) + $ +TMP_JAMP(483)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(498)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(557)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(576)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1580)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *AMP(1480)+TMP_JAMP(2655)+(-1.000000000000000D+00) + $ *TMP_JAMP(2913)+(-1.000000000000000D+00)*TMP_JAMP(2940) + JAMP(3,1) = (-1.000000000000000D+00)*AMP(250)+( + $ -1.000000000000000D+00)*TMP_JAMP(484)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(495)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(558)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(575)+(-1.000000000000000D+00) + $ *TMP_JAMP(2590)+(-1.000000000000000D+00)*TMP_JAMP(2797)+( + $ -1.000000000000000D+00)*TMP_JAMP(2829)+(-1.000000000000000D+00) + $ *TMP_JAMP(2915)+TMP_JAMP(2953)+TMP_JAMP(2980) + JAMP(4,1) = (-1.000000000000000D+00)*AMP(233)+( + $ -1.000000000000000D+00)*TMP_JAMP(259)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(470)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(497)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(575)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1589)+TMP_JAMP(1693) + $ +TMP_JAMP(2050)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *AMP(1471)+(-1.000000000000000D+00)*TMP_JAMP(2353) + $ +TMP_JAMP(2659)+TMP_JAMP(2905)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2955)+TMP_JAMP(2960) + JAMP(5,1) = (-1.000000000000000D+00)*AMP(241) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(271) + $ +TMP_JAMP(386)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(515)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(557)+(-1.000000000000000D+00)*TMP_JAMP(1526)+( + $ -1.000000000000000D+00)*TMP_JAMP(1825)+TMP_JAMP(2268)+( + $ -1.000000000000000D+00)*TMP_JAMP(2308)+TMP_JAMP(2430)+( + $ -1.000000000000000D+00)*TMP_JAMP(2446)+(-1.000000000000000D+00) + $ *TMP_JAMP(2654)+(-1.000000000000000D+00)*TMP_JAMP(2963) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2978) + $ +(-1.000000000000000D+00)*TMP_JAMP(2985) + JAMP(6,1) = (-1.000000000000000D+00)*AMP(232) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(287) + $ +TMP_JAMP(387)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(523)+(-1.000000000000000D+00)*TMP_JAMP(2440)+( + $ -1.000000000000000D+00)*TMP_JAMP(2743)+(-1.000000000000000D+00) + $ *TMP_JAMP(2914)+(-1.000000000000000D+00)*TMP_JAMP(2960) + $ +TMP_JAMP(2963)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2979)+(-1.000000000000000D+00)*TMP_JAMP(3007) + JAMP(7,1) = (-1.000000000000000D+00)*AMP(253)+( + $ -1.000000000000000D+00)*TMP_JAMP(147)+TMP_JAMP(373) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(573) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1393) + $ +(-1.000000000000000D+00)*TMP_JAMP(1592)+((0.000000000000000D + $ +00,1.000000000000000D+00))*TMP_JAMP(1987)+(-1.000000000000000D + $ +00)*TMP_JAMP(2627)+TMP_JAMP(2636)+TMP_JAMP(2844)+( + $ -1.000000000000000D+00)*TMP_JAMP(2855)+TMP_JAMP(2971)+( + $ -1.000000000000000D+00)*TMP_JAMP(2974) + JAMP(8,1) = (-1.000000000000000D+00)*AMP(244) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(117) + $ +(-1.000000000000000D+00)*TMP_JAMP(388)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(487)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(573)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1405)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1777)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1850)+TMP_JAMP(2513)+( + $ -1.000000000000000D+00)*TMP_JAMP(2759)+TMP_JAMP(2854) + $ +TMP_JAMP(2924)+(-1.000000000000000D+00)*TMP_JAMP(2949) + JAMP(9,1) = (-1.000000000000000D+00)*AMP(252) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(272) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(283) + $ +(-1.000000000000000D+00)*TMP_JAMP(371)+(-1.000000000000000D+00) + $ *TMP_JAMP(373)+(-1.000000000000000D+00)*TMP_JAMP(379) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(490) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1397) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1752) + $ +(-1.000000000000000D+00)*TMP_JAMP(2055)+TMP_JAMP(2099)+( + $ -1.000000000000000D+00)*TMP_JAMP(2641)+TMP_JAMP(2661)+( + $ -1.000000000000000D+00)*TMP_JAMP(2667)+TMP_JAMP(2674) + $ +TMP_JAMP(2747) + JAMP(10,1) = (-1.000000000000000D+00)*AMP(161) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(274) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(289) + $ +TMP_JAMP(371)+(-1.000000000000000D+00)*TMP_JAMP(546) + $ +TMP_JAMP(551)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1247)+(-1.000000000000000D+00)*TMP_JAMP(1385)+( + $ -1.000000000000000D+00)*TMP_JAMP(1621)+(-1.000000000000000D+00) + $ *TMP_JAMP(1702)+TMP_JAMP(1837)+TMP_JAMP(1974) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2139) + $ +TMP_JAMP(2677)+(-1.000000000000000D+00)*TMP_JAMP(2896) + JAMP(11,1) = AMP(213)+(-1.000000000000000D+00)*AMP(243) + $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(249) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(269) + $ +(-1.000000000000000D+00)*TMP_JAMP(391)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(488)+(-1.000000000000000D+00) + $ *TMP_JAMP(1415)+TMP_JAMP(1486)+(-1.000000000000000D+00) + $ *TMP_JAMP(1642)+TMP_JAMP(1816)+(-1.000000000000000D+00) + $ *TMP_JAMP(2276)+(-1.000000000000000D+00)*TMP_JAMP(2673)+( + $ -1.000000000000000D+00)*TMP_JAMP(2764)+TMP_JAMP(2775)+( + $ -1.000000000000000D+00)*TMP_JAMP(2923)+TMP_JAMP(2949) + $ +TMP_JAMP(2962) JAMP(12,1) = (-1.000000000000000D+00)*AMP(160) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(201) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(496) - $ +TMP_JAMP(663)+TMP_JAMP(824)+TMP_JAMP(828)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1151)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(1220) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1223) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2024) - $ +TMP_JAMP(2571)+TMP_JAMP(2662)+TMP_JAMP(2745) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(497) + $ +TMP_JAMP(546)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1057)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1375)+TMP_JAMP(1959)+(-1.000000000000000D+00) + $ *TMP_JAMP(2057)+TMP_JAMP(2594)+(-1.000000000000000D+00) + $ *TMP_JAMP(2900)+(-1.000000000000000D+00)*TMP_JAMP(2962) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2981) JAMP(13,1) = (-1.000000000000000D+00)*AMP(255) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(775) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2032) - $ +(-1.000000000000000D+00)*TMP_JAMP(2034)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2036) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2039) - $ +(-1.000000000000000D+00)*TMP_JAMP(2126)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2647)+(-1.000000000000000D - $ +00)*TMP_JAMP(2654) - JAMP(14,1) = (-1.000000000000000D+00)*AMP(235)+AMP(311) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(766) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1207) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2032) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2048) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2319) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2554) - $ +TMP_JAMP(2650)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2746) - JAMP(15,1) = (-1.000000000000000D+00)*AMP(254)+AMP(300) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(774) - $ +TMP_JAMP(2033)+(-1.000000000000000D+00)*TMP_JAMP(2035) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2037) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2038) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2044) - $ +(-1.000000000000000D+00)*TMP_JAMP(2652)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2696) - JAMP(16,1) = (-1.000000000000000D+00)*AMP(163)+AMP(176) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(656) - $ +TMP_JAMP(867)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1151)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1222)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2044)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2053)+TMP_JAMP(2332)+TMP_JAMP(2650) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2747) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(277) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(491) + $ +TMP_JAMP(548)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1396)+(-1.000000000000000D+00)*TMP_JAMP(1678)+( + $ -1.000000000000000D+00)*TMP_JAMP(1933)+TMP_JAMP(2636) + $ +TMP_JAMP(2788)+(-1.000000000000000D+00)*TMP_JAMP(2904) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2948) + $ +(-1.000000000000000D+00)*TMP_JAMP(2980) + JAMP(14,1) = (-1.000000000000000D+00)*AMP(235) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(118) + $ +(-1.000000000000000D+00)*TMP_JAMP(154)+TMP_JAMP(382) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(488) + $ +(-1.000000000000000D+00)*TMP_JAMP(548)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1785)+TMP_JAMP(2588) + $ +TMP_JAMP(2790)+(-1.000000000000000D+00)*TMP_JAMP(2833) + $ +TMP_JAMP(2925)+(-1.000000000000000D+00)*TMP_JAMP(2942) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2955) + JAMP(15,1) = (-1.000000000000000D+00)*AMP(254)+( + $ -1.000000000000000D+00)*TMP_JAMP(151)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(265)+TMP_JAMP(380) + $ +TMP_JAMP(1383)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1419)+TMP_JAMP(2055)+TMP_JAMP(2738)+( + $ -1.000000000000000D+00)*TMP_JAMP(2881)+(-1.000000000000000D+00) + $ *TMP_JAMP(2921)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2948)+TMP_JAMP(2994) + JAMP(16,1) = (-1.000000000000000D+00)*AMP(163) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(266) + $ +(-1.000000000000000D+00)*TMP_JAMP(385)+(-1.000000000000000D+00) + $ *TMP_JAMP(400)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(496)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1232)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1419)+(-1.000000000000000D+00)*TMP_JAMP(1712) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2139) + $ +TMP_JAMP(2606)+(-1.000000000000000D+00)*TMP_JAMP(2745) + $ +TMP_JAMP(2927)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(2943) JAMP(17,1) = (-1.000000000000000D+00)*AMP(234) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1945) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2048) - $ +TMP_JAMP(2338)+(-1.000000000000000D+00)*TMP_JAMP(2342) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2651) - $ +(-1.000000000000000D+00)*TMP_JAMP(2652)+TMP_JAMP(2663)+( - $ -1.000000000000000D+00)*TMP_JAMP(2748) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(279) + $ +(-1.000000000000000D+00)*TMP_JAMP(382)+(-1.000000000000000D+00) + $ *TMP_JAMP(383)+(-1.000000000000000D+00)*TMP_JAMP(398) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(489) + $ +TMP_JAMP(667)+(-1.000000000000000D+00)*TMP_JAMP(1520) + $ +TMP_JAMP(1639)+(-1.000000000000000D+00)*TMP_JAMP(1665) + $ +TMP_JAMP(1817)+(-1.000000000000000D+00)*TMP_JAMP(2280) + $ +TMP_JAMP(2551)+(-1.000000000000000D+00)*TMP_JAMP(2672)+( + $ -1.000000000000000D+00)*TMP_JAMP(2810)+TMP_JAMP(2972)+( + $ -1.000000000000000D+00)*TMP_JAMP(3029) JAMP(18,1) = (-1.000000000000000D+00)*AMP(162) $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(174) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(655) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1198) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2049) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2053) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2070) - $ +TMP_JAMP(2077)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2344)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2612)+(-1.000000000000000D+00)*TMP_JAMP(2654) - $ +TMP_JAMP(2748) - JAMP(19,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(226)+(-1.000000000000000D+00)*AMP(246) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(934) - $ +TMP_JAMP(611)+TMP_JAMP(737)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2055)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2656)+(-1.000000000000000D+00) - $ *TMP_JAMP(2682)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2749)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2750) - JAMP(20,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(223)+(-1.000000000000000D+00)*AMP(237)+AMP(866) - $ +TMP_JAMP(717)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1206)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1230)+TMP_JAMP(1232)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1930)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2057)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2074)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2160)+TMP_JAMP(2503) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2749) - JAMP(21,1) = (-1.000000000000000D+00)*AMP(245) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(933)+( - $ -1.000000000000000D+00)*TMP_JAMP(723)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1219)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1223)+TMP_JAMP(1658) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1938) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2658) - $ +(-1.000000000000000D+00)*TMP_JAMP(2660)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2661)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2750) - JAMP(22,1) = (-1.000000000000000D+00)*AMP(165) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(815) - $ +AMP(830)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1217)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1218)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1932)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2067)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2069)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2070)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2078)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2283)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2661)+(-1.000000000000000D+00)*TMP_JAMP(2662) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(282) + $ +TMP_JAMP(383)+TMP_JAMP(385)+(-1.000000000000000D+00) + $ *TMP_JAMP(402)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(498)+(-1.000000000000000D+00)*TMP_JAMP(1640) + $ +TMP_JAMP(1708)+TMP_JAMP(1962)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2120)+TMP_JAMP(2515) + $ +TMP_JAMP(2561)+(-1.000000000000000D+00)*TMP_JAMP(2823)+( + $ -1.000000000000000D+00)*TMP_JAMP(2958) + JAMP(19,1) = (-1.000000000000000D+00)*AMP(246) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(276) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(327) + $ +(-1.000000000000000D+00)*TMP_JAMP(389)+TMP_JAMP(404) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1399) + $ +(-1.000000000000000D+00)*TMP_JAMP(1638)+TMP_JAMP(1809) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2005) + $ +(-1.000000000000000D+00)*TMP_JAMP(2439)+TMP_JAMP(2513)+( + $ -1.000000000000000D+00)*TMP_JAMP(2717)+TMP_JAMP(2873)+( + $ -1.000000000000000D+00)*TMP_JAMP(2946)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2978) + JAMP(20,1) = (-1.000000000000000D+00)*AMP(237) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(273) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(328) + $ +TMP_JAMP(395)+(-1.000000000000000D+00)*TMP_JAMP(397) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1401) + $ +(-1.000000000000000D+00)*TMP_JAMP(1508)+(-1.000000000000000D + $ +00)*TMP_JAMP(1660)+((0.000000000000000D+00,1.000000000000000D + $ +00))*TMP_JAMP(1784)+TMP_JAMP(1803)+(-1.000000000000000D+00) + $ *TMP_JAMP(2451)+TMP_JAMP(2588)+TMP_JAMP(2723)+TMP_JAMP(2869) + $ +TMP_JAMP(2946)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(2979) + JAMP(21,1) = (-1.000000000000000D+00)*AMP(245)+( + $ -1.000000000000000D+00)*TMP_JAMP(163)+TMP_JAMP(390) + $ +TMP_JAMP(392)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(493)+(-1.000000000000000D+00)*TMP_JAMP(550) + $ +TMP_JAMP(759)+(-1.000000000000000D+00)*TMP_JAMP(1376) + $ +TMP_JAMP(1636)+TMP_JAMP(1643)+TMP_JAMP(1659)+( + $ -1.000000000000000D+00)*TMP_JAMP(1808)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2005)+(-1.000000000000000D+00) + $ *TMP_JAMP(2307)+TMP_JAMP(2485)+(-1.000000000000000D+00) + $ *TMP_JAMP(2703)+(-1.000000000000000D+00)*TMP_JAMP(2872) + $ +TMP_JAMP(2923) + JAMP(22,1) = (-1.000000000000000D+00)*AMP(165)+( + $ -1.000000000000000D+00)*TMP_JAMP(164)+TMP_JAMP(394) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(495) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1569) + $ +TMP_JAMP(2495)+(-1.000000000000000D+00)*TMP_JAMP(2769) + $ +TMP_JAMP(2919)+(-1.000000000000000D+00)*TMP_JAMP(2947) + $ +TMP_JAMP(2952)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2981) JAMP(23,1) = (-1.000000000000000D+00)*AMP(236) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1225) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1229) - $ +TMP_JAMP(1233)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1241)+TMP_JAMP(1668)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1940)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2072)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2074)+TMP_JAMP(2075)+( - $ -1.000000000000000D+00)*TMP_JAMP(2663)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2664)+TMP_JAMP(2723) - JAMP(24,1) = (-1.000000000000000D+00)*AMP(164)+TMP_JAMP(737) - $ +TMP_JAMP(739)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(743)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1235)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1237)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1239)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1242)+TMP_JAMP(1245)+TMP_JAMP(1246)+TMP_JAMP(1248)+( - $ -1.000000000000000D+00)*TMP_JAMP(2077)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2078)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2079)+TMP_JAMP(2523)+( - $ -1.000000000000000D+00)*TMP_JAMP(2528)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2664) - JAMP(25,1) = (-1.000000000000000D+00)*AMP(974) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2665) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2671) - $ +TMP_JAMP(2751)+(-1.000000000000000D+00)*TMP_JAMP(2752) - JAMP(26,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(487)+(-1.000000000000000D+00)*AMP(965)+( - $ -1.000000000000000D+00)*AMP(1010)+TMP_JAMP(812)+TMP_JAMP(815) - $ +TMP_JAMP(1256)+TMP_JAMP(1258)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1303)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1305)+(-1.000000000000000D+00) - $ *TMP_JAMP(2084)+(-1.000000000000000D+00)*TMP_JAMP(2099) - $ +TMP_JAMP(2167)+(-1.000000000000000D+00)*TMP_JAMP(2667)+( - $ -1.000000000000000D+00)*TMP_JAMP(2751) - JAMP(27,1) = (-1.000000000000000D+00)*AMP(973)+( - $ -1.000000000000000D+00)*TMP_JAMP(1254)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1476)+TMP_JAMP(2088)+( - $ -1.000000000000000D+00)*TMP_JAMP(2092)+TMP_JAMP(2125) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2128) - $ +TMP_JAMP(2752) - JAMP(28,1) = AMP(142)+(-1.000000000000000D+00)*AMP(956) - $ +TMP_JAMP(901)+TMP_JAMP(1253)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1320)+TMP_JAMP(1329) - $ +TMP_JAMP(2092)+TMP_JAMP(2093)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2094)+(-1.000000000000000D+00) - $ *TMP_JAMP(2102)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2754) - JAMP(29,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(808)+(-1.000000000000000D+00)*AMP(964)+AMP(1637)+( - $ -1.000000000000000D+00)*AMP(1708)+(-1.000000000000000D+00) - $ *TMP_JAMP(698)+(-1.000000000000000D+00)*TMP_JAMP(1255) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1283) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1307) - $ +TMP_JAMP(1590)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1648)+(-1.000000000000000D+00)*TMP_JAMP(2095)+( - $ -1.000000000000000D+00)*TMP_JAMP(2096)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2098)+TMP_JAMP(2099) - $ +TMP_JAMP(2110)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2670) - JAMP(30,1) = AMP(136)+(-1.000000000000000D+00)*AMP(955)+( - $ -1.000000000000000D+00)*AMP(1762)+TMP_JAMP(702)+TMP_JAMP(704) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(706) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(764) - $ +TMP_JAMP(1260)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1322)+TMP_JAMP(2101)+TMP_JAMP(2105)+TMP_JAMP(2146)+( - $ -1.000000000000000D+00)*TMP_JAMP(2161)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2458)+TMP_JAMP(2669) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2670) - JAMP(31,1) = (-1.000000000000000D+00)*AMP(977) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1142) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1387) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1936) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2671) - $ +(-1.000000000000000D+00)*TMP_JAMP(2673)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2753) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(280) + $ +(-1.000000000000000D+00)*TMP_JAMP(395)+TMP_JAMP(399)+( + $ -1.000000000000000D+00)*TMP_JAMP(405)+(-1.000000000000000D+00) + $ *TMP_JAMP(1808)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2010)+(-1.000000000000000D+00)*TMP_JAMP(2348) + $ +TMP_JAMP(2544)+(-1.000000000000000D+00)*TMP_JAMP(2871) + $ +TMP_JAMP(2974)+(-1.000000000000000D+00)*TMP_JAMP(2984) + $ +TMP_JAMP(3029) + JAMP(24,1) = (-1.000000000000000D+00)*AMP(164) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(128) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(281) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(286) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(330) + $ +TMP_JAMP(403)+TMP_JAMP(406)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1404)+TMP_JAMP(1605)+( + $ -1.000000000000000D+00)*TMP_JAMP(1804)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2120)+TMP_JAMP(2555)+( + $ -1.000000000000000D+00)*TMP_JAMP(2815)+TMP_JAMP(2920) + $ +TMP_JAMP(2947) + JAMP(25,1) = (-1.000000000000000D+00)*TMP_JAMP(360) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(454) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(517) + $ +(-1.000000000000000D+00)*AMP(976)+(-1.000000000000000D+00) + $ *TMP_JAMP(1843)+TMP_JAMP(1859)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2085)+TMP_JAMP(2104)+( + $ -1.000000000000000D+00)*TMP_JAMP(2662)+TMP_JAMP(2851) + $ +TMP_JAMP(2865)+TMP_JAMP(3018) + JAMP(26,1) = TMP_JAMP(359)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(463)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(518)+(-1.000000000000000D+00) + $ *TMP_JAMP(834)+(-1.000000000000000D+00)*TMP_JAMP(1019) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1374) + $ +(-1.000000000000000D+00)*AMP(967)+(-1.000000000000000D+00) + $ *TMP_JAMP(1479)+TMP_JAMP(1842)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2085)+(-1.000000000000000D+00) + $ *TMP_JAMP(2129)+(-1.000000000000000D+00)*TMP_JAMP(2648) + $ +TMP_JAMP(2758)+TMP_JAMP(2778)+(-1.000000000000000D+00) + $ *TMP_JAMP(2859) + JAMP(27,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(453)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(513)+(-1.000000000000000D+00)*TMP_JAMP(809)+( + $ -1.000000000000000D+00)*TMP_JAMP(1028)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1373)+(-1.000000000000000D+00) + $ *AMP(975)+(-1.000000000000000D+00)*TMP_JAMP(1963)+TMP_JAMP(2060) + $ +(-1.000000000000000D+00)*TMP_JAMP(2104)+TMP_JAMP(2317) + $ +TMP_JAMP(2387)+TMP_JAMP(2567)+(-1.000000000000000D+00) + $ *TMP_JAMP(2604)+TMP_JAMP(2796)+TMP_JAMP(2811)+( + $ -1.000000000000000D+00)*TMP_JAMP(2953) + JAMP(28,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(316)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(470)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(514)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(735)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1392)+(-1.000000000000000D+00)*AMP(958)+TMP_JAMP(1448) + $ +(-1.000000000000000D+00)*TMP_JAMP(1839)+((0.000000000000000D + $ +00,1.000000000000000D+00))*TMP_JAMP(1846)+(-1.000000000000000D + $ +00)*TMP_JAMP(1919)+TMP_JAMP(1963)+(-1.000000000000000D+00) + $ *TMP_JAMP(1967)+(-1.000000000000000D+00)*TMP_JAMP(2657)+( + $ -1.000000000000000D+00)*TMP_JAMP(2789)+TMP_JAMP(2824) + $ +TMP_JAMP(2835) + JAMP(29,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(314)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(462)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(717)+(-1.000000000000000D+00)*AMP(966)+TMP_JAMP(1709) + $ +(-1.000000000000000D+00)*TMP_JAMP(1874)+TMP_JAMP(2061) + $ +TMP_JAMP(2129)+AMP(1642)+TMP_JAMP(2445)+(-1.000000000000000D + $ +00)*TMP_JAMP(2493)+TMP_JAMP(2647)+TMP_JAMP(2985)+TMP_JAMP(2996) + JAMP(30,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(320)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(520)+(-1.000000000000000D+00)*AMP(957)+( + $ -1.000000000000000D+00)*TMP_JAMP(1840)+TMP_JAMP(1874) + $ +TMP_JAMP(1919)+TMP_JAMP(1966)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2064)+TMP_JAMP(2250)+( + $ -1.000000000000000D+00)*TMP_JAMP(2553)+TMP_JAMP(2656) + $ +TMP_JAMP(3000)+TMP_JAMP(3007) + JAMP(31,1) = TMP_JAMP(804)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1391)+(-1.000000000000000D+00) + $ *AMP(979)+TMP_JAMP(1857)+TMP_JAMP(1894)+TMP_JAMP(2130) + $ +TMP_JAMP(2609)+(-1.000000000000000D+00)*TMP_JAMP(2816) + $ +TMP_JAMP(2825)+(-1.000000000000000D+00)*TMP_JAMP(2863)+( + $ -1.000000000000000D+00)*TMP_JAMP(3018) JAMP(32,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(487)+(-1.000000000000000D+00)*AMP(968)+( - $ -1.000000000000000D+00)*TMP_JAMP(709)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1394)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2108)+(-1.000000000000000D - $ +00)*TMP_JAMP(2110)+TMP_JAMP(2118)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2198)+TMP_JAMP(2223) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2681) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2753) - JAMP(33,1) = (-1.000000000000000D+00)*AMP(690)+( - $ -1.000000000000000D+00)*AMP(975)+(-1.000000000000000D+00) - $ *AMP(1654)+(-1.000000000000000D+00)*TMP_JAMP(2114) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2116) - $ +TMP_JAMP(2133)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2137)+TMP_JAMP(2673)+TMP_JAMP(2692) - JAMP(34,1) = (-1.000000000000000D+00)*AMP(323) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(327)+( - $ -1.000000000000000D+00)*AMP(834)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2113)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2115)+(-1.000000000000000D - $ +00)*TMP_JAMP(2140)+(-1.000000000000000D+00)*TMP_JAMP(2229)+( - $ -1.000000000000000D+00)*TMP_JAMP(2675) - JAMP(35,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(809)+(-1.000000000000000D+00)*AMP(966)+TMP_JAMP(1524) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1938) - $ +(-1.000000000000000D+00)*TMP_JAMP(2117)+TMP_JAMP(2119) - $ +TMP_JAMP(2234)+(-1.000000000000000D+00)*TMP_JAMP(2238)+( - $ -1.000000000000000D+00)*TMP_JAMP(2674)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2683) - JAMP(36,1) = (-1.000000000000000D+00)*AMP(321) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(330) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(342)+( - $ -1.000000000000000D+00)*TMP_JAMP(856)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2122)+(-1.000000000000000D+00) - $ *TMP_JAMP(2173)+TMP_JAMP(2586)+TMP_JAMP(2674)+TMP_JAMP(2675) - JAMP(37,1) = (-1.000000000000000D+00)*AMP(978) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1220)+( - $ -1.000000000000000D+00)*AMP(1704)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1385)+(-1.000000000000000D+00) - $ *TMP_JAMP(2124)+(-1.000000000000000D+00)*TMP_JAMP(2127) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2128) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2131) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2135) - $ +TMP_JAMP(2372)+TMP_JAMP(2680) - JAMP(38,1) = (-1.000000000000000D+00)*AMP(959)+AMP(1763) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1297) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2131) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2147) - $ +TMP_JAMP(2357)+(-1.000000000000000D+00)*TMP_JAMP(2366) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2516) - $ +TMP_JAMP(2677)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2754) - JAMP(39,1) = (-1.000000000000000D+00)*AMP(976) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1515) - $ +(-1.000000000000000D+00)*TMP_JAMP(2132)+TMP_JAMP(2134) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2136) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2138) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2139) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2144) - $ +(-1.000000000000000D+00)*TMP_JAMP(2355)+TMP_JAMP(2370)+( - $ -1.000000000000000D+00)*TMP_JAMP(2678) - JAMP(40,1) = (-1.000000000000000D+00)*AMP(324)+TMP_JAMP(2140) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2143) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2144) - $ +TMP_JAMP(2149)+(-1.000000000000000D+00)*TMP_JAMP(2378) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2381) - $ +TMP_JAMP(2677) - JAMP(41,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(631)+(-1.000000000000000D+00)*AMP(957)+TMP_JAMP(963) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1940) - $ +TMP_JAMP(2146)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2147)+TMP_JAMP(2387)+TMP_JAMP(2392)+( - $ -1.000000000000000D+00)*TMP_JAMP(2678)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2679)+TMP_JAMP(2755) - JAMP(42,1) = (-1.000000000000000D+00)*AMP(319) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(360)+( - $ -1.000000000000000D+00)*AMP(468)+(-1.000000000000000D+00) - $ *TMP_JAMP(958)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1795)+(-1.000000000000000D+00)*TMP_JAMP(2148) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2153) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2189) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2394) - $ +TMP_JAMP(2630)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2679)+TMP_JAMP(2680) - JAMP(43,1) = AMP(549)+(-1.000000000000000D+00)*AMP(969) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1298) - $ +AMP(1307)+TMP_JAMP(801)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1333)+TMP_JAMP(1341) - $ +TMP_JAMP(1582)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2154)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2157)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2158)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2163)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2166)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2681)+(-1.000000000000000D+00)*TMP_JAMP(2682) - JAMP(44,1) = AMP(708)+(-1.000000000000000D+00)*AMP(960) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1289) - $ +TMP_JAMP(610)+(-1.000000000000000D+00)*TMP_JAMP(780) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1296) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1325) - $ +TMP_JAMP(1327)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1939)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2158)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2159)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2160)+TMP_JAMP(2161)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2162)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2164)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2179) - JAMP(45,1) = (-1.000000000000000D+00)*AMP(967)+( - $ -1.000000000000000D+00)*TMP_JAMP(579)+(-1.000000000000000D+00) - $ *TMP_JAMP(787)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1308)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1314)+TMP_JAMP(1695)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1941)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2166)+TMP_JAMP(2168) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2177) - $ +(-1.000000000000000D+00)*TMP_JAMP(2544)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2683) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2684) + $ *TMP_JAMP(949)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1147)+TMP_JAMP(1280)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1374)+(-1.000000000000000D+00) + $ *AMP(970)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2067)+(-1.000000000000000D+00)*TMP_JAMP(2130) + $ +TMP_JAMP(2333)+(-1.000000000000000D+00)*TMP_JAMP(2542) + $ +TMP_JAMP(2713)+(-1.000000000000000D+00)*TMP_JAMP(2763) + $ +TMP_JAMP(2854)+TMP_JAMP(2957)+(-1.000000000000000D+00) + $ *TMP_JAMP(3001) + JAMP(33,1) = (-1.000000000000000D+00)*TMP_JAMP(1102)+( + $ -1.000000000000000D+00)*TMP_JAMP(1256)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1391)+(-1.000000000000000D+00) + $ *AMP(977)+(-1.000000000000000D+00)*TMP_JAMP(1688)+( + $ -1.000000000000000D+00)*TMP_JAMP(2556)+TMP_JAMP(2811) + $ +TMP_JAMP(2817)+TMP_JAMP(2882)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2976)+(-1.000000000000000D+00) + $ *TMP_JAMP(3030) + JAMP(34,1) = (-1.000000000000000D+00)*AMP(323)+TMP_JAMP(419) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(511) + $ +TMP_JAMP(1102)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1147)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1281)+TMP_JAMP(1604)+TMP_JAMP(2553)+( + $ -1.000000000000000D+00)*TMP_JAMP(2813)+TMP_JAMP(2920)+( + $ -1.000000000000000D+00)*TMP_JAMP(2951)+TMP_JAMP(2954)+( + $ -1.000000000000000D+00)*TMP_JAMP(2969) + JAMP(35,1) = (-1.000000000000000D+00)*TMP_JAMP(1001)+( + $ -1.000000000000000D+00)*TMP_JAMP(1022)+(-1.000000000000000D+00) + $ *TMP_JAMP(1033)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1152)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1155)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1224)+(-1.000000000000000D+00)*AMP(968)+TMP_JAMP(1582) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2006) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2105) + $ +TMP_JAMP(2514)+TMP_JAMP(2546)+TMP_JAMP(2695)+( + $ -1.000000000000000D+00)*TMP_JAMP(2712)+(-1.000000000000000D+00) + $ *TMP_JAMP(2875)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(2956)+TMP_JAMP(3001) + JAMP(36,1) = (-1.000000000000000D+00)*AMP(321)+TMP_JAMP(431) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(504) + $ +TMP_JAMP(553)+TMP_JAMP(814)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(839)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1152)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1156)+TMP_JAMP(1271) + $ +TMP_JAMP(1520)+TMP_JAMP(1706)+(-1.000000000000000D+00) + $ *TMP_JAMP(1933)+TMP_JAMP(2059)+TMP_JAMP(2515)+TMP_JAMP(2557)+( + $ -1.000000000000000D+00)*TMP_JAMP(2818)+TMP_JAMP(2969) + JAMP(37,1) = TMP_JAMP(786)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(910)+TMP_JAMP(1277) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1346) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1373) + $ +(-1.000000000000000D+00)*AMP(980)+TMP_JAMP(1883) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2066) + $ +TMP_JAMP(2128)+TMP_JAMP(2609)+(-1.000000000000000D+00) + $ *TMP_JAMP(2846)+(-1.000000000000000D+00)*TMP_JAMP(2899)+( + $ -1.000000000000000D+00)*TMP_JAMP(2904) + JAMP(38,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(933)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(965)+TMP_JAMP(1005)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1143)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1148)+((0.000000000000000D + $ +00,-1.000000000000000D+00))*TMP_JAMP(1392)+( + $ -1.000000000000000D+00)*AMP(961)+(-1.000000000000000D+00) + $ *TMP_JAMP(2128)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2138)+TMP_JAMP(2296)+(-1.000000000000000D+00) + $ *TMP_JAMP(2483)+(-1.000000000000000D+00)*TMP_JAMP(2535)+( + $ -1.000000000000000D+00)*TMP_JAMP(2576)+(-1.000000000000000D+00) + $ *TMP_JAMP(2707)+TMP_JAMP(2712)+TMP_JAMP(2793) + JAMP(39,1) = (-1.000000000000000D+00)*TMP_JAMP(827)+( + $ -1.000000000000000D+00)*TMP_JAMP(1020)+(-1.000000000000000D+00) + $ *TMP_JAMP(1039)+TMP_JAMP(1100)+(-1.000000000000000D+00) + $ *TMP_JAMP(1255)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1346)+(-1.000000000000000D+00)*AMP(978)+TMP_JAMP(1686) + $ +(-1.000000000000000D+00)*TMP_JAMP(1799)+((0.000000000000000D + $ +00,1.000000000000000D+00))*TMP_JAMP(1988)+(-1.000000000000000D + $ +00)*TMP_JAMP(2497)+TMP_JAMP(2591)+(-1.000000000000000D+00) + $ *TMP_JAMP(2687)+TMP_JAMP(2770)+TMP_JAMP(2847)+TMP_JAMP(3030) + JAMP(40,1) = (-1.000000000000000D+00)*AMP(324) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(240) + $ +TMP_JAMP(418)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(510)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(848)+(-1.000000000000000D+00)*TMP_JAMP(1100) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1143) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1282) + $ +TMP_JAMP(1600)+(-1.000000000000000D+00)*TMP_JAMP(1841) + $ +TMP_JAMP(2493)+(-1.000000000000000D+00)*TMP_JAMP(2767) + $ +TMP_JAMP(2919)+TMP_JAMP(2951)+(-1.000000000000000D+00) + $ *TMP_JAMP(2968) + JAMP(41,1) = (-1.000000000000000D+00)*TMP_JAMP(771)+( + $ -1.000000000000000D+00)*TMP_JAMP(1002)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1144)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1159)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1211)+(-1.000000000000000D + $ +00)*TMP_JAMP(1270)+((0.000000000000000D+00,-1.000000000000000D + $ +00))*TMP_JAMP(1311)+(-1.000000000000000D+00)*AMP(959) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1784) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1868) + $ +(-1.000000000000000D+00)*TMP_JAMP(1939)+((0.000000000000000D + $ +00,-1.000000000000000D+00))*TMP_JAMP(2086)+TMP_JAMP(2487) + $ +TMP_JAMP(2707)+(-1.000000000000000D+00)*TMP_JAMP(2713)+( + $ -1.000000000000000D+00)*TMP_JAMP(2877)+TMP_JAMP(2884) + JAMP(42,1) = (-1.000000000000000D+00)*AMP(319)+TMP_JAMP(187) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(242) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(303) + $ +(-1.000000000000000D+00)*TMP_JAMP(412)+TMP_JAMP(436) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(839) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1150) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1240) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1311) + $ +TMP_JAMP(1705)+(-1.000000000000000D+00)*TMP_JAMP(1842)+( + $ -1.000000000000000D+00)*TMP_JAMP(1915)+(-1.000000000000000D+00) + $ *TMP_JAMP(1941)+TMP_JAMP(2594)+(-1.000000000000000D+00) + $ *TMP_JAMP(2899)+TMP_JAMP(2968) + JAMP(43,1) = TMP_JAMP(678)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(688)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(949)+TMP_JAMP(1387)+( + $ -1.000000000000000D+00)*AMP(971)+TMP_JAMP(2125)+TMP_JAMP(2127) + $ +(-1.000000000000000D+00)*TMP_JAMP(2481)+TMP_JAMP(2497)+( + $ -1.000000000000000D+00)*TMP_JAMP(2722)+(-1.000000000000000D+00) + $ *TMP_JAMP(2897)+(-1.000000000000000D+00)*TMP_JAMP(2996) + JAMP(44,1) = TMP_JAMP(1384)+(-1.000000000000000D+00)*AMP(962)+( + $ -1.000000000000000D+00)*TMP_JAMP(2126)+(-1.000000000000000D+00) + $ *TMP_JAMP(2127)+(-1.000000000000000D+00)*TMP_JAMP(2535) + $ +TMP_JAMP(2556)+(-1.000000000000000D+00)*TMP_JAMP(2730)+( + $ -1.000000000000000D+00)*TMP_JAMP(3000)+(-1.000000000000000D+00) + $ *TMP_JAMP(3025) + JAMP(45,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(728)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(874)+TMP_JAMP(1382)+(-1.000000000000000D+00) + $ *TMP_JAMP(1387)+(-1.000000000000000D+00)*AMP(969)+TMP_JAMP(1824) + $ +(-1.000000000000000D+00)*TMP_JAMP(2088)+((0.000000000000000D + $ +00,1.000000000000000D+00))*TMP_JAMP(2105)+(-1.000000000000000D + $ +00)*TMP_JAMP(2327)+(-1.000000000000000D+00)*TMP_JAMP(2608) + $ +TMP_JAMP(2653)+TMP_JAMP(2778)+(-1.000000000000000D+00) + $ *TMP_JAMP(2883)+TMP_JAMP(3010) JAMP(46,1) = (-1.000000000000000D+00)*AMP(322) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(380) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1312) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2171) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2172) - $ +(-1.000000000000000D+00)*TMP_JAMP(2174)+TMP_JAMP(2185) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2188) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2297) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2684) - JAMP(47,1) = (-1.000000000000000D+00)*AMP(958) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1318) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1324) - $ +TMP_JAMP(1328)+TMP_JAMP(1705)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1945)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2176)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2179)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2180)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2186)+TMP_JAMP(2732)+( - $ -1.000000000000000D+00)*TMP_JAMP(2755) - JAMP(48,1) = (-1.000000000000000D+00)*AMP(320)+( - $ -1.000000000000000D+00)*AMP(466)+(-1.000000000000000D+00) - $ *AMP(467)+TMP_JAMP(801)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1332)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1334)+TMP_JAMP(1342) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1710) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2183) - $ +(-1.000000000000000D+00)*TMP_JAMP(2184)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2187)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2189) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2190) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2479) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2565) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(133) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(292) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(331) + $ +TMP_JAMP(429)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(480)+(-1.000000000000000D+00)*TMP_JAMP(553) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(686) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(848) + $ +(-1.000000000000000D+00)*TMP_JAMP(1382)+(-1.000000000000000D + $ +00)*TMP_JAMP(2031)+(-1.000000000000000D+00)*TMP_JAMP(2060) + $ +TMP_JAMP(2927)+(-1.000000000000000D+00)*TMP_JAMP(3025) + JAMP(47,1) = TMP_JAMP(1129)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1158)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1303)+(-1.000000000000000D + $ +00)*TMP_JAMP(1384)+(-1.000000000000000D+00)*AMP(960) + $ +TMP_JAMP(1563)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(2086)+(-1.000000000000000D+00)*TMP_JAMP(2089)+( + $ -1.000000000000000D+00)*TMP_JAMP(2364)+TMP_JAMP(2466)+( + $ -1.000000000000000D+00)*TMP_JAMP(2558)+TMP_JAMP(2658) + $ +TMP_JAMP(2824)+(-1.000000000000000D+00)*TMP_JAMP(2931) + $ +TMP_JAMP(3010) + JAMP(48,1) = (-1.000000000000000D+00)*AMP(320) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(331) + $ +TMP_JAMP(411)+TMP_JAMP(430)+(-1.000000000000000D+00) + $ *TMP_JAMP(441)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(503)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1065)+(-1.000000000000000D+00)*TMP_JAMP(1129) + $ +TMP_JAMP(1133)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1244)+TMP_JAMP(1625)+(-1.000000000000000D+00) + $ *TMP_JAMP(1705)+TMP_JAMP(1818)+(-1.000000000000000D+00) + $ *TMP_JAMP(1900)+TMP_JAMP(1972)+TMP_JAMP(2677)+( + $ -1.000000000000000D+00)*TMP_JAMP(2897)+TMP_JAMP(2954) JAMP(49,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(58)+(-1.000000000000000D+00)*AMP(530)+(-1.000000000000000D - $ +00)*AMP(1403)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1352)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2194)+TMP_JAMP(2197)+TMP_JAMP(2201)+TMP_JAMP(2216)+( - $ -1.000000000000000D+00)*TMP_JAMP(2218)+TMP_JAMP(2254) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2686) - JAMP(50,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(55)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(1271)+(-1.000000000000000D+00)*AMP(1397) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1409) - $ +AMP(1618)+(-1.000000000000000D+00)*AMP(1883)+TMP_JAMP(750) - $ +TMP_JAMP(1346)+(-1.000000000000000D+00)*TMP_JAMP(1359) - $ +TMP_JAMP(1361)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1437)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1441)+TMP_JAMP(1442)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2193)+(-1.000000000000000D+00) - $ *TMP_JAMP(2195)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2196)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2198)+(-1.000000000000000D+00)*TMP_JAMP(2199) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2531) + $ *TMP_JAMP(1393)+(-1.000000000000000D+00)*AMP(1405) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1746) + $ +TMP_JAMP(1892)+(-1.000000000000000D+00)*TMP_JAMP(1939) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2136) + $ +TMP_JAMP(2579)+TMP_JAMP(2630)+(-1.000000000000000D+00) + $ *TMP_JAMP(2836)+TMP_JAMP(2837)+TMP_JAMP(2860)+TMP_JAMP(2990) + JAMP(50,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1405)+(-1.000000000000000D+00)*AMP(1399)+( + $ -1.000000000000000D+00)*TMP_JAMP(1892)+TMP_JAMP(1938) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1977) + $ +TMP_JAMP(2026)+(-1.000000000000000D+00)*TMP_JAMP(2620) + $ +TMP_JAMP(2731)+TMP_JAMP(2783)+TMP_JAMP(2938)+TMP_JAMP(2986) JAMP(51,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(749)+(-1.000000000000000D+00)*AMP(1402)+AMP(1700) - $ +TMP_JAMP(1354)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1484)+(-1.000000000000000D+00)*TMP_JAMP(1488)+( - $ -1.000000000000000D+00)*TMP_JAMP(2201)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2687)+TMP_JAMP(2688) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2757) + $ *TMP_JAMP(1394)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1397)+(-1.000000000000000D+00)*AMP(1404) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1737) + $ +TMP_JAMP(1891)+TMP_JAMP(1937)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2136)+TMP_JAMP(2575) + $ +TMP_JAMP(2827)+(-1.000000000000000D+00)*TMP_JAMP(2892)+( + $ -1.000000000000000D+00)*TMP_JAMP(2895) JAMP(52,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(497)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(665)+(-1.000000000000000D+00)*AMP(1018)+( - $ -1.000000000000000D+00)*TMP_JAMP(2203)+(-1.000000000000000D+00) - $ *TMP_JAMP(2248)+(-1.000000000000000D+00)*TMP_JAMP(2688)+( - $ -1.000000000000000D+00)*TMP_JAMP(2756) - JAMP(53,1) = (-1.000000000000000D+00)*AMP(514) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(908) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1271)+( - $ -1.000000000000000D+00)*AMP(1396)+TMP_JAMP(710)+TMP_JAMP(1358) - $ +(-1.000000000000000D+00)*TMP_JAMP(1558)+(-1.000000000000000D - $ +00)*TMP_JAMP(2206)+(-1.000000000000000D+00)*TMP_JAMP(2207) - $ +TMP_JAMP(2208)+(-1.000000000000000D+00)*TMP_JAMP(2277) - $ +TMP_JAMP(2572)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2690)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2694) + $ *TMP_JAMP(1176)+TMP_JAMP(1385)+(-1.000000000000000D+00) + $ *AMP(1020)+(-1.000000000000000D+00)*TMP_JAMP(1619)+( + $ -1.000000000000000D+00)*TMP_JAMP(1891)+TMP_JAMP(2145)+( + $ -1.000000000000000D+00)*TMP_JAMP(2531)+(-1.000000000000000D+00) + $ *TMP_JAMP(2853)+TMP_JAMP(2938)+TMP_JAMP(2988)+TMP_JAMP(3009) + JAMP(53,1) = TMP_JAMP(1415)+(-1.000000000000000D+00)*AMP(1398) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1744) + $ +(-1.000000000000000D+00)*TMP_JAMP(1811)+TMP_JAMP(1890) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1977) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1978) + $ +(-1.000000000000000D+00)*TMP_JAMP(1994)+TMP_JAMP(2729)+( + $ -1.000000000000000D+00)*TMP_JAMP(2774)+(-1.000000000000000D+00) + $ *TMP_JAMP(2892)+TMP_JAMP(2997) JAMP(54,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(496)+(-1.000000000000000D+00)*AMP(1017)+AMP(1712)+( - $ -1.000000000000000D+00)*AMP(1884)+(-1.000000000000000D+00) - $ *TMP_JAMP(716)+(-1.000000000000000D+00)*TMP_JAMP(1363) - $ +TMP_JAMP(1366)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1660)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2209)+(-1.000000000000000D+00)*TMP_JAMP(2281) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2690) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2721) - $ +TMP_JAMP(2756) - JAMP(55,1) = (-1.000000000000000D+00)*AMP(690)+( - $ -1.000000000000000D+00)*AMP(1406)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*AMP(1412)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1372)+TMP_JAMP(1375) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1386) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2214) - $ +(-1.000000000000000D+00)*TMP_JAMP(2215)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2217)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2219)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2221)+TMP_JAMP(2224)+( - $ -1.000000000000000D+00)*TMP_JAMP(2246) - JAMP(56,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(55)+(-1.000000000000000D+00)*AMP(1400)+AMP(1620)+( - $ -1.000000000000000D+00)*TMP_JAMP(697)+(-1.000000000000000D+00) - $ *TMP_JAMP(843)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(847)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1126)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1376)+(-1.000000000000000D+00)*TMP_JAMP(1378)+( - $ -1.000000000000000D+00)*TMP_JAMP(1380)+TMP_JAMP(1382) - $ +TMP_JAMP(1383)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1392)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1427)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1438)+TMP_JAMP(2220)+(-1.000000000000000D+00) - $ *TMP_JAMP(2222)+(-1.000000000000000D+00)*TMP_JAMP(2223) - $ +TMP_JAMP(2233)+(-1.000000000000000D+00)*TMP_JAMP(2237) + $ *TMP_JAMP(721)+(-1.000000000000000D+00)*TMP_JAMP(1263) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1295) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1375) + $ +(-1.000000000000000D+00)*AMP(1019)+(-1.000000000000000D+00) + $ *TMP_JAMP(1655)+(-1.000000000000000D+00)*TMP_JAMP(1890) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1986) + $ +(-1.000000000000000D+00)*TMP_JAMP(2145)+TMP_JAMP(2492) + $ +TMP_JAMP(2585)+TMP_JAMP(2675)+(-1.000000000000000D+00) + $ *TMP_JAMP(2714)+(-1.000000000000000D+00)*TMP_JAMP(2836) + $ +TMP_JAMP(2999) + JAMP(55,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1063)+TMP_JAMP(1141)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1177)+(-1.000000000000000D+00) + $ *AMP(1408)+(-1.000000000000000D+00)*TMP_JAMP(1894)+( + $ -1.000000000000000D+00)*TMP_JAMP(2075)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2108)+(-1.000000000000000D+00) + $ *TMP_JAMP(2578)+TMP_JAMP(2821)+(-1.000000000000000D+00) + $ *TMP_JAMP(2911)+(-1.000000000000000D+00)*TMP_JAMP(2990)+( + $ -1.000000000000000D+00)*TMP_JAMP(3013) + JAMP(56,1) = TMP_JAMP(647)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1168)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1205)+(-1.000000000000000D+00) + $ *AMP(1402)+TMP_JAMP(2047)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2108)+(-1.000000000000000D+00) + $ *TMP_JAMP(2452)+TMP_JAMP(2814)+(-1.000000000000000D+00) + $ *TMP_JAMP(2940)+(-1.000000000000000D+00)*TMP_JAMP(2957)+( + $ -1.000000000000000D+00)*TMP_JAMP(2986)+(-1.000000000000000D+00) + $ *TMP_JAMP(2998) JAMP(57,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(1194)+(-1.000000000000000D+00)*AMP(1404)+AMP(1835) - $ +TMP_JAMP(1388)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1517)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1521)+(-1.000000000000000D+00)*TMP_JAMP(2224)+( - $ -1.000000000000000D+00)*TMP_JAMP(2692)+TMP_JAMP(2693) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2757) - JAMP(58,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(344)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(366)+(-1.000000000000000D+00)*AMP(395)+TMP_JAMP(2228) - $ +TMP_JAMP(2259)+(-1.000000000000000D+00)*TMP_JAMP(2693) - $ +TMP_JAMP(2758) - JAMP(59,1) = (-1.000000000000000D+00)*AMP(675) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1131) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1272)+( - $ -1.000000000000000D+00)*AMP(1398)+TMP_JAMP(771)+TMP_JAMP(1395) - $ +(-1.000000000000000D+00)*TMP_JAMP(1583)+(-1.000000000000000D - $ +00)*TMP_JAMP(2232)+(-1.000000000000000D+00)*TMP_JAMP(2234) - $ +TMP_JAMP(2237)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2239)+(-1.000000000000000D+00)*TMP_JAMP(2289) - $ +TMP_JAMP(2588)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2694) - JAMP(60,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(342)+(-1.000000000000000D+00)*AMP(393)+AMP(458)+( - $ -1.000000000000000D+00)*AMP(1803)+(-1.000000000000000D+00) - $ *TMP_JAMP(779)+(-1.000000000000000D+00)*TMP_JAMP(1398)+( - $ -1.000000000000000D+00)*TMP_JAMP(1402)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1697)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2239)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2240)+( - $ -1.000000000000000D+00)*TMP_JAMP(2295)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2730)+(-1.000000000000000D+00) - $ *TMP_JAMP(2758) - JAMP(61,1) = (-1.000000000000000D+00)*AMP(1407) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1481) - $ +AMP(1612)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2245)+(-1.000000000000000D+00)*TMP_JAMP(2246) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2250) - $ +(-1.000000000000000D+00)*TMP_JAMP(2273)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2696)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2759) - JAMP(62,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(665)+(-1.000000000000000D+00)*AMP(1020)+( - $ -1.000000000000000D+00)*TMP_JAMP(2247)+TMP_JAMP(2249) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2250) - $ +TMP_JAMP(2264)+TMP_JAMP(2698)+TMP_JAMP(2711) - JAMP(63,1) = (-1.000000000000000D+00)*AMP(1405) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1478) - $ +AMP(1613)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1413)+TMP_JAMP(2251)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2253)+TMP_JAMP(2254) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2262) - $ +TMP_JAMP(2266)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2759) - JAMP(64,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(366)+(-1.000000000000000D+00)*AMP(396) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(426) - $ +TMP_JAMP(2258)+TMP_JAMP(2260)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2262)+TMP_JAMP(2271) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2428) - $ +TMP_JAMP(2698) - JAMP(65,1) = (-1.000000000000000D+00)*AMP(1015)+( - $ -1.000000000000000D+00)*TMP_JAMP(2263)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2265)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2267)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2268)+TMP_JAMP(2304) - $ +TMP_JAMP(2434)+TMP_JAMP(2441)+(-1.000000000000000D+00) - $ *TMP_JAMP(2699)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2701) + $ *TMP_JAMP(1172)+TMP_JAMP(1257)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1301)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1340)+(-1.000000000000000D+00) + $ *AMP(1406)+TMP_JAMP(1677)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2142)+(-1.000000000000000D+00) + $ *TMP_JAMP(2820)+TMP_JAMP(2832)+(-1.000000000000000D+00) + $ *TMP_JAMP(2909)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2976)+TMP_JAMP(3013) + JAMP(58,1) = (-1.000000000000000D+00)*AMP(395)+( + $ -1.000000000000000D+00)*TMP_JAMP(172)+(-1.000000000000000D+00) + $ *TMP_JAMP(419)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(506)+(-1.000000000000000D+00)*TMP_JAMP(994) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1168) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1340) + $ +(-1.000000000000000D+00)*TMP_JAMP(2023)+TMP_JAMP(2543)+( + $ -1.000000000000000D+00)*TMP_JAMP(2642)+(-1.000000000000000D+00) + $ *TMP_JAMP(2806)+(-1.000000000000000D+00)*TMP_JAMP(2838) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2964) + $ +TMP_JAMP(2983) + JAMP(59,1) = (-1.000000000000000D+00)*TMP_JAMP(800) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(893) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1169) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1209) + $ +TMP_JAMP(1377)+(-1.000000000000000D+00)*AMP(1400) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1776) + $ +(-1.000000000000000D+00)*TMP_JAMP(2149)+TMP_JAMP(2729)+( + $ -1.000000000000000D+00)*TMP_JAMP(2819)+(-1.000000000000000D+00) + $ *TMP_JAMP(2937)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2956)+TMP_JAMP(2998) + JAMP(60,1) = (-1.000000000000000D+00)*AMP(393) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(132) + $ +TMP_JAMP(414)+(-1.000000000000000D+00)*TMP_JAMP(431) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(499) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1302) + $ +(-1.000000000000000D+00)*TMP_JAMP(1377)+TMP_JAMP(1574) + $ +TMP_JAMP(1639)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1979)+TMP_JAMP(2548)+(-1.000000000000000D+00) + $ *TMP_JAMP(2584)+(-1.000000000000000D+00)*TMP_JAMP(2808)+( + $ -1.000000000000000D+00)*TMP_JAMP(2879)+(-1.000000000000000D+00) + $ *TMP_JAMP(2983) + JAMP(61,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1394)+(-1.000000000000000D+00)*AMP(1409) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2106) + $ +(-1.000000000000000D+00)*TMP_JAMP(2319)+(-1.000000000000000D + $ +00)*TMP_JAMP(2805)+(-1.000000000000000D+00)*TMP_JAMP(2881) + $ +TMP_JAMP(2887)+TMP_JAMP(2912)+(-1.000000000000000D+00) + $ *TMP_JAMP(3017) + JAMP(62,1) = TMP_JAMP(773)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1231)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1288)+((0.000000000000000D + $ +00,1.000000000000000D+00))*TMP_JAMP(1342)+(-1.000000000000000D + $ +00)*AMP(1022)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(2106)+(-1.000000000000000D+00)*TMP_JAMP(2146)+( + $ -1.000000000000000D+00)*TMP_JAMP(2271)+TMP_JAMP(2363) + $ +TMP_JAMP(2437)+TMP_JAMP(2562)+(-1.000000000000000D+00) + $ *TMP_JAMP(2745)+(-1.000000000000000D+00)*TMP_JAMP(2988)+( + $ -1.000000000000000D+00)*TMP_JAMP(3022) + JAMP(63,1) = (-1.000000000000000D+00)*TMP_JAMP(1380)+( + $ -1.000000000000000D+00)*AMP(1407)+TMP_JAMP(1952) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2142) + $ +(-1.000000000000000D+00)*TMP_JAMP(2341)+TMP_JAMP(2452)+( + $ -1.000000000000000D+00)*TMP_JAMP(2687)+(-1.000000000000000D+00) + $ *TMP_JAMP(2724)+TMP_JAMP(2839)+TMP_JAMP(2929)+TMP_JAMP(3017) + JAMP(64,1) = (-1.000000000000000D+00)*AMP(396) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(300) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(311) + $ +(-1.000000000000000D+00)*TMP_JAMP(421)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(501)+TMP_JAMP(1380)+( + $ -1.000000000000000D+00)*AMP(947)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1544)+TMP_JAMP(1683) + $ +TMP_JAMP(1801)+(-1.000000000000000D+00)*TMP_JAMP(2450) + $ +TMP_JAMP(2586)+TMP_JAMP(2720)+TMP_JAMP(2869) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2964) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2975) + JAMP(65,1) = TMP_JAMP(579)+(-1.000000000000000D+00) + $ *TMP_JAMP(1008)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1049)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1218)+(-1.000000000000000D+00)*AMP(1017) + $ +TMP_JAMP(1611)+TMP_JAMP(1862)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1901)+TMP_JAMP(2273)+( + $ -1.000000000000000D+00)*TMP_JAMP(2441)+TMP_JAMP(3022) + $ +TMP_JAMP(3028) JAMP(66,1) = (-1.000000000000000D+00)*AMP(391) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(397) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(418)+( - $ -1.000000000000000D+00)*AMP(474)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1824)+(-1.000000000000000D+00) - $ *TMP_JAMP(2270)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2272)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2274)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2275)+TMP_JAMP(2312)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2314)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2446)+TMP_JAMP(2699) - JAMP(67,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(908)+(-1.000000000000000D+00)*AMP(1401)+( - $ -1.000000000000000D+00)*TMP_JAMP(699)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(701)+(-1.000000000000000D+00) - $ *TMP_JAMP(889)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1427)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1466)+TMP_JAMP(1473)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1719)+TMP_JAMP(2276)+( - $ -1.000000000000000D+00)*TMP_JAMP(2278)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2279)+(-1.000000000000000D+00) - $ *TMP_JAMP(2292)+TMP_JAMP(2734)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2760) - JAMP(68,1) = (-1.000000000000000D+00)*AMP(1019) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1056) - $ +TMP_JAMP(855)+TMP_JAMP(1664)+TMP_JAMP(2280) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2282) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2286) - $ +TMP_JAMP(2291)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2301)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2760) - JAMP(69,1) = (-1.000000000000000D+00)*AMP(705)+( - $ -1.000000000000000D+00)*AMP(1399)+(-1.000000000000000D+00) - $ *AMP(1861)+(-1.000000000000000D+00)*TMP_JAMP(543)+TMP_JAMP(751) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(754) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1439) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1440) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1447) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1734) - $ +TMP_JAMP(2288)+TMP_JAMP(2290)+(-1.000000000000000D+00) - $ *TMP_JAMP(2291)+TMP_JAMP(2292)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2293)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2299)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2302)+(-1.000000000000000D+00) - $ *TMP_JAMP(2581) - JAMP(70,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(384)+(-1.000000000000000D+00)*AMP(394) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(435) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1445) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1448) - $ +TMP_JAMP(1700)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2294)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2296)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2298)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2299)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2306)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2702) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(130) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(302) + $ +(-1.000000000000000D+00)*TMP_JAMP(417)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(479)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(502)+(-1.000000000000000D+00) + $ *TMP_JAMP(579)+(-1.000000000000000D+00)*TMP_JAMP(1418) + $ +TMP_JAMP(1707)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1747)+(-1.000000000000000D+00)*TMP_JAMP(1920)+( + $ -1.000000000000000D+00)*TMP_JAMP(2584)+TMP_JAMP(2887)+( + $ -1.000000000000000D+00)*TMP_JAMP(2914)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2975) + JAMP(67,1) = (-1.000000000000000D+00)*AMP(1403)+( + $ -1.000000000000000D+00)*TMP_JAMP(1626)+(-1.000000000000000D+00) + $ *TMP_JAMP(2144)+(-1.000000000000000D+00)*TMP_JAMP(2452)+( + $ -1.000000000000000D+00)*TMP_JAMP(2678)+TMP_JAMP(2768) + $ +TMP_JAMP(2906)+(-1.000000000000000D+00)*TMP_JAMP(2997)+( + $ -1.000000000000000D+00)*TMP_JAMP(3004) + JAMP(68,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1055)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1058)+TMP_JAMP(1275)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1342)+(-1.000000000000000D+00) + $ *AMP(1021)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2116)+TMP_JAMP(2144)+TMP_JAMP(2297)+( + $ -1.000000000000000D+00)*TMP_JAMP(2341)+TMP_JAMP(2426)+( + $ -1.000000000000000D+00)*TMP_JAMP(2486)+TMP_JAMP(2794)+( + $ -1.000000000000000D+00)*TMP_JAMP(2999)+TMP_JAMP(3016) + JAMP(69,1) = (-1.000000000000000D+00)*TMP_JAMP(1413)+( + $ -1.000000000000000D+00)*AMP(1401)+TMP_JAMP(2042)+TMP_JAMP(2149) + $ +TMP_JAMP(2578)+TMP_JAMP(2679)+TMP_JAMP(2731)+( + $ -1.000000000000000D+00)*TMP_JAMP(2800)+(-1.000000000000000D+00) + $ *TMP_JAMP(2883)+TMP_JAMP(3004) + JAMP(70,1) = AMP(370)+(-1.000000000000000D+00)*AMP(394) + $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(435)+( + $ -1.000000000000000D+00)*TMP_JAMP(170)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(290)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(298)+(-1.000000000000000D+00) + $ *TMP_JAMP(414)+(-1.000000000000000D+00)*TMP_JAMP(434) + $ +TMP_JAMP(1413)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1738)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1743)+TMP_JAMP(2522)+(-1.000000000000000D+00) + $ *TMP_JAMP(2575)+TMP_JAMP(2586)+TMP_JAMP(2791)+TMP_JAMP(2925)+( + $ -1.000000000000000D+00)*TMP_JAMP(2961) JAMP(71,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(664)+(-1.000000000000000D+00)*AMP(1016) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1051) - $ +TMP_JAMP(870)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1455)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2300)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2302)+TMP_JAMP(2303)+TMP_JAMP(2305) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2306) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2316) - $ +TMP_JAMP(2595)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2701) + $ *TMP_JAMP(1176)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1296)+(-1.000000000000000D+00)*AMP(1018) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2091) + $ +TMP_JAMP(2343)+(-1.000000000000000D+00)*TMP_JAMP(2800)+( + $ -1.000000000000000D+00)*TMP_JAMP(2945)+(-1.000000000000000D+00) + $ *TMP_JAMP(3016)+(-1.000000000000000D+00)*TMP_JAMP(3028) JAMP(72,1) = (-1.000000000000000D+00)*AMP(392) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(427) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1465) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1757) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2309) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2310) - $ +(-1.000000000000000D+00)*TMP_JAMP(2311)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2313)+TMP_JAMP(2315) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2316) - $ +TMP_JAMP(2444)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2702) - JAMP(73,1) = (-1.000000000000000D+00)*AMP(1424)+( - $ -1.000000000000000D+00)*AMP(1512)+TMP_JAMP(682) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(696) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1476) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1562) - $ +TMP_JAMP(1567)+TMP_JAMP(2317)+TMP_JAMP(2318)+TMP_JAMP(2321)+( - $ -1.000000000000000D+00)*TMP_JAMP(2323)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2352)+(-1.000000000000000D+00) - $ *TMP_JAMP(2761) - JAMP(74,1) = (-1.000000000000000D+00)*AMP(1418) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1430) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1125) - $ +TMP_JAMP(1496)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2319)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2320)+(-1.000000000000000D+00)*TMP_JAMP(2321) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2322) - $ +TMP_JAMP(2340)+TMP_JAMP(2358)+TMP_JAMP(2361)+TMP_JAMP(2364) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2450) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2471) - JAMP(75,1) = (-1.000000000000000D+00)*AMP(1423) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1482) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1958) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2324) - $ +(-1.000000000000000D+00)*TMP_JAMP(2328)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2403) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2705) - $ +TMP_JAMP(2707)+TMP_JAMP(2761) - JAMP(76,1) = (-1.000000000000000D+00)*AMP(1027)+AMP(1717)+( - $ -1.000000000000000D+00)*TMP_JAMP(825)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1131)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1625)+(-1.000000000000000D - $ +00)*TMP_JAMP(2331)+((0.000000000000000D+00,-1.000000000000000D - $ +00))*TMP_JAMP(2333)+((0.000000000000000D+00,1.000000000000000D - $ +00))*TMP_JAMP(2334)+(-1.000000000000000D+00)*TMP_JAMP(2335) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2347) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2396) - $ +TMP_JAMP(2408)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2705) - JAMP(77,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(920)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(1283)+(-1.000000000000000D+00)*AMP(1417)+TMP_JAMP(724) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1577) - $ +(-1.000000000000000D+00)*TMP_JAMP(1583)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2336)+TMP_JAMP(2337)+( - $ -1.000000000000000D+00)*TMP_JAMP(2339)+TMP_JAMP(2341) - $ +TMP_JAMP(2342)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2386)+(-1.000000000000000D+00)*TMP_JAMP(2455) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2706) - JAMP(78,1) = (-1.000000000000000D+00)*AMP(1026)+( - $ -1.000000000000000D+00)*TMP_JAMP(738)+TMP_JAMP(1524) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1530) - $ +(-1.000000000000000D+00)*TMP_JAMP(1629)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2343) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2346) - $ +TMP_JAMP(2348)+(-1.000000000000000D+00)*TMP_JAMP(2349) - $ +TMP_JAMP(2350)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2433)+(-1.000000000000000D+00)*TMP_JAMP(2462)+( - $ -1.000000000000000D+00)*TMP_JAMP(2522)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2706) - JAMP(79,1) = (-1.000000000000000D+00)*AMP(1427)+( - $ -1.000000000000000D+00)*TMP_JAMP(667)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(675)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1502)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1503)+(-1.000000000000000D - $ +00)*TMP_JAMP(1966)+TMP_JAMP(2351)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2352)+(-1.000000000000000D+00) - $ *TMP_JAMP(2354)+(-1.000000000000000D+00)*TMP_JAMP(2355) - $ +TMP_JAMP(2362)+(-1.000000000000000D+00)*TMP_JAMP(2368)+( - $ -1.000000000000000D+00)*TMP_JAMP(2707)+(-1.000000000000000D+00) - $ *TMP_JAMP(2708) - JAMP(80,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(73)+(-1.000000000000000D+00)*AMP(1421) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1433) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1124) - $ +TMP_JAMP(1532)+(-1.000000000000000D+00)*TMP_JAMP(2356) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2359) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2360) - $ +(-1.000000000000000D+00)*TMP_JAMP(2362)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2363)+TMP_JAMP(2365) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2367) - $ +(-1.000000000000000D+00)*TMP_JAMP(2389)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2436)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2457) - JAMP(81,1) = (-1.000000000000000D+00)*AMP(1425) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1513) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1514) - $ +(-1.000000000000000D+00)*TMP_JAMP(2369)+TMP_JAMP(2372)+( - $ -1.000000000000000D+00)*TMP_JAMP(2374)+TMP_JAMP(2405)+( - $ -1.000000000000000D+00)*TMP_JAMP(2417)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2419)+TMP_JAMP(2708)+( - $ -1.000000000000000D+00)*TMP_JAMP(2709) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(299) + $ +TMP_JAMP(416)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(452)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(467)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(507)+(-1.000000000000000D+00)*TMP_JAMP(1307) + $ +TMP_JAMP(1665)+(-1.000000000000000D+00)*TMP_JAMP(1706) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1748) + $ +TMP_JAMP(2049)+(-1.000000000000000D+00)*TMP_JAMP(2838) + $ +TMP_JAMP(2906)+TMP_JAMP(2945)+TMP_JAMP(2961) + JAMP(73,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(584)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1396)+TMP_JAMP(1582)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1713)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1761)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1764)+TMP_JAMP(1895)+( + $ -1.000000000000000D+00)*TMP_JAMP(1932)+(-1.000000000000000D+00) + $ *AMP(1428)+TMP_JAMP(2569)+(-1.000000000000000D+00) + $ *TMP_JAMP(2652)+TMP_JAMP(2683)+TMP_JAMP(2786)+TMP_JAMP(2796) + $ +TMP_JAMP(2902) + JAMP(74,1) = TMP_JAMP(2027)+TMP_JAMP(2042)+(-1.000000000000000D + $ +00)*AMP(1422)+TMP_JAMP(2383)+TMP_JAMP(2580)+( + $ -1.000000000000000D+00)*TMP_JAMP(2683)+TMP_JAMP(2735)+( + $ -1.000000000000000D+00)*TMP_JAMP(2798)+(-1.000000000000000D+00) + $ *TMP_JAMP(2932)+TMP_JAMP(2942)+TMP_JAMP(3008) + JAMP(75,1) = TMP_JAMP(1015)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1196)+(-1.000000000000000D+00) + $ *TMP_JAMP(1383)+(-1.000000000000000D+00)*TMP_JAMP(1386) + $ +TMP_JAMP(1860)+(-1.000000000000000D+00)*TMP_JAMP(1863)+( + $ -1.000000000000000D+00)*TMP_JAMP(1895)+TMP_JAMP(1899)+( + $ -1.000000000000000D+00)*AMP(1427)+TMP_JAMP(2627)+TMP_JAMP(2780) + $ +(-1.000000000000000D+00)*TMP_JAMP(2895)+(-1.000000000000000D + $ +00)*TMP_JAMP(2936) + JAMP(76,1) = (-1.000000000000000D+00)*TMP_JAMP(1038)+( + $ -1.000000000000000D+00)*TMP_JAMP(1107)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1185)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1203)+(-1.000000000000000D + $ +00)*AMP(1029)+(-1.000000000000000D+00)*TMP_JAMP(1899) + $ +TMP_JAMP(2043)+(-1.000000000000000D+00)*TMP_JAMP(2095)+( + $ -1.000000000000000D+00)*TMP_JAMP(2328)+TMP_JAMP(2458)+( + $ -1.000000000000000D+00)*TMP_JAMP(2611)+TMP_JAMP(2649)+( + $ -1.000000000000000D+00)*TMP_JAMP(2684)+TMP_JAMP(2779) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2943) + $ +TMP_JAMP(3009) + JAMP(77,1) = (-1.000000000000000D+00)*TMP_JAMP(800) + $ +TMP_JAMP(1631)+(-1.000000000000000D+00)*TMP_JAMP(1812) + $ +TMP_JAMP(1898)+(-1.000000000000000D+00)*AMP(1421)+( + $ -1.000000000000000D+00)*TMP_JAMP(2332)+TMP_JAMP(2537) + $ +TMP_JAMP(2932)+(-1.000000000000000D+00)*TMP_JAMP(2936)+( + $ -1.000000000000000D+00)*TMP_JAMP(2972)+TMP_JAMP(3023) + JAMP(78,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1216)+(-1.000000000000000D+00)*TMP_JAMP(1264)+( + $ -1.000000000000000D+00)*AMP(1028)+(-1.000000000000000D+00) + $ *TMP_JAMP(1494)+(-1.000000000000000D+00)*TMP_JAMP(1633) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1764) + $ +(-1.000000000000000D+00)*TMP_JAMP(1898)+TMP_JAMP(2095)+( + $ -1.000000000000000D+00)*TMP_JAMP(2336)+(-1.000000000000000D+00) + $ *TMP_JAMP(2426)+TMP_JAMP(2511)+TMP_JAMP(2552)+TMP_JAMP(2685)+( + $ -1.000000000000000D+00)*TMP_JAMP(2874)+TMP_JAMP(2958) + $ +TMP_JAMP(3002) + JAMP(79,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(584)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1187)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1200)+TMP_JAMP(1626)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1849)+(-1.000000000000000D+00) + $ *TMP_JAMP(1883)+(-1.000000000000000D+00)*TMP_JAMP(2036)+( + $ -1.000000000000000D+00)*AMP(1431)+TMP_JAMP(2489)+( + $ -1.000000000000000D+00)*TMP_JAMP(2505)+(-1.000000000000000D+00) + $ *TMP_JAMP(2570)+(-1.000000000000000D+00)*TMP_JAMP(2630) + $ +TMP_JAMP(2645)+TMP_JAMP(2686)+(-1.000000000000000D+00) + $ *TMP_JAMP(2797)+(-1.000000000000000D+00)*TMP_JAMP(3011) + JAMP(80,1) = TMP_JAMP(643)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1207)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1291)+TMP_JAMP(2037) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2138) + $ +(-1.000000000000000D+00)*AMP(1425)+(-1.000000000000000D+00) + $ *TMP_JAMP(2250)+(-1.000000000000000D+00)*TMP_JAMP(2381)+( + $ -1.000000000000000D+00)*TMP_JAMP(2686)+(-1.000000000000000D+00) + $ *TMP_JAMP(2699)+TMP_JAMP(2905)+TMP_JAMP(2987)+( + $ -1.000000000000000D+00)*TMP_JAMP(3008) + JAMP(81,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1188)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1201)+TMP_JAMP(1269)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1349)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1987)+TMP_JAMP(2020)+( + $ -1.000000000000000D+00)*TMP_JAMP(2141)+(-1.000000000000000D+00) + $ *AMP(1429)+(-1.000000000000000D+00)*TMP_JAMP(2773) + $ +TMP_JAMP(2864)+(-1.000000000000000D+00)*TMP_JAMP(2909) + $ +TMP_JAMP(3011) JAMP(82,1) = (-1.000000000000000D+00)*AMP(404) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(408) - $ +AMP(460)+TMP_JAMP(856)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1133)+(-1.000000000000000D+00) - $ *TMP_JAMP(1524)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1635)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2376)+TMP_JAMP(2377)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2379)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2380)+(-1.000000000000000D+00) - $ *TMP_JAMP(2382)+TMP_JAMP(2425)+TMP_JAMP(2709) - JAMP(83,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(921)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(1209)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(1284)+(-1.000000000000000D+00)*AMP(1419)+TMP_JAMP(786)+( - $ -1.000000000000000D+00)*TMP_JAMP(1558)+(-1.000000000000000D+00) - $ *TMP_JAMP(2383)+TMP_JAMP(2384)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2385)+TMP_JAMP(2388) - $ +TMP_JAMP(2390)+(-1.000000000000000D+00)*TMP_JAMP(2391)+( - $ -1.000000000000000D+00)*TMP_JAMP(2469)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2710) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(305) + $ +TMP_JAMP(426)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(505)+(-1.000000000000000D+00)*TMP_JAMP(555)+( + $ -1.000000000000000D+00)*TMP_JAMP(992)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1349)+(-1.000000000000000D+00) + $ *TMP_JAMP(2023)+(-1.000000000000000D+00)*TMP_JAMP(2306)+( + $ -1.000000000000000D+00)*TMP_JAMP(2698)+(-1.000000000000000D+00) + $ *TMP_JAMP(2872)+TMP_JAMP(2922)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2967)+TMP_JAMP(2987) + JAMP(83,1) = (-1.000000000000000D+00)*TMP_JAMP(784) + $ +TMP_JAMP(1020)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1053)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1195)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1212)+TMP_JAMP(1268)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1868)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(2011)+(-1.000000000000000D + $ +00)*AMP(1423)+TMP_JAMP(2451)+TMP_JAMP(2699)+( + $ -1.000000000000000D+00)*TMP_JAMP(2772)+TMP_JAMP(2917)+( + $ -1.000000000000000D+00)*TMP_JAMP(2939)+(-1.000000000000000D+00) + $ *TMP_JAMP(2965) JAMP(84,1) = (-1.000000000000000D+00)*AMP(402) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(408) - $ +TMP_JAMP(803)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1535)+(-1.000000000000000D+00)*TMP_JAMP(1644) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2393) - $ +TMP_JAMP(2397)+(-1.000000000000000D+00)*TMP_JAMP(2398)+( - $ -1.000000000000000D+00)*TMP_JAMP(2399)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2400)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2443)+(-1.000000000000000D - $ +00)*TMP_JAMP(2481)+(-1.000000000000000D+00)*TMP_JAMP(2558) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2710) - JAMP(85,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(77)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(590)+(-1.000000000000000D+00)*AMP(1428) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1481)+( - $ -1.000000000000000D+00)*AMP(1701)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1541)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1542)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1543)+TMP_JAMP(1551) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2401) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2402) - $ +TMP_JAMP(2404)+(-1.000000000000000D+00)*TMP_JAMP(2405) - $ +TMP_JAMP(2410)+(-1.000000000000000D+00)*TMP_JAMP(2416) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2422) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2452) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(133) + $ +(-1.000000000000000D+00)*TMP_JAMP(181)+TMP_JAMP(424)+( + $ -1.000000000000000D+00)*TMP_JAMP(436)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(500)+(-1.000000000000000D+00) + $ *TMP_JAMP(556)+TMP_JAMP(658)+(-1.000000000000000D+00) + $ *TMP_JAMP(1013)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1241)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1564)+TMP_JAMP(1617)+TMP_JAMP(1662)+( + $ -1.000000000000000D+00)*TMP_JAMP(2275)+TMP_JAMP(2489)+( + $ -1.000000000000000D+00)*TMP_JAMP(2761)+(-1.000000000000000D+00) + $ *TMP_JAMP(2880)+(-1.000000000000000D+00)*TMP_JAMP(2922) + $ +TMP_JAMP(2965) + JAMP(85,1) = TMP_JAMP(1386)+(-1.000000000000000D+00)*AMP(1432)+( + $ -1.000000000000000D+00)*TMP_JAMP(2372)+TMP_JAMP(2387) + $ +TMP_JAMP(2393)+TMP_JAMP(2427)+(-1.000000000000000D+00) + $ *TMP_JAMP(2467)+(-1.000000000000000D+00)*TMP_JAMP(2505)+( + $ -1.000000000000000D+00)*TMP_JAMP(2599)+(-1.000000000000000D+00) + $ *TMP_JAMP(2755)+(-1.000000000000000D+00)*TMP_JAMP(2912) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2977) + $ +(-1.000000000000000D+00)*TMP_JAMP(3005) JAMP(86,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(826)+(-1.000000000000000D+00)*AMP(1029)+AMP(1718) - $ +TMP_JAMP(637)+TMP_JAMP(829)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(832)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1604)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2406)+TMP_JAMP(2407)+( - $ -1.000000000000000D+00)*TMP_JAMP(2408)+(-1.000000000000000D+00) - $ *TMP_JAMP(2409)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2411)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2414)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2435)+(-1.000000000000000D+00)*TMP_JAMP(2711) - JAMP(87,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(1116)+(-1.000000000000000D+00)*AMP(1426) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1478) - $ +AMP(1834)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1561)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1563)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1564)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1572)+TMP_JAMP(2415)+TMP_JAMP(2417) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2418) - $ +(-1.000000000000000D+00)*TMP_JAMP(2420)+(-1.000000000000000D - $ +00)*TMP_JAMP(2421)+TMP_JAMP(2423)+(-1.000000000000000D+00) - $ *TMP_JAMP(2427)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2439) - JAMP(88,1) = (-1.000000000000000D+00)*AMP(405)+AMP(461)+( - $ -1.000000000000000D+00)*TMP_JAMP(656)+(-1.000000000000000D+00) - $ *TMP_JAMP(858)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(862)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1576)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1577)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1581)+TMP_JAMP(1582)+TMP_JAMP(1584) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1616) - $ +(-1.000000000000000D+00)*TMP_JAMP(2424)+(-1.000000000000000D - $ +00)*TMP_JAMP(2425)+(-1.000000000000000D+00)*TMP_JAMP(2426) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2428) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2429) - $ +TMP_JAMP(2430)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2451) - JAMP(89,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(826)+(-1.000000000000000D+00)*AMP(1024) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1042)+( - $ -1.000000000000000D+00)*AMP(1717)+(-1.000000000000000D+00) - $ *TMP_JAMP(870)+TMP_JAMP(1590)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1624)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2431)+(-1.000000000000000D+00) - $ *TMP_JAMP(2432)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2433)+(-1.000000000000000D+00)*TMP_JAMP(2437)+( - $ -1.000000000000000D+00)*TMP_JAMP(2438)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2439)+(-1.000000000000000D+00) - $ *TMP_JAMP(2440)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2448)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2715) - JAMP(90,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(64)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(385)+(-1.000000000000000D+00)*AMP(400) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(406) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(418)+( - $ -1.000000000000000D+00)*AMP(460)+(-1.000000000000000D+00) - $ *TMP_JAMP(1596)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1633)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2442)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2443)+(-1.000000000000000D+00)*TMP_JAMP(2444) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2445) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2447) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2449) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2452) - $ +TMP_JAMP(2453)+(-1.000000000000000D+00)*TMP_JAMP(2599) - JAMP(91,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(920)+AMP(1152)+(-1.000000000000000D+00)*AMP(1422) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1463)+( - $ -1.000000000000000D+00)*AMP(1807)+(-1.000000000000000D+00) - $ *TMP_JAMP(631)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1767)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2454)+(-1.000000000000000D+00)*TMP_JAMP(2456) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2458) - $ +TMP_JAMP(2460)+(-1.000000000000000D+00)*TMP_JAMP(2465) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2762) - JAMP(92,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(827)+(-1.000000000000000D+00)*AMP(1028)+( - $ -1.000000000000000D+00)*AMP(1765)+(-1.000000000000000D+00) - $ *TMP_JAMP(635)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1603)+(-1.000000000000000D+00)*TMP_JAMP(2459) - $ +TMP_JAMP(2461)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2463)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2464)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2466)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2614)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2763) - JAMP(93,1) = AMP(627)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(1284)+(-1.000000000000000D+00) - $ *AMP(1420)+TMP_JAMP(645)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2468)+TMP_JAMP(2470) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2473) - $ +TMP_JAMP(2477)+(-1.000000000000000D+00)*TMP_JAMP(2485) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2743) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2762) - JAMP(94,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(387)+(-1.000000000000000D+00)*AMP(403) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(444) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1615) - $ +(-1.000000000000000D+00)*TMP_JAMP(2476)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2478)+TMP_JAMP(2480) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2482) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2483) - $ +TMP_JAMP(2484)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2486)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2492)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2497)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2500) - JAMP(95,1) = (-1.000000000000000D+00)*AMP(1025)+( - $ -1.000000000000000D+00)*AMP(1069)+(-1.000000000000000D+00) - $ *TMP_JAMP(663)+(-1.000000000000000D+00)*TMP_JAMP(665) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1623) - $ +TMP_JAMP(1629)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1809)+TMP_JAMP(2636)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2715)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2763)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2764) - JAMP(96,1) = (-1.000000000000000D+00)*AMP(401) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(406)+( - $ -1.000000000000000D+00)*AMP(462)+TMP_JAMP(676)+TMP_JAMP(680) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1632) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1634) - $ +TMP_JAMP(1644)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2491)+(-1.000000000000000D+00)*TMP_JAMP(2494) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2496) - $ +TMP_JAMP(2498)+(-1.000000000000000D+00)*TMP_JAMP(2641) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2764) + $ *TMP_JAMP(951)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(983)+TMP_JAMP(1107)+TMP_JAMP(1127) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1204) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1290) + $ +(-1.000000000000000D+00)*AMP(1031)+TMP_JAMP(2146)+( + $ -1.000000000000000D+00)*TMP_JAMP(2480)+TMP_JAMP(2499)+( + $ -1.000000000000000D+00)*TMP_JAMP(2721)+(-1.000000000000000D+00) + $ *TMP_JAMP(2896)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(2977)+(-1.000000000000000D+00)*TMP_JAMP(2995) + JAMP(87,1) = (-1.000000000000000D+00)*TMP_JAMP(1379)+( + $ -1.000000000000000D+00)*TMP_JAMP(1953)+TMP_JAMP(2141)+( + $ -1.000000000000000D+00)*AMP(1430)+TMP_JAMP(2247)+TMP_JAMP(2403) + $ +TMP_JAMP(2882)+TMP_JAMP(2902)+(-1.000000000000000D+00) + $ *TMP_JAMP(2929)+TMP_JAMP(3005) + JAMP(88,1) = (-1.000000000000000D+00)*AMP(405)+( + $ -1.000000000000000D+00)*TMP_JAMP(176)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(291)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(294)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(312)+TMP_JAMP(422) + $ +TMP_JAMP(1379)+TMP_JAMP(1604)+(-1.000000000000000D+00) + $ *TMP_JAMP(1684)+(-1.000000000000000D+00)*TMP_JAMP(1802)+( + $ -1.000000000000000D+00)*TMP_JAMP(2438)+TMP_JAMP(2512)+( + $ -1.000000000000000D+00)*TMP_JAMP(2715)+TMP_JAMP(2873) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2967) + $ +TMP_JAMP(2982) + JAMP(89,1) = TMP_JAMP(258)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(318)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(476)+TMP_JAMP(1007) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1052) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1219) + $ +(-1.000000000000000D+00)*AMP(1026)+TMP_JAMP(1696)+( + $ -1.000000000000000D+00)*TMP_JAMP(1722)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1858)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(1901)+(-1.000000000000000D + $ +00)*TMP_JAMP(2135)+TMP_JAMP(2443)+(-1.000000000000000D+00) + $ *TMP_JAMP(2495)+TMP_JAMP(2646)+TMP_JAMP(2995)+TMP_JAMP(3003) + JAMP(90,1) = (-1.000000000000000D+00)*AMP(400)+( + $ -1.000000000000000D+00)*AMP(419)+(-1.000000000000000D+00) + $ *TMP_JAMP(109)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(240)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(295)+(-1.000000000000000D+00)*TMP_JAMP(427) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(466) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(502) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(522) + $ +TMP_JAMP(1138)+(-1.000000000000000D+00)*TMP_JAMP(1703)+( + $ -1.000000000000000D+00)*TMP_JAMP(2044)+(-1.000000000000000D+00) + $ *TMP_JAMP(2308)+TMP_JAMP(2427)+(-1.000000000000000D+00) + $ *TMP_JAMP(2444)+(-1.000000000000000D+00)*TMP_JAMP(2650)+( + $ -1.000000000000000D+00)*TMP_JAMP(2982)+(-1.000000000000000D+00) + $ *TMP_JAMP(3003) + JAMP(91,1) = TMP_JAMP(647)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2113)+(-1.000000000000000D+00) + $ *AMP(1426)+TMP_JAMP(2369)+TMP_JAMP(2502)+(-1.000000000000000D + $ +00)*TMP_JAMP(2941)+(-1.000000000000000D+00)*TMP_JAMP(3023)+( + $ -1.000000000000000D+00)*TMP_JAMP(3024) + JAMP(92,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(985)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1204)+TMP_JAMP(1261)+TMP_JAMP(1280) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1350) + $ +(-1.000000000000000D+00)*AMP(1030)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2113)+(-1.000000000000000D+00) + $ *TMP_JAMP(2143)+TMP_JAMP(2334)+(-1.000000000000000D+00) + $ *TMP_JAMP(2545)+TMP_JAMP(2714)+(-1.000000000000000D+00) + $ *TMP_JAMP(2762)+TMP_JAMP(2857)+(-1.000000000000000D+00) + $ *TMP_JAMP(3002) + JAMP(93,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1769)+(-1.000000000000000D+00)*AMP(1424)+( + $ -1.000000000000000D+00)*AMP(1893)+TMP_JAMP(2465)+TMP_JAMP(2476) + $ +(-1.000000000000000D+00)*TMP_JAMP(2625)+(-1.000000000000000D + $ +00)*TMP_JAMP(2917)+TMP_JAMP(2928)+(-1.000000000000000D+00) + $ *TMP_JAMP(2931)+TMP_JAMP(2950)+TMP_JAMP(3024) + JAMP(94,1) = (-1.000000000000000D+00)*AMP(403) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(290) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(307) + $ +(-1.000000000000000D+00)*TMP_JAMP(424)+TMP_JAMP(430) + $ +TMP_JAMP(532)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1766)+TMP_JAMP(2512)+(-1.000000000000000D+00) + $ *TMP_JAMP(2756)+TMP_JAMP(2857)+TMP_JAMP(2924)+( + $ -1.000000000000000D+00)*TMP_JAMP(2950)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2966) + JAMP(95,1) = AMP(150)+((0.000000000000000D+00,1.000000000000000D + $ +00))*TMP_JAMP(237)+(-1.000000000000000D+00)*TMP_JAMP(1043) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1250) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1350) + $ +(-1.000000000000000D+00)*AMP(1027)+TMP_JAMP(2135) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2148) + $ +(-1.000000000000000D+00)*TMP_JAMP(2355)+(-1.000000000000000D + $ +00)*TMP_JAMP(2381)+TMP_JAMP(2757)+TMP_JAMP(2779)+( + $ -1.000000000000000D+00)*TMP_JAMP(3021) + JAMP(96,1) = (-1.000000000000000D+00)*AMP(401)+( + $ -1.000000000000000D+00)*AMP(437)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(222)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(310)+TMP_JAMP(427) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(478) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(504) + $ +(-1.000000000000000D+00)*TMP_JAMP(1307)+((0.000000000000000D + $ +00,1.000000000000000D+00))*TMP_JAMP(1566)+(-1.000000000000000D + $ +00)*TMP_JAMP(2367)+TMP_JAMP(2502)+TMP_JAMP(2651)+( + $ -1.000000000000000D+00)*TMP_JAMP(2913)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2966)+TMP_JAMP(3021) JAMP(97,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(934)+(-1.000000000000000D+00)*AMP(1445)+AMP(1637) - $ +TMP_JAMP(697)+TMP_JAMP(732)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1168)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1647)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1649)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1652)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(1655) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1690) - $ +TMP_JAMP(1976)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2718)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2727)+TMP_JAMP(2765) + $ *TMP_JAMP(1399)+(-1.000000000000000D+00)*TMP_JAMP(1953)+( + $ -1.000000000000000D+00)*TMP_JAMP(2025)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2121)+(-1.000000000000000D+00) + $ *AMP(1449)+TMP_JAMP(2234)+TMP_JAMP(2634)+(-1.000000000000000D + $ +00)*TMP_JAMP(2671)+TMP_JAMP(2689)+TMP_JAMP(2727)+TMP_JAMP(2866) + $ +TMP_JAMP(3012) JAMP(98,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(91)+(-1.000000000000000D+00)*AMP(1439)+TMP_JAMP(703)+( - $ -1.000000000000000D+00)*TMP_JAMP(881)+TMP_JAMP(887) - $ +TMP_JAMP(937)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(948)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1127)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1651)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1662)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1666)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2501)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2504)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2533)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2623)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2718)+TMP_JAMP(2766) - JAMP(99,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(933)+(-1.000000000000000D+00)*AMP(1444)+AMP(1754)+AMP(1755) - $ +(-1.000000000000000D+00)*TMP_JAMP(708)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1654)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1657)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1663)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1718)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2507)+(-1.000000000000000D - $ +00)*TMP_JAMP(2514)+((0.000000000000000D+00,1.000000000000000D - $ +00))*TMP_JAMP(2722)+TMP_JAMP(2735)+(-1.000000000000000D+00) - $ *TMP_JAMP(2765) - JAMP(100,1) = (-1.000000000000000D+00)*AMP(1036)+AMP(1663)+( - $ -1.000000000000000D+00)*TMP_JAMP(796)+(-1.000000000000000D+00) - $ *TMP_JAMP(985)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(990)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1659)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1661)+TMP_JAMP(1669)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1671)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1802)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(1806)+( - $ -1.000000000000000D+00)*TMP_JAMP(2511)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2512)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2587)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2721) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2722) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2726) - $ +TMP_JAMP(2736) - JAMP(101,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(761)+(-1.000000000000000D+00)*AMP(1438)+AMP(1808)+AMP(1830) - $ +(-1.000000000000000D+00)*TMP_JAMP(720)+TMP_JAMP(722) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1665) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1667) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1766) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1903) - $ +(-1.000000000000000D+00)*TMP_JAMP(2515)+TMP_JAMP(2526)+( - $ -1.000000000000000D+00)*TMP_JAMP(2723)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2725)+TMP_JAMP(2728)+( - $ -1.000000000000000D+00)*TMP_JAMP(2766) - JAMP(102,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(668)+(-1.000000000000000D+00)*AMP(1035)+( - $ -1.000000000000000D+00)*AMP(1664)+TMP_JAMP(732)+( - $ -1.000000000000000D+00)*TMP_JAMP(735)+(-1.000000000000000D+00) - $ *TMP_JAMP(916)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(922)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1670)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1672)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1676)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1775)+(-1.000000000000000D+00)*TMP_JAMP(2521)+( - $ -1.000000000000000D+00)*TMP_JAMP(2525)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2527)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2529)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2725) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2726) - $ +(-1.000000000000000D+00)*TMP_JAMP(2740) - JAMP(103,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(1298)+(-1.000000000000000D+00)*AMP(1448) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1454)+( - $ -1.000000000000000D+00)*TMP_JAMP(769)+(-1.000000000000000D+00) - $ *TMP_JAMP(797)+(-1.000000000000000D+00)*TMP_JAMP(798)+( - $ -1.000000000000000D+00)*TMP_JAMP(978)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1137)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1683)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1693)+(-1.000000000000000D - $ +00)*TMP_JAMP(1902)+((0.000000000000000D+00,-1.000000000000000D - $ +00))*TMP_JAMP(2531)+TMP_JAMP(2532)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2534)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2539)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2727)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2729) - JAMP(104,1) = (-1.000000000000000D+00)*AMP(1442)+( - $ -1.000000000000000D+00)*TMP_JAMP(755)+TMP_JAMP(756)+( - $ -1.000000000000000D+00)*TMP_JAMP(758)+TMP_JAMP(981) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(999) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1161) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1687) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1703) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1748) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2533) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2535) - $ +(-1.000000000000000D+00)*TMP_JAMP(2537)+TMP_JAMP(2538)+( - $ -1.000000000000000D+00)*TMP_JAMP(2540)+TMP_JAMP(2552) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2605) - $ +(-1.000000000000000D+00)*TMP_JAMP(2728) - JAMP(105,1) = (-1.000000000000000D+00)*AMP(1446)+AMP(1862) - $ +TMP_JAMP(770)+(-1.000000000000000D+00)*TMP_JAMP(909) - $ +TMP_JAMP(986)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1692)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1694)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1699)+(-1.000000000000000D+00)*TMP_JAMP(2542)+( - $ -1.000000000000000D+00)*TMP_JAMP(2543)+TMP_JAMP(2544)+( - $ -1.000000000000000D+00)*TMP_JAMP(2551)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2729)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2731)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2738) - JAMP(106,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(351)+(-1.000000000000000D+00)*AMP(413)+AMP(451)+AMP(693)+( - $ -1.000000000000000D+00)*TMP_JAMP(917)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(927)+TMP_JAMP(1005) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1020) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1696) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1698) - $ +TMP_JAMP(1704)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1823)+(-1.000000000000000D+00)*TMP_JAMP(2547) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2548) - $ +TMP_JAMP(2564)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2583)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2730)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2731)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2733) + $ *TMP_JAMP(1401)+TMP_JAMP(1952)+(-1.000000000000000D+00) + $ *TMP_JAMP(2022)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2118)+(-1.000000000000000D+00)*AMP(1443) + $ +TMP_JAMP(2390)+(-1.000000000000000D+00)*TMP_JAMP(2408) + $ +TMP_JAMP(2456)+(-1.000000000000000D+00)*TMP_JAMP(2689) + $ +TMP_JAMP(2841)+TMP_JAMP(2908)+(-1.000000000000000D+00) + $ *TMP_JAMP(3006) + JAMP(99,1) = TMP_JAMP(821)+(-1.000000000000000D+00) + $ *TMP_JAMP(1018)+TMP_JAMP(1376)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1378)+TMP_JAMP(1913) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2121) + $ +TMP_JAMP(2124)+(-1.000000000000000D+00)*AMP(1448)+( + $ -1.000000000000000D+00)*TMP_JAMP(2490)+(-1.000000000000000D+00) + $ *TMP_JAMP(2638)+TMP_JAMP(2765)+(-1.000000000000000D+00) + $ *TMP_JAMP(2843)+TMP_JAMP(2901) + JAMP(100,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(746)+(-1.000000000000000D+00)*TMP_JAMP(1278)+( + $ -1.000000000000000D+00)*AMP(1038)+(-1.000000000000000D+00) + $ *TMP_JAMP(1913)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2012)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2119)+(-1.000000000000000D+00)*TMP_JAMP(2499) + $ +TMP_JAMP(2592)+TMP_JAMP(2607)+TMP_JAMP(2669)+( + $ -1.000000000000000D+00)*TMP_JAMP(2690)+TMP_JAMP(2776)+( + $ -1.000000000000000D+00)*TMP_JAMP(2952)+TMP_JAMP(3020) + JAMP(101,1) = TMP_JAMP(1910)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2118)+TMP_JAMP(2124)+( + $ -1.000000000000000D+00)*AMP(1442)+AMP(1813)+TMP_JAMP(2342)+( + $ -1.000000000000000D+00)*TMP_JAMP(2549)+(-1.000000000000000D+00) + $ *TMP_JAMP(2842)+(-1.000000000000000D+00)*TMP_JAMP(2867) + $ +TMP_JAMP(2984)+TMP_JAMP(3014) + JAMP(102,1) = (-1.000000000000000D+00)*TMP_JAMP(1030) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1404) + $ +(-1.000000000000000D+00)*AMP(1037)+(-1.000000000000000D+00) + $ *TMP_JAMP(1809)+(-1.000000000000000D+00)*TMP_JAMP(1910) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2018) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2119) + $ +(-1.000000000000000D+00)*TMP_JAMP(2560)+(-1.000000000000000D + $ +00)*TMP_JAMP(2606)+TMP_JAMP(2665)+TMP_JAMP(2691)+TMP_JAMP(2822) + $ +TMP_JAMP(2868)+TMP_JAMP(2989) + JAMP(103,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1252)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1388)+(-1.000000000000000D+00)*TMP_JAMP(2125)+( + $ -1.000000000000000D+00)*AMP(1452)+TMP_JAMP(2430)+( + $ -1.000000000000000D+00)*TMP_JAMP(2447)+(-1.000000000000000D+00) + $ *TMP_JAMP(2478)+(-1.000000000000000D+00)*TMP_JAMP(2633) + $ +TMP_JAMP(2664)+(-1.000000000000000D+00)*TMP_JAMP(2848) + $ +TMP_JAMP(2930)+(-1.000000000000000D+00)*TMP_JAMP(3012) + JAMP(104,1) = (-1.000000000000000D+00)*TMP_JAMP(777)+( + $ -1.000000000000000D+00)*TMP_JAMP(798)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(845)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(962)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(1228)+TMP_JAMP(2126)+( + $ -1.000000000000000D+00)*AMP(1446)+(-1.000000000000000D+00) + $ *TMP_JAMP(2440)+(-1.000000000000000D+00)*TMP_JAMP(2457)+( + $ -1.000000000000000D+00)*TMP_JAMP(2580)+TMP_JAMP(2739)+( + $ -1.000000000000000D+00)*TMP_JAMP(2830)+(-1.000000000000000D+00) + $ *TMP_JAMP(2930)+(-1.000000000000000D+00)*TMP_JAMP(2993) + $ +TMP_JAMP(3006) + JAMP(105,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(989)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1388)+(-1.000000000000000D+00)*TMP_JAMP(1670) + $ +TMP_JAMP(2088)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2117)+(-1.000000000000000D+00)*AMP(1450) + $ +TMP_JAMP(2901)+(-1.000000000000000D+00)*TMP_JAMP(2937)+( + $ -1.000000000000000D+00)*TMP_JAMP(2944)+(-1.000000000000000D+00) + $ *TMP_JAMP(3026) + JAMP(106,1) = (-1.000000000000000D+00)*AMP(413) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(292) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(304) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(333) + $ +(-1.000000000000000D+00)*TMP_JAMP(432)+TMP_JAMP(442) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1599) + $ +TMP_JAMP(2670)+(-1.000000000000000D+00)*TMP_JAMP(2693) + $ +TMP_JAMP(2740)+(-1.000000000000000D+00)*TMP_JAMP(2921) + $ +TMP_JAMP(2944)+TMP_JAMP(2970)+(-1.000000000000000D+00) + $ *TMP_JAMP(2993) JAMP(107,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(762)+(-1.000000000000000D+00)*AMP(1440)+AMP(1889)+( - $ -1.000000000000000D+00)*TMP_JAMP(783)+(-1.000000000000000D+00) - $ *TMP_JAMP(784)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1134)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1153)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1701)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1702)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2549)+(-1.000000000000000D+00)*TMP_JAMP(2550) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2553) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2556) - $ +TMP_JAMP(2562)+(-1.000000000000000D+00)*TMP_JAMP(2732) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2768) - JAMP(108,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(369)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(378)+(-1.000000000000000D+00)*AMP(411) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(417) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(594) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1669) - $ +TMP_JAMP(799)+(-1.000000000000000D+00)*TMP_JAMP(802) - $ +TMP_JAMP(960)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1707)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1709)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1711)+TMP_JAMP(1714)+(-1.000000000000000D+00) - $ *TMP_JAMP(1835)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2556)+(-1.000000000000000D+00)*TMP_JAMP(2557)+( - $ -1.000000000000000D+00)*TMP_JAMP(2561)+(-1.000000000000000D+00) - $ *TMP_JAMP(2563)+TMP_JAMP(2597)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2733) - JAMP(109,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(95)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(1199)+(-1.000000000000000D+00)*AMP(1449)+AMP(1567)+( - $ -1.000000000000000D+00)*TMP_JAMP(813)+(-1.000000000000000D+00) - $ *TMP_JAMP(814)+(-1.000000000000000D+00)*TMP_JAMP(885) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1717) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1720) - $ +TMP_JAMP(1722)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1727)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1754)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1974)+(-1.000000000000000D+00)*TMP_JAMP(2734)+( - $ -1.000000000000000D+00)*TMP_JAMP(2735)+(-1.000000000000000D+00) - $ *TMP_JAMP(2767) - JAMP(110,1) = AMP(527)+(-1.000000000000000D+00)*AMP(670)+( - $ -1.000000000000000D+00)*AMP(1038)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(1199)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(1592)+TMP_JAMP(821)+( - $ -1.000000000000000D+00)*TMP_JAMP(823)+TMP_JAMP(826) - $ +TMP_JAMP(873)+TMP_JAMP(915)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1724)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1726)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(1975)+TMP_JAMP(2570) - $ +TMP_JAMP(2572)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2574)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2584)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2613)+(-1.000000000000000D+00)*TMP_JAMP(2736)+( - $ -1.000000000000000D+00)*TMP_JAMP(2739) - JAMP(111,1) = (-1.000000000000000D+00)*AMP(687) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(754)+( - $ -1.000000000000000D+00)*AMP(1447)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(1469)+AMP(1568)+TMP_JAMP(836)+( - $ -1.000000000000000D+00)*TMP_JAMP(839)+TMP_JAMP(840) - $ +TMP_JAMP(869)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1733)+TMP_JAMP(1738)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1743)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1749)+TMP_JAMP(1977) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1978) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2580) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2738) - $ +TMP_JAMP(2767) - JAMP(112,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(367)+(-1.000000000000000D+00)*AMP(414) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(754) - $ +AMP(786)+(-1.000000000000000D+00)*TMP_JAMP(852)+( - $ -1.000000000000000D+00)*TMP_JAMP(857)+(-1.000000000000000D+00) - $ *TMP_JAMP(884)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1740)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1742)+TMP_JAMP(1751)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1759)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1793)+(-1.000000000000000D - $ +00)*TMP_JAMP(1799)+((0.000000000000000D+00,1.000000000000000D - $ +00))*TMP_JAMP(1980)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2582)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2584)+TMP_JAMP(2585) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2587) - $ +TMP_JAMP(2588)+(-1.000000000000000D+00)*TMP_JAMP(2589) - $ +TMP_JAMP(2590) + $ *TMP_JAMP(844)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(978)+TMP_JAMP(1023)+TMP_JAMP(1034) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1228) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1253) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1304) + $ +(-1.000000000000000D+00)*TMP_JAMP(1914)+TMP_JAMP(2089) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2137) + $ +(-1.000000000000000D+00)*AMP(1444)+TMP_JAMP(2576) + $ +TMP_JAMP(2828)+(-1.000000000000000D+00)*TMP_JAMP(2939)+( + $ -1.000000000000000D+00)*TMP_JAMP(3026) + JAMP(108,1) = (-1.000000000000000D+00)*AMP(411) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(293) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(301) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(334) + $ +(-1.000000000000000D+00)*TMP_JAMP(437)+TMP_JAMP(440) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(596)+( + $ -1.000000000000000D+00)*TMP_JAMP(781)+(-1.000000000000000D+00) + $ *TMP_JAMP(817)+TMP_JAMP(846)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(977)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(980)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(1252)+TMP_JAMP(1591) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1593) + $ +TMP_JAMP(2099)+(-1.000000000000000D+00)*TMP_JAMP(2350)+( + $ -1.000000000000000D+00)*TMP_JAMP(2600)+(-1.000000000000000D+00) + $ *TMP_JAMP(2669)+TMP_JAMP(2753)+(-1.000000000000000D+00) + $ *TMP_JAMP(2870)+(-1.000000000000000D+00)*TMP_JAMP(2970) + JAMP(109,1) = (-1.000000000000000D+00)*TMP_JAMP(1036) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1378) + $ +(-1.000000000000000D+00)*TMP_JAMP(1884)+(-1.000000000000000D + $ +00)*TMP_JAMP(2039)+((0.000000000000000D+00,-1.000000000000000D + $ +00))*TMP_JAMP(2068)+(-1.000000000000000D+00)*AMP(1453)+( + $ -1.000000000000000D+00)*TMP_JAMP(2357)+TMP_JAMP(2523)+( + $ -1.000000000000000D+00)*TMP_JAMP(2573)+TMP_JAMP(2678)+( + $ -1.000000000000000D+00)*TMP_JAMP(2766)+TMP_JAMP(2775)+( + $ -1.000000000000000D+00)*TMP_JAMP(3027) + JAMP(110,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(990)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1248)+TMP_JAMP(1277)+(-1.000000000000000D+00) + $ *AMP(1040)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1852)+TMP_JAMP(1884)+TMP_JAMP(2040) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2116) + $ +(-1.000000000000000D+00)*TMP_JAMP(2338)+(-1.000000000000000D + $ +00)*TMP_JAMP(2795)+(-1.000000000000000D+00)*TMP_JAMP(2900) + $ +TMP_JAMP(3015)+(-1.000000000000000D+00)*TMP_JAMP(3020) + JAMP(111,1) = TMP_JAMP(1516)+(-1.000000000000000D+00) + $ *TMP_JAMP(1932)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(2117)+(-1.000000000000000D+00)*AMP(1451)+( + $ -1.000000000000000D+00)*TMP_JAMP(2371)+TMP_JAMP(2519) + $ +TMP_JAMP(2572)+(-1.000000000000000D+00)*TMP_JAMP(2679) + $ +TMP_JAMP(2695)+TMP_JAMP(2787)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(2973)+TMP_JAMP(3027) + JAMP(112,1) = (-1.000000000000000D+00)*AMP(414)+( + $ -1.000000000000000D+00)*TMP_JAMP(189)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(299)+TMP_JAMP(433) + $ +TMP_JAMP(435)+(-1.000000000000000D+00)*TMP_JAMP(439) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(508) + $ +(-1.000000000000000D+00)*TMP_JAMP(1948)+((0.000000000000000D + $ +00,1.000000000000000D+00))*TMP_JAMP(2069)+(-1.000000000000000D + $ +00)*TMP_JAMP(2565)+TMP_JAMP(2788)+(-1.000000000000000D+00) + $ *TMP_JAMP(2795)+TMP_JAMP(2918)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(2973) JAMP(113,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(82)+(-1.000000000000000D+00)*AMP(1033) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1039) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1051) - $ +TMP_JAMP(866)+(-1.000000000000000D+00)*TMP_JAMP(867) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1135) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1748) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1750) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1807) - $ +(-1.000000000000000D+00)*TMP_JAMP(1817)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2591)+(-1.000000000000000D - $ +00)*TMP_JAMP(2594)+((0.000000000000000D+00,1.000000000000000D - $ +00))*TMP_JAMP(2596)+TMP_JAMP(2739)+(-1.000000000000000D+00) - $ *TMP_JAMP(2740)+TMP_JAMP(2741) + $ *TMP_JAMP(78)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(321)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(739)+(-1.000000000000000D+00)*TMP_JAMP(1272)+( + $ -1.000000000000000D+00)*AMP(1035)+(-1.000000000000000D+00) + $ *TMP_JAMP(1810)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2091)+TMP_JAMP(2803)+(-1.000000000000000D+00) + $ *TMP_JAMP(2933)+TMP_JAMP(2991)+(-1.000000000000000D+00) + $ *TMP_JAMP(3015) JAMP(114,1) = (-1.000000000000000D+00)*AMP(409) $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(415) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(427)+( - $ -1.000000000000000D+00)*AMP(451)+(-1.000000000000000D+00) - $ *AMP(1569)+(-1.000000000000000D+00)*TMP_JAMP(880)+TMP_JAMP(881) - $ +TMP_JAMP(882)+(-1.000000000000000D+00)*TMP_JAMP(885) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1753) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1758) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1760) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1828) - $ +TMP_JAMP(2597)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2598)+(-1.000000000000000D+00)*TMP_JAMP(2599) - $ +TMP_JAMP(2601)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2603)+(-1.000000000000000D+00)*TMP_JAMP(2741) - JAMP(115,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(92)+(-1.000000000000000D+00)*AMP(1443) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1463) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(1537) - $ +AMP(1574)+(-1.000000000000000D+00)*AMP(1809)+( - $ -1.000000000000000D+00)*TMP_JAMP(897)+(-1.000000000000000D+00) - $ *TMP_JAMP(898)+(-1.000000000000000D+00)*TMP_JAMP(899)+( - $ -1.000000000000000D+00)*TMP_JAMP(900)+TMP_JAMP(1003)+( - $ -1.000000000000000D+00)*TMP_JAMP(1009)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(1014)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1153)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1764)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(1765) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1768) - $ +TMP_JAMP(1771)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2604)+(-1.000000000000000D+00)*TMP_JAMP(2606) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2607) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2611) - $ +TMP_JAMP(2617)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2620) - JAMP(116,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(508)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(668)+(-1.000000000000000D+00)*AMP(1037) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1121)+( - $ -1.000000000000000D+00)*AMP(1514)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(1776)+(-1.000000000000000D+00) - $ *TMP_JAMP(908)+TMP_JAMP(910)+(-1.000000000000000D+00) - $ *TMP_JAMP(911)+TMP_JAMP(912)+TMP_JAMP(918)+TMP_JAMP(982) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2607) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2608) - $ +(-1.000000000000000D+00)*TMP_JAMP(2609)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2610)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2612)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(2613)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(2615) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2629) - JAMP(117,1) = (-1.000000000000000D+00)*AMP(528) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(595)+( - $ -1.000000000000000D+00)*AMP(1441)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*AMP(1538)+TMP_JAMP(932)+( - $ -1.000000000000000D+00)*TMP_JAMP(933)+TMP_JAMP(934) - $ +TMP_JAMP(936)+TMP_JAMP(956)+(-1.000000000000000D+00) - $ *TMP_JAMP(983)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(1136)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1797)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1985)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2616)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2619)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2623)+(-1.000000000000000D+00)*TMP_JAMP(2624)+( - $ -1.000000000000000D+00)*TMP_JAMP(2634)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(2743)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(2768) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(83) + $ +(-1.000000000000000D+00)*TMP_JAMP(190)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(236)+((0.000000000000000D+00 + $ ,-1.000000000000000D+00))*TMP_JAMP(311)+TMP_JAMP(439) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(467) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(526) + $ +TMP_JAMP(1138)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(1593)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(1852)+TMP_JAMP(2052)+(-1.000000000000000D+00) + $ *TMP_JAMP(2390)+(-1.000000000000000D+00)*TMP_JAMP(2593)+( + $ -1.000000000000000D+00)*TMP_JAMP(2804)+(-1.000000000000000D+00) + $ *TMP_JAMP(2915)+(-1.000000000000000D+00)*TMP_JAMP(2991) + JAMP(115,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(589)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(2122)+(-1.000000000000000D+00)*AMP(1447)+( + $ -1.000000000000000D+00)*TMP_JAMP(2373)+TMP_JAMP(2550)+( + $ -1.000000000000000D+00)*TMP_JAMP(2574)+(-1.000000000000000D+00) + $ *TMP_JAMP(2582)+(-1.000000000000000D+00)*TMP_JAMP(2626) + $ +TMP_JAMP(2629)+TMP_JAMP(2941)+(-1.000000000000000D+00) + $ *TMP_JAMP(3014) + JAMP(116,1) = TMP_JAMP(1279)+(-1.000000000000000D+00)*AMP(1039) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2122) + $ +TMP_JAMP(2143)+AMP(1669)+(-1.000000000000000D+00) + $ *TMP_JAMP(2371)+(-1.000000000000000D+00)*TMP_JAMP(2619)+( + $ -1.000000000000000D+00)*TMP_JAMP(2823)+TMP_JAMP(2853)+( + $ -1.000000000000000D+00)*TMP_JAMP(2989)+(-1.000000000000000D+00) + $ *TMP_JAMP(3019) + JAMP(117,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(589)+(-1.000000000000000D+00)*TMP_JAMP(1658) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(2137) + $ +(-1.000000000000000D+00)*AMP(1445)+AMP(1519)+TMP_JAMP(2596) + $ +TMP_JAMP(2624)+TMP_JAMP(2633)+TMP_JAMP(2884)+TMP_JAMP(2908)+( + $ -1.000000000000000D+00)*TMP_JAMP(2928)+TMP_JAMP(2959) JAMP(118,1) = ((0.000000000000000D+00,1.000000000000000D+00)) $ *AMP(349)+(-1.000000000000000D+00)*AMP(412) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(595) - $ +AMP(627)+(-1.000000000000000D+00)*TMP_JAMP(952)+( - $ -1.000000000000000D+00)*TMP_JAMP(953)+TMP_JAMP(954) - $ +TMP_JAMP(955)+(-1.000000000000000D+00)*TMP_JAMP(957) - $ +TMP_JAMP(962)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(1794)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2625)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2626)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2627)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2628)+TMP_JAMP(2630)+TMP_JAMP(2631) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2632) - JAMP(119,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(508)+(-1.000000000000000D+00)*AMP(1034) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1039)+( - $ -1.000000000000000D+00)*AMP(1071)+TMP_JAMP(975)+( - $ -1.000000000000000D+00)*TMP_JAMP(976)+(-1.000000000000000D+00) - $ *TMP_JAMP(977)+TMP_JAMP(978)+(-1.000000000000000D+00) - $ *TMP_JAMP(980)+(-1.000000000000000D+00)*TMP_JAMP(984) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1138) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1805) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1808) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1810) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(1811) - $ +TMP_JAMP(1813)+TMP_JAMP(1818)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2633)+(-1.000000000000000D+00) - $ *TMP_JAMP(2634)+TMP_JAMP(2635)+(-1.000000000000000D+00) - $ *TMP_JAMP(2636)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(2744) - JAMP(120,1) = AMP(98)+(-1.000000000000000D+00)*AMP(410) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(436)+( - $ -1.000000000000000D+00)*TMP_JAMP(1000)+TMP_JAMP(1001) - $ +TMP_JAMP(1002)+TMP_JAMP(1004)+(-1.000000000000000D+00) - $ *TMP_JAMP(1007)+TMP_JAMP(1008)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(1139)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(1140)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1819)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1822)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1825)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1826)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(1829)+TMP_JAMP(1832) - $ +TMP_JAMP(1834)+TMP_JAMP(1835)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(2637)+TMP_JAMP(2638) - $ +TMP_JAMP(2639)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(2744) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(308) + $ +TMP_JAMP(438)+(-1.000000000000000D+00)*TMP_JAMP(443) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(506) + $ +(-1.000000000000000D+00)*TMP_JAMP(532)+(-1.000000000000000D+00) + $ *TMP_JAMP(1667)+(-1.000000000000000D+00)*TMP_JAMP(1681)+( + $ -1.000000000000000D+00)*TMP_JAMP(1724)+TMP_JAMP(1834)+( + $ -1.000000000000000D+00)*TMP_JAMP(1947)+(-1.000000000000000D+00) + $ *TMP_JAMP(2628)+TMP_JAMP(2844)+(-1.000000000000000D+00) + $ *TMP_JAMP(2858)+TMP_JAMP(2918)+(-1.000000000000000D+00) + $ *TMP_JAMP(2959) + JAMP(119,1) = (-1.000000000000000D+00)*TMP_JAMP(1041)+( + $ -1.000000000000000D+00)*AMP(1036)+TMP_JAMP(1608) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(2148) + $ +(-1.000000000000000D+00)*TMP_JAMP(2614)+TMP_JAMP(2635) + $ +TMP_JAMP(2933)+TMP_JAMP(2992)+TMP_JAMP(3019) + JAMP(120,1) = (-1.000000000000000D+00)*AMP(410) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(415) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(436) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(244) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(309) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(336) + $ +TMP_JAMP(531)+(-1.000000000000000D+00)*TMP_JAMP(1418)+( + $ -1.000000000000000D+00)*TMP_JAMP(1673)+TMP_JAMP(1724) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(1797) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(1462) + $ +TMP_JAMP(2619)+(-1.000000000000000D+00)*TMP_JAMP(2634) + $ +TMP_JAMP(2670)+(-1.000000000000000D+00)*TMP_JAMP(2916)+( + $ -1.000000000000000D+00)*TMP_JAMP(2992) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/dummy_fct.f b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/dummy_fct.f index 076cf29d67..4f7a204b8f 100644 --- a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/dummy_fct.f +++ b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/dummy_fct.f @@ -32,7 +32,7 @@ logical FUNCTION dummy_cuts(P) LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL) logical do_cuts(nexternal) COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY, - . IS_A_ONIUM, do_cuts + & IS_A_ONIUM, do_cuts dummy_cuts=.true. @@ -118,15 +118,16 @@ double precision function user_dynamical_scale(P) C ************************************************************ -C default for the library implementing a dummt bias function +C default for the library implementing a dummy bias function C ************************************************************ subroutine bias_wgt_custom(p, original_weight, bias_weight) - implicit none + implicit none C C Parameters C include 'nexternal.inc' -C + +C C Arguments C double precision p(0:3, nexternal) @@ -161,3 +162,4 @@ subroutine bias_wgt_custom(p, original_weight, bias_weight) return end subroutine bias_wgt_custom + diff --git a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/makefile b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/makefile index 74db44d848..093bc84271 100644 --- a/epochX/cudacpp/gg_ttggg.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gg_ttggg.mad/SubProcesses/makefile @@ -9,6 +9,33 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra +# Sets correct target based on MAKECMDGOALS +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) + else + TARGET := $(MAKECMDGOALS) + endif +endif + +# Sets correct cppavx target as dependency when compiling Fortran +ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) + ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) + endif +endif + +# Default goal +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -48,10 +75,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -89,7 +116,7 @@ SYMMETRY = symmetry.o idenparts.o # Binaries -LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 +#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) @@ -115,10 +142,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.cudacpplibs: - $(MAKE) -f $(CUDACPP_MAKEFILE) - touch $@ - # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary @@ -130,26 +153,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +# Only used for testing, should be removed in the future madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -215,49 +259,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else ifeq ($(UNAME_P),arm) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z endif -avxnone: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=none +ALL: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z + $(MAKE) USEBUILDDIR=1 cuda -avxsse4: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 +cppnone: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -avxavx2: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 +cppsse4: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -avx512y: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y +cppavx2: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -avx512z: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z +cpp512y: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -###endif +cpp512z: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z + +cuda: + $(MAKE) -f $(CUDACPP_MAKEFILE) cuda # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +BUILD_DIRS := $(wildcard build.*) +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + +clean: +ifeq ($(USEBUILDDIR),1) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only cleaning build dir.) + $(RM) -r $(BUILD_DIRS) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + $(info USEBUILDDIR=0 only cleaning build with no dir.) + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* + $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir + $(RM) $(CUDACPP_BUILDDIR)/.*libs +endif + +cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone + +cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 + +cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 + +clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y + +clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z + +cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda + $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs - rm -f .libs + $(RM) $(CUDACPP_BUILDDIR)/.*libs + $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall - rm -rf $(LIBDIR)libbias.$(libext) - rm -f ../../Source/*.mod ../../Source/*/*.mod + $(RM) -r $(LIBDIR)libbias.$(libext) + $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/generate_events b/epochX/cudacpp/gg_ttggg.mad/bin/generate_events index 107313b25d..5577cc66a0 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/generate_events +++ b/epochX/cudacpp/gg_ttggg.mad/bin/generate_events @@ -46,7 +46,7 @@ if __debug__ and (not os.path.exists(pjoin(root_path,'../..', 'bin','create_rele sys.path.append(pjoin(root_path,'bin','internal')) import madevent_interface as ME - +import misc as misc import logging import logging.config @@ -160,17 +160,31 @@ if '__main__' == __name__: # Check that python version is valid set_configuration() - argument = sys.argv + argument = sys.argv + + # check for plugin customization of the launch command + launch_interface = ME.MadEventCmdShell + if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + + try: if '-h' in argument or '--help' in argument: - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.exec_cmd('help generate_events') sys.exit() elif len(argument) > 1 and argument[1] in ['0', '1', '2']: argument = treat_old_argument(argument) with ME.MadEventCmdShell.RunWebHandling(root_path, ): - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.run_cmd('generate_events %s' % ' '.join(argument[1:])) launch.run_cmd('quit') except ME.MadEventAlreadyRunning as message: diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/banner.py b/epochX/cudacpp/gg_ttggg.mad/bin/internal/banner.py index 7624b9f557..824815f47b 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/internal/banner.py +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/banner.py @@ -537,7 +537,7 @@ def charge_card(self, tag): self.param_card = param_card_reader.ParamCard(param_card) return self.param_card elif tag == 'mgruncard': - self.run_card = RunCard(self[tag]) + self.run_card = RunCard(self[tag], unknown_warning=False) return self.run_card elif tag == 'mg5proccard': proc_card = self[tag].split('\n') @@ -1002,13 +1002,14 @@ def __init__(self, finput=None, **opt): self.allowed_value = {} self.default_setup() + self.plugin_input(finput) # if input is define read that input if isinstance(finput, (file, str, StringIO.StringIO)): self.read(finput, **opt) - self.plugin_input(finput) + def plugin_input(self, finput=None): @@ -2624,6 +2625,7 @@ class RunCard(ConfigFile): default_include_file = 'run_card.inc' default_autodef_file = 'run.inc' donewarning = [] + include_as_parameter = [] def plugin_input(self, finput): @@ -2670,18 +2672,40 @@ def __new__(cls, finput=None, **opt): elif isinstance(finput, cls): target_class = finput.__class__ elif isinstance(finput, str): + path = finput if '\n' not in finput: finput = open(finput).read() if 'req_acc_FO' in finput: target_class = RunCardNLO else: target_class = RunCardLO + if MADEVENT and os.path.exists(pjoin(MEDIR, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(MEDIR, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + elif not MADEVENT and os.path.exists(path.replace('run_card.dat', '../bin/internal/launch_plugin.py')): + misc.sprint('try to use plugin class') + pydir = path.replace('run_card.dat', '../bin/internal/') + with misc.TMP_variable(sys, 'path', sys.path + [pydir]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + else: return None target_class.fill_post_set_from_blocks() - - return super(RunCard, cls).__new__(target_class, finput, **opt) + out = super(RunCard, cls).__new__(target_class, finput, **opt) + if not isinstance(out, RunCard): #should not happen but in presence of missmatch of library loaded. + out.__init__(finput, **opt) + return out else: return super(RunCard, cls).__new__(cls, finput, **opt) @@ -2709,7 +2733,7 @@ def __init__(self, *args, **opts): self.system_default = {} self.display_block = [] # set some block to be displayed - + self.fct_mod = {} # {param: (fct_pointer, *argument, **opts)} self.cut_class = {} self.warned=False @@ -2746,7 +2770,7 @@ def get_lepton_densities(cls): def add_param(self, name, value, fortran_name=None, include=True, hidden=False, legacy=False, cut=False, system=False, sys_default=None, - autodef=False, + autodef=False, fct_mod=None, **opts): """ add a parameter to the card. value is the default value and defines the type (int/float/bool/str) of the input. @@ -2760,6 +2784,7 @@ def add_param(self, name, value, fortran_name=None, include=True, If a path (Source/PDF/pdf.inc) the definition will be added within that file Default is False (does not add the definition) entry added in the run_card will automatically have this on True. + fct_mod: defines a function to run if the parameter is modify in the include file options of **opts: - allowed: list of valid options. '*' means anything else should be allowed. empty list means anything possible as well. @@ -2784,8 +2809,12 @@ def add_param(self, name, value, fortran_name=None, include=True, if autodef: self.definition_path[autodef].append(name) self.user_set.add(name) + # function to trigger if a value is modified in the include file + # main target is action to force correct recompilation (like for compilation flag/...) + if fct_mod: + self.fct_mod[name] = fct_mod - def read(self, finput, consistency=True): + def read(self, finput, consistency=True, unknown_warning=True): """Read the input file, this can be a path to a file, a file object, a str with the content of the file.""" @@ -2793,6 +2822,7 @@ def read(self, finput, consistency=True): if "\n" in finput: finput = finput.split('\n') elif os.path.isfile(finput): + self.path = finput finput = open(finput) else: raise Exception("No such file %s" % finput) @@ -2807,7 +2837,7 @@ def read(self, finput, consistency=True): name = name.lower().strip() if name not in self: #looks like an entry added by a user -> add it nicely - self.add_unknown_entry(name, value) + self.add_unknown_entry(name, value, unknown_warning) else: self.set( name, value, user=True) # parameter not set in the run_card can be set to compatiblity value @@ -2819,7 +2849,7 @@ def read(self, finput, consistency=True): logger.warning(str(error)) else: raise - def add_unknown_entry(self, name, value): + def add_unknown_entry(self, name, value, unknow_warning): """function to add an entry to the run_card when the associated parameter does not exists. This is based on the guess_entry_fromname for the various syntax providing input. This then call add_param accordingly. @@ -2858,7 +2888,7 @@ def add_unknown_entry(self, name, value): raise Exception("dictionary need to have at least one entry") default['dict']['__type__'] = default[self.guess_type_from_value(default_value[0])] - if name not in RunCard.donewarning: + if name not in RunCard.donewarning and unknow_warning: logger.warning("Found unexpected entry in run_card: \"%s\" with value \"%s\".\n"+\ " The type was assigned to %s. \n"+\ " The definition of that variable will %sbe automatically added to fortran file %s\n"+\ @@ -2896,7 +2926,16 @@ def valid_line(self, line, tmp): return False else: return True - + + + def reset_simd(self, old_value, new_value, name, *args, **opts): + raise Exception('pass in reset simd') + + def make_clean(self,old_value, new_value, name, dir): + raise Exception('pass make clean for ', dir) + + def make_Ptouch(self,old_value, new_value, name, reset): + raise Exception('pass Ptouch for ', reset) def write(self, output_file, template=None, python_template=False, write_hidden=False, template_options=None, **opt): @@ -3071,6 +3110,77 @@ def write(self, output_file, template=None, python_template=False, else: output_file.write(text) + def get_last_value_include(self, output_dir): + """For paraeter in self.fct_mod + parse the associate inc file to get the value of the previous run. + We return a dictionary {name: old_value} + if inc file does not exist we will return the current value (i.e. set has no change) + """ + + #remember that + # default_include_file is a class variable + # self.includepath is on the form include_path : [list of param ] + out = {} + + # setup inc_to_parse to be like self.includepath (include_path : [list of param ]) + # BUT only containing the parameter that need to be tracked for the fct_mod option + inc_to_parse = {} + for inc_file, params in self.includepath.items(): + if not inc_file: + continue + if any(p in params for p in self.fct_mod): + inc_to_parse[inc_file] = [name for name in self.includepath[inc_file] if name in self.fct_mod] + + # now loop over the files and ask the associate function + for inc_file, params in inc_to_parse.items(): + if inc_file is True: + inc_file = self.default_include_file + out.update(self.get_value_from_include(inc_file, params, output_dir)) + + return out + + def get_value_from_include(self, path, list_of_params, output_dir): + """for a given include file return the current value of the requested parameter + return a dictionary {name: value} + if path does not exists return the current value in self for all parameter""" + + #WARNING DOES NOT HANDLE LIST/DICT so far + + # handle case where file is missing + if not os.path.exists(pjoin(output_dir,path)): + misc.sprint("include file not existing", pjoin(output_dir,path)) + out = {name: self[name] for name in list_of_params} + + with open(pjoin(output_dir,path), 'r') as fsock: + text = fsock.read() + + for name in list_of_params: + misc.sprint(name, name in self.fortran_name) + misc.sprint(self.fortran_name[name] if name in self.fortran_name[name] else name) + to_track = [self.fortran_name[name] if name in self.fortran_name else name for name in list_of_params] + pattern = re.compile(r"\(?(%(names)s)\s?=\s?([^)]*)\)?" % {'names':'|'.join(to_track)}, re.I) + out = dict(pattern.findall(text)) + misc.sprint(out) + for name in list_of_params: + if name in self.fortran_name: + value = out[self.fortran_name[name]] + del out[self.fortran_name[name]] + out[name] = value + + for name, value in out.items(): + try: + out[name] = self.format_variable(value, type(self[name])) + except Exception: + continue + + if len(out) != len(list_of_params): + misc.sprint(list_of_params) + misc.sprint(to_track) + misc.sprint(self.fortran_name) + misc.sprint(text) + raise Exception + return out + def get_default(self, name, default=None, log_level=None): """return self[name] if exist otherwise default. log control if we @@ -3361,71 +3471,93 @@ def write_include_file(self, output_dir, output_file=None): #ensusre that system only parameter are correctly set self.update_system_parameter_for_include() + value_in_old_include = self.get_last_value_include(output_dir) + + if output_dir: self.write_autodef(output_dir, output_file=None) # check/fix status of customised functions self.edit_dummy_fct_from_file(self["custom_fcts"], os.path.dirname(output_dir)) for incname in self.includepath: - if incname is True: - pathinc = self.default_include_file - elif incname is False: - continue - else: - pathinc = incname + self.write_one_include_file(output_dir, incname, output_file) + + for name,value in value_in_old_include.items(): + if value != self[name]: + self.fct_mod[name][0](value, self[name], name, *self.fct_mod[name][1],**self.fct_mod[name][2]) - if output_file: - fsock = output_file + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + misc.sprint(incname) + if incname is True: + pathinc = self.default_include_file + elif incname is False: + return + else: + pathinc = incname + + if output_file: + fsock = output_file + else: + fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) + + + for key in self.includepath[incname]: + #define the fortran name + if key in self.fortran_name: + fortran_name = self.fortran_name[key] else: - fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) - for key in self.includepath[incname]: - #define the fortran name - if key in self.fortran_name: - fortran_name = self.fortran_name[key] + fortran_name = key + + if incname in self.include_as_parameter: + fsock.writelines('INTEGER %s\n' % fortran_name) + #get the value with warning if the user didn't set it + value = self.get_default(key) + if hasattr(self, 'mod_inc_%s' % key): + value = getattr(self, 'mod_inc_%s' % key)(value) + # Special treatment for strings containing a list of + # strings. Convert it to a list of strings + if isinstance(value, list): + # in case of a list, add the length of the list as 0th + # element in fortran. Only in case of integer or float + # list (not for bool nor string) + targettype = self.list_parameter[key] + if targettype is bool: + pass + elif targettype is int: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) + fsock.writelines(line) + elif targettype is float: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) + fsock.writelines(line) + # output the rest of the list in fortran + for i,v in enumerate(value): + line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) + fsock.writelines(line) + elif isinstance(value, dict): + for fortran_name, onevalue in value.items(): + line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) + fsock.writelines(line) + elif isinstance(incname,str) and 'compile' in incname: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, value) else: - fortran_name = key - - #get the value with warning if the user didn't set it - value = self.get_default(key) - if hasattr(self, 'mod_inc_%s' % key): - value = getattr(self, 'mod_inc_%s' % key)(value) - # Special treatment for strings containing a list of - # strings. Convert it to a list of strings - if isinstance(value, list): - # in case of a list, add the length of the list as 0th - # element in fortran. Only in case of integer or float - # list (not for bool nor string) - targettype = self.list_parameter[key] - if targettype is bool: - pass - elif targettype is int: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) - fsock.writelines(line) - elif targettype is float: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) - fsock.writelines(line) - # output the rest of the list in fortran - for i,v in enumerate(value): - line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) - fsock.writelines(line) - elif isinstance(value, dict): - for fortran_name, onevalue in value.items(): - line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) - fsock.writelines(line) - elif isinstance(incname,str) and 'compile' in incname: line = '%s = %s \n' % (fortran_name, value) - fsock.write(line) + fsock.write(line) + else: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, self.f77_formatting(value)) else: line = '%s = %s \n' % (fortran_name, self.f77_formatting(value)) - fsock.writelines(line) - if not output_file: - fsock.close() - path = pjoin(output_dir,pathinc) - if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): - files.mv(path+'.tmp', path) - else: - os.remove(path+'.tmp') - + fsock.writelines(line) + if not output_file: + fsock.close() + path = pjoin(output_dir,pathinc) + if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): + files.mv(path+'.tmp', path) + else: + os.remove(path+'.tmp') def write_autodef(self, output_dir, output_file=None): """ Add the definition of variable to run.inc if the variable is set with autodef. @@ -3764,13 +3896,14 @@ def remove_all_cut(self): %(tmin_for_channel)s = tmin_for_channel ! limit the non-singular reach of --some-- channel of integration related to T-channel diagram (value between -1 and 0), -1 is no impact %(survey_splitting)s = survey_splitting ! for loop-induced control how many core are used at survey for the computation of a single iteration. %(survey_nchannel_per_job)s = survey_nchannel_per_job ! control how many Channel are integrated inside a single job on cluster/multicore - %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) + %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) #********************************************************************* -# Compilation flag. No automatic re-compilation (need manual "make clean" in Source) +# Compilation flag. #********************************************************************* %(global_flag)s = global_flag ! fortran optimization flag use for the all code. %(aloha_flag)s = aloha_flag ! fortran optimization flag for aloha function. Suggestions: '-ffast-math' %(matrix_flag)s = matrix_flag ! fortran optimization flag for matrix.f function. Suggestions: '-O3' + %(vector_size)s = vector_size ! size designed for SIMD/OpenMP/GPU (number of events in lockstep) """ template_off = '# To see advanced option for Phase-Space optimization: type "update psoptim"' @@ -3926,9 +4059,12 @@ class RunCardLO(RunCard): "get_dummy_x1_x2": pjoin("SubProcesses","dummy_fct.f"), "dummy_boostframe": pjoin("SubProcesses","dummy_fct.f"), "user_dynamical_scale": pjoin("SubProcesses","dummy_fct.f"), + "bias_wgt_custom": pjoin("SubProcesses","dummy_fct.f"), "user_": pjoin("SubProcesses","dummy_fct.f") # all function starting by user will be added to that file } + include_as_parameter = ['vector.inc'] + if MG5DIR: default_run_card = pjoin(MG5DIR, "internal", "default_run_card_lo.dat") @@ -4162,10 +4298,15 @@ def default_setup(self): self.add_param('hel_splitamp', True, hidden=True, include=False, comment='decide if amplitude aloha call can be splitted in two or not when doing helicity per helicity optimization.') self.add_param('hel_zeroamp', True, hidden=True, include=False, comment='decide if zero amplitude can be removed from the computation when doing helicity per helicity optimization.') self.add_param('SDE_strategy', 1, allowed=[1,2], fortran_name="sde_strat", comment="decide how Multi-channel should behaves \"1\" means full single diagram enhanced (hep-ph/0208156), \"2\" use the product of the denominator") - self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check') - self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math') - self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3') - + self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check', + fct_mod=(self.make_clean, ('Source'),{})) + self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math', + fct_mod=(self.make_clean, ('Source/DHELAS'),{})) + self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3', + fct_mod=(self.make_Ptouch, ('matrix'),{})) + self.add_param('vector_size', 1, include='vector.inc', hidden=True, comment='lockstep size for parralelism run', + fortran_name='VECSIZE_MEMMAX', fct_mod=(self.reset_simd,(),{})) + # parameter allowing to define simple cut via the pdg # Special syntax are related to those. (can not be edit directly) self.add_param('pt_min_pdg',{'__type__':0.}, include=False, cut=True) @@ -4187,8 +4328,7 @@ def default_setup(self): self.add_param('mxxmin4pdg',[-1.], system=True) self.add_param('mxxpart_antipart', [False], system=True) - # CUDACPP parameters - self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + def check_validity(self): """ """ diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/check_param_card.py b/epochX/cudacpp/gg_ttggg.mad/bin/internal/check_param_card.py index fe874a06a4..71089d7480 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/internal/check_param_card.py +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/check_param_card.py @@ -85,7 +85,7 @@ def load_str(self, text): self.value= ' '.join(data[len(self.lhacode):]) # check that lhacode are the first entry otherwise return invalid param. if ' '.join([str(i) for i in self.lhacode]) != ' '.join(data[:len(self.lhacode)]): - raise InvalidParam + raise InvalidParam("line was %s" % str(data)) else: self.value = data[-1] diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/common_run_interface.py b/epochX/cudacpp/gg_ttggg.mad/bin/internal/common_run_interface.py index 5d0187e3fa..14c7f310dc 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/internal/common_run_interface.py +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/common_run_interface.py @@ -749,13 +749,15 @@ def writeRunWeb(me_dir): class RunWebHandling(object): - def __init__(self, me_dir, crashifpresent=True, warnifpresent=True): + def __init__(self, me_dir, crashifpresent=True, warnifpresent=True, force_run=False): """raise error if RunWeb already exists me_dir is the directory where the write RunWeb""" self.remove_run_web = True self.me_dir = me_dir - + if force_run: + self.remove_run_web = False + return if crashifpresent or warnifpresent: if os.path.exists(pjoin(me_dir, 'RunWeb')): pid = open(pjoin(me_dir, 'RunWeb')).read() @@ -6574,7 +6576,7 @@ def reask(self, *args, **opt): fail_due_to_format = 0 #parameter to avoid infinite loop def postcmd(self, stop, line): - if line not in [None, '0', 'done', '']: + if line not in [None, '0', 'done', '',0]: ending_question = cmd.OneLinePathCompletion.postcmd(self,stop,line) else: ending_question = True @@ -7533,7 +7535,8 @@ def open_file(self, answer): else: raise if time.time() - start < .5: - self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y') + self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y', + timeout=False) self.reload_card(path) def reload_card(self, path): diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/extended_cmd.py b/epochX/cudacpp/gg_ttggg.mad/bin/internal/extended_cmd.py index a6a8609dce..2f37070580 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/internal/extended_cmd.py +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/extended_cmd.py @@ -1108,9 +1108,12 @@ def ask(self, question, default, choices=[], path_msg=None, if alias: choices += list(alias.keys()) + + question_instance = obj(question, allow_arg=choices, default=default, mother_interface=self, **opt) - + if fct_timeout is None: + fct_timeout = lambda x: question_instance.postcmd(x, default) if x and default else False if first_cmd: if isinstance(first_cmd, str): question_instance.onecmd(first_cmd) @@ -2271,6 +2274,9 @@ def postcmd(self, stop, line): if n: self.default(line) return self.postcmd(stop, line) + elif self.value is None and line: + self.default(line) + return self.postcmd(stop, line) if not self.casesensitive: for ans in self.allow_arg: if ans.lower() == self.value.lower(): diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/gen_ximprove.py b/epochX/cudacpp/gg_ttggg.mad/bin/internal/gen_ximprove.py index 3b8ec31215..a88d60b282 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/internal/gen_ximprove.py +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/gen_ximprove.py @@ -154,10 +154,15 @@ def get_helicity(self, to_submit=True, clean=True): p = misc.Popen(['./gensym'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=Pdir) #sym_input = "%(points)d %(iterations)d %(accuracy)f \n" % self.opts + (stdout, _) = p.communicate(''.encode()) stdout = stdout.decode('ascii',errors='ignore') - nb_channel = max([math.floor(float(d)) for d in stdout.split()]) - + try: + nb_channel = max([math.floor(float(d)) for d in stdout.split()]) + except Exception as error: + misc.sprint(stdout, 'no channel or error for %s' % Pdir) + continue + self.cmd.compile(['madevent_forhel'], cwd=Pdir) if not os.path.exists(pjoin(Pdir, 'madevent_forhel')): raise Exception('Error make madevent_forhel not successful') diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/launch_plugin.py b/epochX/cudacpp/gg_ttggg.mad/bin/internal/launch_plugin.py new file mode 100644 index 0000000000..23271b846e --- /dev/null +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/launch_plugin.py @@ -0,0 +1,100 @@ + +import logging +import os +import subprocess +pjoin = os.path.join +logger = logging.getLogger('cmdprint') # for stdout + +try: + import madgraph +except ImportError: + import internal.madevent_interface as madevent_interface + import internal.misc as misc + import internal.extended_cmd as extended_cmd + import internal.banner as banner_mod +else: + import madgraph.interface.madevent_interface as madevent_interface + import madgraph.various.misc as misc + import madgraph.interface.extended_cmd as extended_cmd + import madgraph.various.banner as banner_mod + +class CPPMEInterface(madevent_interface.MadEventCmdShell): + + def compile(self, *args, **opts): + """ """ + + import multiprocessing + if not self.options['nb_core'] or self.options['nb_core'] == 'None': + self.options['nb_core'] = multiprocessing.cpu_count() + + if args and args[0][0] == 'madevent' and hasattr(self, 'run_card'): + import pathlib + import os + pjoin = os.path.join + + + + + cudacpp_backend = self.run_card['cudacpp_backend'].upper() # the default value is defined in banner.py + logger.info("Building madevent in madevent_interface.py with '%s' matrix elements"%cudacpp_backend) + if cudacpp_backend == 'FORTRAN': + args[0][0] = 'madevent_fortran_link' + elif cudacpp_backend == 'CPP': + args[0][0] = 'madevent_cpp_link' + elif cudacpp_backend == 'CUDA': + args[0][0] = 'madevent_cuda_link' + else: + raise Exception("Invalid cudacpp_backend='%s': only 'FORTRAN', 'CPP', 'CUDA' are supported") + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + else: + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + +class CPPRunCard(banner_mod.RunCardLO): + + def reset_simd(self, old_value, new_value, name): + if not hasattr(self, 'path'): + raise Exception + + if name == "vector_size" and new_value <= int(old_value): + # code can handle the new size -> do not recompile + return + + Sourcedir = pjoin(os.path.dirname(os.path.dirname(self.path)), 'Source') + subprocess.call(['make', 'cleanavx'], cwd=Sourcedir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + def plugin_input(self, finput): + return + + def default_setup(self): + super().default_setup() + self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + + + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + if incname == "vector.inc" and 'vector_size' not in self.user_set: + return + super().write_one_include_file(output_dir, incname, output_file) + + + def check_validity(self): + """ensure that PLUGIN information are consistent""" + + super().check_validity() + + if self['SDE_strategy'] != 1: + logger.warning('SDE_strategy different of 1 is not supported with SMD/GPU mode') + self['sde_strategy'] = 1 + + if self['hel_recycling']: + self['hel_recycling'] = False + +class GPURunCard(CPPRunCard): + + def default_setup(self): + super(CPPRunCard, self).default_setup() + self.add_param('cudacpp_backend', 'CUDA', include=False, hidden=False) + +MEINTERFACE = CPPMEInterface +RunCard = CPPRunCard diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/madevent_interface.py b/epochX/cudacpp/gg_ttggg.mad/bin/internal/madevent_interface.py index 920e07a926..d722702891 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/internal/madevent_interface.py +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/madevent_interface.py @@ -3796,9 +3796,11 @@ def do_combine_events(self, line): if self.run_card['bias_module'].lower() not in ['dummy', 'none'] and nb_event: self.correct_bias() - + elif self.run_card['custom_fcts']: + self.correct_bias() + logger.info("combine events done in %s", time.time()-start) - + self.to_store.append('event') diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot new file mode 100755 index 0000000000..7deee7ac88 --- /dev/null +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_unweighted_events.lhe.gz ]];then + gunzip -c ${run}_unweighted_events.lhe.gz > unweighted_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e unweighted_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir $run + cd $run + echo "../unweighted_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl $run parton + mv plots.html ${run}_plots.html +fi + diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_delphes b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_delphes new file mode 100755 index 0000000000..975f410d0e --- /dev/null +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_delphes @@ -0,0 +1,46 @@ +#!/bin/bash +# +# This runs MadAnalysis on the delphes_events.lhco +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_delphes_events.lhco.gz ]];then + gunzip -c ${run}_delphes_events.lhco.gz > delphes_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e delphes_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_delphes + cd ${run}_delphes + echo "../delphes_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_delphes Delphes + mv plots.html ${run}_plots_delphes.html +fi diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pgs b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pgs new file mode 100755 index 0000000000..e7a36ef344 --- /dev/null +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pgs @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_pgs_events.lhco.gz ]];then + gunzip -c ${run}_pgs_events.lhco.gz > pgs_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e pgs_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pgs + cd ${run}_pgs + echo "../pgs_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pgs PGS + mv plots.html ${run}_plots_pgs.html +fi + diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pythia b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pythia new file mode 100755 index 0000000000..532bfb4b7b --- /dev/null +++ b/epochX/cudacpp/gg_ttggg.mad/bin/internal/run_plot_pythia @@ -0,0 +1,50 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin/internal + +if [[ $run != "" && -e ${run}_pythia_events.lhe.gz ]];then + gunzip -c ${run}_pythia_events.lhe.gz > pythia_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e pythia_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pythia + cd ${run}_pythia + echo "../pythia_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pythia Pythia + mv plots.html ${run}_plots_pythia.html + $dirbin/gen_crossxhtml-pl $run +else + echo "Not creating plots" +fi + diff --git a/epochX/cudacpp/gg_ttggg.mad/bin/madevent b/epochX/cudacpp/gg_ttggg.mad/bin/madevent index c944aa1faf..dff9711b73 100755 --- a/epochX/cudacpp/gg_ttggg.mad/bin/madevent +++ b/epochX/cudacpp/gg_ttggg.mad/bin/madevent @@ -32,6 +32,7 @@ except ImportError: import os +pjoin = os.path.join import optparse # Get the directory of the script real path (bin) @@ -160,13 +161,30 @@ except: pass import internal.madevent_interface as cmd_interface +# check for plugin customization of the launch command +launch_interface = cmd_interface.MadEventCmdShell +if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + +#Source use this executable for compilation always allow it +force_run = False +if (args and args[0] == 'treatcards'): + force_run=True + # Call the cmd interface main loop try: if '-h' in args or '--help' in args: - launch = ME.MadEventCmdShell(me_dir=os.path.dirname(root_path), force_run=True) + launch = launch_interface(me_dir=os.path.dirname(root_path), force_run=True) launch.exec_cmd('help generate_events') sys.exit(0) - with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), ): + with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), force_run=force_run): if (args and os.path.isfile(args[0])): # They are an input file input_file = args[0] @@ -178,7 +196,7 @@ try: cmd_line.run_cmd('import command ' + input_file) cmd_line.run_cmd('quit') else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) cmd_line.use_rawinput = False cmd_line.haspiping = False cmd_line.run_cmd('import command ' + input_file) @@ -188,7 +206,7 @@ try: if options.web: cmd_line = cmd_interface.MadEventCmd(force_run=True) else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) if not hasattr(cmd_line, 'do_%s' % args[0]): if parser_error: print( parser_error) diff --git a/epochX/cudacpp/gg_ttggg.mad/src/HelAmps_sm.h b/epochX/cudacpp/gg_ttggg.mad/src/HelAmps_sm.h index 9cea8bcbe7..9b946c21e1 100644 --- a/epochX/cudacpp/gg_ttggg.mad/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_ttggg.mad/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -908,6 +912,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -920,6 +925,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -934,6 +940,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -945,6 +952,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -959,6 +967,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -970,6 +979,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -984,6 +994,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -995,6 +1006,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -1008,6 +1020,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1042,6 +1055,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1080,6 +1094,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1103,6 +1118,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1134,6 +1150,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1165,6 +1182,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1197,6 +1215,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1225,6 +1244,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1260,6 +1280,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1288,6 +1309,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1323,6 +1345,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1351,6 +1374,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) diff --git a/epochX/cudacpp/gg_ttggg.mad/src/cudacpp_src.mk b/epochX/cudacpp/gg_ttggg.mad/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gg_ttggg.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_ttggg.mad/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gg_ttggg.sa/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gg_ttggg.sa/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gg_ttggg.sa/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gg_ttggg.sa/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gg_ttggg.sa/SubProcesses/P1_Sigma_sm_gg_ttxggg/CPPProcess.cc b/epochX/cudacpp/gg_ttggg.sa/SubProcesses/P1_Sigma_sm_gg_ttxggg/CPPProcess.cc index 36675814b4..f8f15a6103 100644 --- a/epochX/cudacpp/gg_ttggg.sa/SubProcesses/P1_Sigma_sm_gg_ttxggg/CPPProcess.cc +++ b/epochX/cudacpp/gg_ttggg.sa/SubProcesses/P1_Sigma_sm_gg_ttxggg/CPPProcess.cc @@ -252,13 +252,13 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][6], +1, w_fp[6], 6 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[7] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); - VVV1P0_1( w_fp[7], w_fp[4], COUPs[0], 0., 0., w_fp[9] ); - VVV1P0_1( w_fp[8], w_fp[5], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[7] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[7], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[9] ); + VVV1P0_1( w_fp[8], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 1 - VVV1_0( w_fp[9], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -282,10 +282,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 1240 *** // Wavefunction(s) for diagram number 2 - VVV1P0_1( w_fp[8], w_fp[6], COUPs[0], 0., 0., w_fp[11] ); + VVV1P0_1( w_fp[8], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 2 - VVV1_0( w_fp[9], w_fp[11], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[11], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -312,7 +312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 3 - VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -332,7 +332,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -352,7 +352,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[9], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -376,11 +376,11 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 1240 *** // Wavefunction(s) for diagram number 4 - VVV1P0_1( w_fp[7], w_fp[5], COUPs[0], 0., 0., w_fp[12] ); - VVV1P0_1( w_fp[8], w_fp[4], COUPs[0], 0., 0., w_fp[13] ); + VVV1P0_1( w_fp[7], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[12] ); + VVV1P0_1( w_fp[8], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[13] ); // Amplitude(s) for diagram number 4 - VVV1_0( w_fp[12], w_fp[13], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[13], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -407,7 +407,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 5 - VVV1_0( w_fp[12], w_fp[11], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[11], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -434,7 +434,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -454,7 +454,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -474,7 +474,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[12], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -498,10 +498,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 1240 *** // Wavefunction(s) for diagram number 7 - VVV1P0_1( w_fp[7], w_fp[6], COUPs[0], 0., 0., w_fp[14] ); + VVV1P0_1( w_fp[7], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[14] ); // Amplitude(s) for diagram number 7 - VVV1_0( w_fp[14], w_fp[13], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[13], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -528,7 +528,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - VVV1_0( w_fp[14], w_fp[10], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[10], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -555,7 +555,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -575,7 +575,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[97] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -595,7 +595,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[14], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -619,12 +619,12 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 1240 *** // Wavefunction(s) for diagram number 10 - VVVV1P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[15] ); - VVVV3P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[16] ); - VVVV4P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[17] ); + VVVV1P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[15] ); + VVVV3P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[16] ); + VVVV4P0_1( w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[17] ); // Amplitude(s) for diagram number 10 - VVV1_0( w_fp[8], w_fp[6], w_fp[15], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[15], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -644,7 +644,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -664,7 +664,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -688,12 +688,12 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 1240 *** // Wavefunction(s) for diagram number 11 - VVVV1P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[18] ); - VVVV3P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[19] ); - VVVV4P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[20] ); + VVVV1P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[18] ); + VVVV3P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[19] ); + VVVV4P0_1( w_fp[7], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[20] ); // Amplitude(s) for diagram number 11 - VVV1_0( w_fp[8], w_fp[5], w_fp[18], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[18], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -713,7 +713,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[108] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -733,7 +733,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -757,12 +757,12 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 1240 *** // Wavefunction(s) for diagram number 12 - VVVV1P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[22] ); - VVVV4P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[23] ); + VVVV1P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[22] ); + VVVV4P0_1( w_fp[7], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 12 - VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -782,7 +782,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -802,7 +802,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[97] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -826,10 +826,10 @@ namespace mg5amcCpu // *** DIAGRAM 13 OF 1240 *** // Wavefunction(s) for diagram number 13 - VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 0., 0., w_fp[24] ); + VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 13 - VVVV1_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -849,7 +849,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -869,7 +869,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[7], w_fp[8], w_fp[24], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -893,10 +893,10 @@ namespace mg5amcCpu // *** DIAGRAM 14 OF 1240 *** // Wavefunction(s) for diagram number 14 - VVV1P0_1( w_fp[7], w_fp[8], COUPs[0], 0., 0., w_fp[25] ); + VVV1P0_1( w_fp[7], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[25] ); // Amplitude(s) for diagram number 14 - VVV1_0( w_fp[24], w_fp[6], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -920,10 +920,10 @@ namespace mg5amcCpu // *** DIAGRAM 15 OF 1240 *** // Wavefunction(s) for diagram number 15 - VVV1P0_1( w_fp[7], w_fp[24], COUPs[0], 0., 0., w_fp[26] ); + VVV1P0_1( w_fp[7], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[26] ); // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[8], w_fp[6], w_fp[26], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[26], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -950,7 +950,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 16 - VVV1_0( w_fp[8], w_fp[24], w_fp[14], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[24], w_fp[14], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -974,10 +974,10 @@ namespace mg5amcCpu // *** DIAGRAM 17 OF 1240 *** // Wavefunction(s) for diagram number 17 - VVV1P0_1( w_fp[4], w_fp[6], COUPs[0], 0., 0., w_fp[27] ); + VVV1P0_1( w_fp[4], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[27] ); // Amplitude(s) for diagram number 17 - VVVV1_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -997,7 +997,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; - VVVV3_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1017,7 +1017,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[108] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVVV4_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[7], w_fp[8], w_fp[27], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1044,7 +1044,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 18 - VVV1_0( w_fp[27], w_fp[5], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1068,10 +1068,10 @@ namespace mg5amcCpu // *** DIAGRAM 19 OF 1240 *** // Wavefunction(s) for diagram number 19 - VVV1P0_1( w_fp[7], w_fp[27], COUPs[0], 0., 0., w_fp[28] ); + VVV1P0_1( w_fp[7], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[28] ); // Amplitude(s) for diagram number 19 - VVV1_0( w_fp[8], w_fp[5], w_fp[28], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[28], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1098,7 +1098,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[8], w_fp[27], w_fp[12], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[27], w_fp[12], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1122,10 +1122,10 @@ namespace mg5amcCpu // *** DIAGRAM 21 OF 1240 *** // Wavefunction(s) for diagram number 21 - VVV1P0_1( w_fp[5], w_fp[6], COUPs[0], 0., 0., w_fp[29] ); + VVV1P0_1( w_fp[5], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[29] ); // Amplitude(s) for diagram number 21 - VVVV1_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1145,7 +1145,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1165,7 +1165,7 @@ namespace mg5amcCpu jamp_sv[116] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[7], w_fp[8], w_fp[4], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1192,7 +1192,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - VVV1_0( w_fp[4], w_fp[29], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1219,7 +1219,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 23 - VVV1_0( w_fp[8], w_fp[29], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[29], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1243,10 +1243,10 @@ namespace mg5amcCpu // *** DIAGRAM 24 OF 1240 *** // Wavefunction(s) for diagram number 24 - VVV1P0_1( w_fp[7], w_fp[29], COUPs[0], 0., 0., w_fp[25] ); + VVV1P0_1( w_fp[7], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[25] ); // Amplitude(s) for diagram number 24 - VVV1_0( w_fp[8], w_fp[4], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1270,12 +1270,12 @@ namespace mg5amcCpu // *** DIAGRAM 25 OF 1240 *** // Wavefunction(s) for diagram number 25 - VVVV1P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[30] ); - VVVV3P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[31] ); - VVVV4P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[32] ); + VVVV1P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[30] ); + VVVV3P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[31] ); + VVVV4P0_1( w_fp[4], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[32] ); // Amplitude(s) for diagram number 25 - VVV1_0( w_fp[7], w_fp[8], w_fp[30], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[8], w_fp[30], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1295,7 +1295,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[7], w_fp[8], w_fp[31], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[8], w_fp[31], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1315,7 +1315,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[7], w_fp[8], w_fp[32], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[8], w_fp[32], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1339,12 +1339,12 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 1240 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[33] ); - FFV1_2( w_fp[3], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[34] ); - FFV1_1( w_fp[33], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[35] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[33] ); + FFV1_2( w_fp[3], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[34] ); + FFV1_1( w_fp[33], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[35] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[34], w_fp[35], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[35], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1354,10 +1354,10 @@ namespace mg5amcCpu // *** DIAGRAM 27 OF 1240 *** // Wavefunction(s) for diagram number 27 - FFV1_1( w_fp[33], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[36] ); + FFV1_1( w_fp[33], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[36] ); // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[34], w_fp[36], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[36], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1367,10 +1367,10 @@ namespace mg5amcCpu // *** DIAGRAM 28 OF 1240 *** // Wavefunction(s) for diagram number 28 - FFV1P0_3( w_fp[3], w_fp[33], COUPs[1], 0., 0., w_fp[37] ); + FFV1P0_3( w_fp[3], w_fp[33], COUPs[1], 1.0, 0., 0., w_fp[37] ); // Amplitude(s) for diagram number 28 - VVV1_0( w_fp[12], w_fp[37], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[37], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1389,7 +1389,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[3], w_fp[36], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[36], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1404,7 +1404,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 30 - VVV1_0( w_fp[14], w_fp[37], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[37], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1423,7 +1423,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 31 - FFV1_0( w_fp[3], w_fp[35], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[35], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1438,7 +1438,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1450,7 +1450,7 @@ namespace mg5amcCpu jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1462,7 +1462,7 @@ namespace mg5amcCpu jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1478,11 +1478,11 @@ namespace mg5amcCpu // *** DIAGRAM 33 OF 1240 *** // Wavefunction(s) for diagram number 33 - FFV1_2( w_fp[3], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[38] ); - FFV1_1( w_fp[33], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[39] ); + FFV1_2( w_fp[3], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[38] ); + FFV1_1( w_fp[33], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[39] ); // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[38], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1492,10 +1492,10 @@ namespace mg5amcCpu // *** DIAGRAM 34 OF 1240 *** // Wavefunction(s) for diagram number 34 - FFV1_2( w_fp[38], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[40] ); + FFV1_2( w_fp[38], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[40] ); // Amplitude(s) for diagram number 34 - FFV1_0( w_fp[40], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1508,7 +1508,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - FFV1_0( w_fp[38], w_fp[33], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1520,10 +1520,10 @@ namespace mg5amcCpu // *** DIAGRAM 36 OF 1240 *** // Wavefunction(s) for diagram number 36 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[41] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[41] ); // Amplitude(s) for diagram number 36 - FFV1_0( w_fp[41], w_fp[39], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1533,10 +1533,10 @@ namespace mg5amcCpu // *** DIAGRAM 37 OF 1240 *** // Wavefunction(s) for diagram number 37 - FFV1_2( w_fp[41], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[42] ); + FFV1_2( w_fp[41], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[42] ); // Amplitude(s) for diagram number 37 - FFV1_0( w_fp[42], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[42], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1549,7 +1549,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 38 - FFV1_0( w_fp[41], w_fp[33], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1564,7 +1564,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 39 - FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1579,7 +1579,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 40 - FFV1_0( w_fp[34], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1594,7 +1594,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 41 - FFV1_0( w_fp[3], w_fp[33], w_fp[25], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[25], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1610,11 +1610,11 @@ namespace mg5amcCpu // *** DIAGRAM 42 OF 1240 *** // Wavefunction(s) for diagram number 42 - FFV1_1( w_fp[2], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[39] ); - FFV1_1( w_fp[39], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[43] ); + FFV1_1( w_fp[2], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[39] ); + FFV1_1( w_fp[39], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[43] ); // Amplitude(s) for diagram number 42 - FFV1_0( w_fp[34], w_fp[43], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[43], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1624,10 +1624,10 @@ namespace mg5amcCpu // *** DIAGRAM 43 OF 1240 *** // Wavefunction(s) for diagram number 43 - FFV1_1( w_fp[39], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[44] ); + FFV1_1( w_fp[39], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[44] ); // Amplitude(s) for diagram number 43 - FFV1_0( w_fp[34], w_fp[44], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[44], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1637,10 +1637,10 @@ namespace mg5amcCpu // *** DIAGRAM 44 OF 1240 *** // Wavefunction(s) for diagram number 44 - FFV1P0_3( w_fp[3], w_fp[39], COUPs[1], 0., 0., w_fp[45] ); + FFV1P0_3( w_fp[3], w_fp[39], COUPs[1], 1.0, 0., 0., w_fp[45] ); // Amplitude(s) for diagram number 44 - VVV1_0( w_fp[9], w_fp[45], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[45], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1659,7 +1659,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 45 - FFV1_0( w_fp[3], w_fp[44], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[44], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1674,7 +1674,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 46 - VVV1_0( w_fp[14], w_fp[45], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[45], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1693,7 +1693,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 47 - FFV1_0( w_fp[3], w_fp[43], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[43], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1708,7 +1708,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 48 - FFV1_0( w_fp[3], w_fp[39], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1720,7 +1720,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1732,7 +1732,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1748,11 +1748,11 @@ namespace mg5amcCpu // *** DIAGRAM 49 OF 1240 *** // Wavefunction(s) for diagram number 49 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[46] ); - FFV1_1( w_fp[39], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[47] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[46] ); + FFV1_1( w_fp[39], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[47] ); // Amplitude(s) for diagram number 49 - FFV1_0( w_fp[46], w_fp[47], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1762,10 +1762,10 @@ namespace mg5amcCpu // *** DIAGRAM 50 OF 1240 *** // Wavefunction(s) for diagram number 50 - FFV1_2( w_fp[46], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[48] ); + FFV1_2( w_fp[46], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[48] ); // Amplitude(s) for diagram number 50 - FFV1_0( w_fp[48], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1778,7 +1778,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 51 - FFV1_0( w_fp[46], w_fp[39], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1793,7 +1793,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 52 - FFV1_0( w_fp[41], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1806,7 +1806,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 53 - FFV1_0( w_fp[42], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[42], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1819,7 +1819,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 54 - FFV1_0( w_fp[41], w_fp[39], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1834,7 +1834,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 55 - FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1849,7 +1849,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 56 - FFV1_0( w_fp[34], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1864,7 +1864,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 57 - FFV1_0( w_fp[3], w_fp[39], w_fp[28], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[28], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1880,11 +1880,11 @@ namespace mg5amcCpu // *** DIAGRAM 58 OF 1240 *** // Wavefunction(s) for diagram number 58 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[47] ); - FFV1_1( w_fp[47], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[49] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[47] ); + FFV1_1( w_fp[47], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[49] ); // Amplitude(s) for diagram number 58 - FFV1_0( w_fp[34], w_fp[49], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[49], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1894,10 +1894,10 @@ namespace mg5amcCpu // *** DIAGRAM 59 OF 1240 *** // Wavefunction(s) for diagram number 59 - FFV1_1( w_fp[47], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[50] ); + FFV1_1( w_fp[47], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[50] ); // Amplitude(s) for diagram number 59 - FFV1_0( w_fp[34], w_fp[50], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[50], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1907,10 +1907,10 @@ namespace mg5amcCpu // *** DIAGRAM 60 OF 1240 *** // Wavefunction(s) for diagram number 60 - FFV1P0_3( w_fp[3], w_fp[47], COUPs[1], 0., 0., w_fp[51] ); + FFV1P0_3( w_fp[3], w_fp[47], COUPs[1], 1.0, 0., 0., w_fp[51] ); // Amplitude(s) for diagram number 60 - VVV1_0( w_fp[9], w_fp[51], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[51], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1929,7 +1929,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 61 - FFV1_0( w_fp[3], w_fp[50], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[50], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1944,7 +1944,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 62 - VVV1_0( w_fp[12], w_fp[51], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[51], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1963,7 +1963,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 63 - FFV1_0( w_fp[3], w_fp[49], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[49], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1978,7 +1978,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 64 - FFV1_0( w_fp[3], w_fp[47], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[15], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -1990,7 +1990,7 @@ namespace mg5amcCpu jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2002,7 +2002,7 @@ namespace mg5amcCpu jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2018,10 +2018,10 @@ namespace mg5amcCpu // *** DIAGRAM 65 OF 1240 *** // Wavefunction(s) for diagram number 65 - FFV1_1( w_fp[47], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[52] ); + FFV1_1( w_fp[47], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[52] ); // Amplitude(s) for diagram number 65 - FFV1_0( w_fp[46], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2034,7 +2034,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 66 - FFV1_0( w_fp[48], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2047,7 +2047,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 67 - FFV1_0( w_fp[46], w_fp[47], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2062,7 +2062,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 68 - FFV1_0( w_fp[38], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2075,7 +2075,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 69 - FFV1_0( w_fp[40], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2088,7 +2088,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 70 - FFV1_0( w_fp[38], w_fp[47], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2103,7 +2103,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 71 - FFV1_0( w_fp[3], w_fp[52], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2118,7 +2118,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 72 - FFV1_0( w_fp[34], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2133,7 +2133,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 73 - FFV1_0( w_fp[3], w_fp[47], w_fp[26], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[26], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2149,11 +2149,11 @@ namespace mg5amcCpu // *** DIAGRAM 74 OF 1240 *** // Wavefunction(s) for diagram number 74 - FFV1_1( w_fp[2], w_fp[7], COUPs[1], cIPD[0], cIPD[1], w_fp[52] ); - FFV1_2( w_fp[46], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[7] ); + FFV1_1( w_fp[2], w_fp[7], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[52] ); + FFV1_2( w_fp[46], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[7] ); // Amplitude(s) for diagram number 74 - FFV1_0( w_fp[7], w_fp[52], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[52], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2163,10 +2163,10 @@ namespace mg5amcCpu // *** DIAGRAM 75 OF 1240 *** // Wavefunction(s) for diagram number 75 - FFV1_2( w_fp[46], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[53] ); + FFV1_2( w_fp[46], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[53] ); // Amplitude(s) for diagram number 75 - FFV1_0( w_fp[53], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2176,10 +2176,10 @@ namespace mg5amcCpu // *** DIAGRAM 76 OF 1240 *** // Wavefunction(s) for diagram number 76 - FFV1P0_3( w_fp[46], w_fp[2], COUPs[1], 0., 0., w_fp[54] ); + FFV1P0_3( w_fp[46], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[54] ); // Amplitude(s) for diagram number 76 - VVV1_0( w_fp[12], w_fp[54], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[54], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2198,7 +2198,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 77 - FFV1_0( w_fp[53], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2213,7 +2213,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 78 - VVV1_0( w_fp[14], w_fp[54], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[54], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2232,7 +2232,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 79 - FFV1_0( w_fp[7], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2247,7 +2247,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 80 - FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2259,7 +2259,7 @@ namespace mg5amcCpu jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2271,7 +2271,7 @@ namespace mg5amcCpu jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2290,7 +2290,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 81 - FFV1_0( w_fp[46], w_fp[52], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[52], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2305,7 +2305,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 82 - FFV1_0( w_fp[48], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2320,7 +2320,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 83 - FFV1_0( w_fp[46], w_fp[2], w_fp[25], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[25], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2336,10 +2336,10 @@ namespace mg5amcCpu // *** DIAGRAM 84 OF 1240 *** // Wavefunction(s) for diagram number 84 - FFV1_2( w_fp[38], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[25] ); + FFV1_2( w_fp[38], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[25] ); // Amplitude(s) for diagram number 84 - FFV1_0( w_fp[25], w_fp[52], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[52], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2349,10 +2349,10 @@ namespace mg5amcCpu // *** DIAGRAM 85 OF 1240 *** // Wavefunction(s) for diagram number 85 - FFV1_2( w_fp[38], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[48] ); + FFV1_2( w_fp[38], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[48] ); // Amplitude(s) for diagram number 85 - FFV1_0( w_fp[48], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2362,10 +2362,10 @@ namespace mg5amcCpu // *** DIAGRAM 86 OF 1240 *** // Wavefunction(s) for diagram number 86 - FFV1P0_3( w_fp[38], w_fp[2], COUPs[1], 0., 0., w_fp[23] ); + FFV1P0_3( w_fp[38], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 86 - VVV1_0( w_fp[9], w_fp[23], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[23], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2384,7 +2384,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 87 - FFV1_0( w_fp[48], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2399,7 +2399,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 88 - VVV1_0( w_fp[14], w_fp[23], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[14], w_fp[23], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2418,7 +2418,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 89 - FFV1_0( w_fp[25], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2433,7 +2433,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 90 - FFV1_0( w_fp[38], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2445,7 +2445,7 @@ namespace mg5amcCpu jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2457,7 +2457,7 @@ namespace mg5amcCpu jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2476,7 +2476,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 91 - FFV1_0( w_fp[38], w_fp[52], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[52], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2491,7 +2491,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 92 - FFV1_0( w_fp[40], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2506,7 +2506,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 93 - FFV1_0( w_fp[38], w_fp[2], w_fp[28], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[28], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2522,10 +2522,10 @@ namespace mg5amcCpu // *** DIAGRAM 94 OF 1240 *** // Wavefunction(s) for diagram number 94 - FFV1_2( w_fp[41], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[28] ); + FFV1_2( w_fp[41], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[28] ); // Amplitude(s) for diagram number 94 - FFV1_0( w_fp[28], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2535,10 +2535,10 @@ namespace mg5amcCpu // *** DIAGRAM 95 OF 1240 *** // Wavefunction(s) for diagram number 95 - FFV1_2( w_fp[41], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[40] ); + FFV1_2( w_fp[41], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[40] ); // Amplitude(s) for diagram number 95 - FFV1_0( w_fp[40], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2548,10 +2548,10 @@ namespace mg5amcCpu // *** DIAGRAM 96 OF 1240 *** // Wavefunction(s) for diagram number 96 - FFV1P0_3( w_fp[41], w_fp[2], COUPs[1], 0., 0., w_fp[20] ); + FFV1P0_3( w_fp[41], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[20] ); // Amplitude(s) for diagram number 96 - VVV1_0( w_fp[9], w_fp[20], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[20], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2570,7 +2570,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 97 - FFV1_0( w_fp[40], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2585,7 +2585,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 98 - VVV1_0( w_fp[12], w_fp[20], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[20], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2604,7 +2604,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 99 - FFV1_0( w_fp[28], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2619,7 +2619,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 100 - FFV1_0( w_fp[41], w_fp[2], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[15], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2631,7 +2631,7 @@ namespace mg5amcCpu jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2643,7 +2643,7 @@ namespace mg5amcCpu jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2662,7 +2662,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 101 - FFV1_0( w_fp[41], w_fp[52], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[52], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2677,7 +2677,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 102 - FFV1_0( w_fp[42], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[42], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2692,7 +2692,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 103 - FFV1_0( w_fp[41], w_fp[2], w_fp[26], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[26], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2708,10 +2708,10 @@ namespace mg5amcCpu // *** DIAGRAM 104 OF 1240 *** // Wavefunction(s) for diagram number 104 - FFV1_2( w_fp[3], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[26] ); + FFV1_2( w_fp[3], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[26] ); // Amplitude(s) for diagram number 104 - FFV1_0( w_fp[26], w_fp[52], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[52], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2723,10 +2723,10 @@ namespace mg5amcCpu // *** DIAGRAM 105 OF 1240 *** // Wavefunction(s) for diagram number 105 - VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 0., 0., w_fp[42] ); + VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[42] ); // Amplitude(s) for diagram number 105 - FFV1_0( w_fp[3], w_fp[52], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2742,10 +2742,10 @@ namespace mg5amcCpu // *** DIAGRAM 106 OF 1240 *** // Wavefunction(s) for diagram number 106 - FFV1_1( w_fp[2], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[17] ); + FFV1_1( w_fp[2], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[17] ); // Amplitude(s) for diagram number 106 - FFV1_0( w_fp[34], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2760,7 +2760,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 107 - FFV1_0( w_fp[34], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2779,7 +2779,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 108 - FFV1_0( w_fp[3], w_fp[17], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2798,7 +2798,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 109 - FFV1_0( w_fp[26], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2814,10 +2814,10 @@ namespace mg5amcCpu // *** DIAGRAM 110 OF 1240 *** // Wavefunction(s) for diagram number 110 - FFV1_2( w_fp[3], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_2( w_fp[3], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 110 - FFV1_0( w_fp[14], w_fp[52], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[52], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2829,10 +2829,10 @@ namespace mg5amcCpu // *** DIAGRAM 111 OF 1240 *** // Wavefunction(s) for diagram number 111 - VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[16] ); // Amplitude(s) for diagram number 111 - FFV1_0( w_fp[3], w_fp[52], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2848,10 +2848,10 @@ namespace mg5amcCpu // *** DIAGRAM 112 OF 1240 *** // Wavefunction(s) for diagram number 112 - FFV1_1( w_fp[2], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[15] ); + FFV1_1( w_fp[2], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[15] ); // Amplitude(s) for diagram number 112 - FFV1_0( w_fp[34], w_fp[15], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[15], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2866,7 +2866,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 113 - FFV1_0( w_fp[34], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2885,7 +2885,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 114 - FFV1_0( w_fp[3], w_fp[15], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[15], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2904,7 +2904,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 115 - FFV1_0( w_fp[14], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2920,10 +2920,10 @@ namespace mg5amcCpu // *** DIAGRAM 116 OF 1240 *** // Wavefunction(s) for diagram number 116 - FFV1_2( w_fp[3], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[3], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 116 - FFV1_0( w_fp[12], w_fp[52], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[52], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2935,10 +2935,10 @@ namespace mg5amcCpu // *** DIAGRAM 117 OF 1240 *** // Wavefunction(s) for diagram number 117 - VVV1P0_1( w_fp[4], w_fp[29], COUPs[0], 0., 0., w_fp[19] ); + VVV1P0_1( w_fp[4], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[19] ); // Amplitude(s) for diagram number 117 - FFV1_0( w_fp[3], w_fp[52], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2954,10 +2954,10 @@ namespace mg5amcCpu // *** DIAGRAM 118 OF 1240 *** // Wavefunction(s) for diagram number 118 - FFV1_1( w_fp[2], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[18] ); + FFV1_1( w_fp[2], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[18] ); // Amplitude(s) for diagram number 118 - FFV1_0( w_fp[34], w_fp[18], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[18], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2972,7 +2972,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 119 - FFV1_0( w_fp[34], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -2991,7 +2991,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 120 - FFV1_0( w_fp[3], w_fp[18], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[18], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3010,7 +3010,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 121 - FFV1_0( w_fp[12], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3029,7 +3029,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 122 - FFV1_0( w_fp[3], w_fp[52], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3041,7 +3041,7 @@ namespace mg5amcCpu jamp_sv[25] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[29] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[52], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3053,7 +3053,7 @@ namespace mg5amcCpu jamp_sv[26] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[27] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[28] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[52], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[52], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3072,7 +3072,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 123 - FFV1_0( w_fp[34], w_fp[2], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3084,7 +3084,7 @@ namespace mg5amcCpu jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3096,7 +3096,7 @@ namespace mg5amcCpu jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3112,13 +3112,13 @@ namespace mg5amcCpu // *** DIAGRAM 124 OF 1240 *** // Wavefunction(s) for diagram number 124 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[34] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[52] ); - FFV1_1( w_fp[34], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[52], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[34] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[52] ); + FFV1_1( w_fp[34], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[52], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 124 - FFV1_0( w_fp[22], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3127,10 +3127,10 @@ namespace mg5amcCpu // *** DIAGRAM 125 OF 1240 *** // Wavefunction(s) for diagram number 125 - FFV1_2( w_fp[52], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[52], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 125 - FFV1_0( w_fp[21], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3139,11 +3139,11 @@ namespace mg5amcCpu // *** DIAGRAM 126 OF 1240 *** // Wavefunction(s) for diagram number 126 - FFV1_1( w_fp[34], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[55] ); - FFV1_2( w_fp[52], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[56] ); + FFV1_1( w_fp[34], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[55] ); + FFV1_2( w_fp[52], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[56] ); // Amplitude(s) for diagram number 126 - FFV1_0( w_fp[56], w_fp[55], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[55], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3155,7 +3155,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 127 - FFV1_0( w_fp[21], w_fp[55], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[55], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3164,10 +3164,10 @@ namespace mg5amcCpu // *** DIAGRAM 128 OF 1240 *** // Wavefunction(s) for diagram number 128 - FFV1_1( w_fp[34], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[57] ); + FFV1_1( w_fp[34], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[57] ); // Amplitude(s) for diagram number 128 - FFV1_0( w_fp[56], w_fp[57], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[57], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3179,7 +3179,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 129 - FFV1_0( w_fp[22], w_fp[57], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[57], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3188,10 +3188,10 @@ namespace mg5amcCpu // *** DIAGRAM 130 OF 1240 *** // Wavefunction(s) for diagram number 130 - FFV1P0_3( w_fp[52], w_fp[34], COUPs[1], 0., 0., w_fp[58] ); + FFV1P0_3( w_fp[52], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[58] ); // Amplitude(s) for diagram number 130 - VVV1_0( w_fp[24], w_fp[6], w_fp[58], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[58], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3203,10 +3203,10 @@ namespace mg5amcCpu // *** DIAGRAM 131 OF 1240 *** // Wavefunction(s) for diagram number 131 - FFV1_1( w_fp[34], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[59] ); + FFV1_1( w_fp[34], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[59] ); // Amplitude(s) for diagram number 131 - FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3219,7 +3219,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 132 - FFV1_0( w_fp[52], w_fp[57], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[57], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3232,7 +3232,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 133 - VVV1_0( w_fp[27], w_fp[5], w_fp[58], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[58], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3244,10 +3244,10 @@ namespace mg5amcCpu // *** DIAGRAM 134 OF 1240 *** // Wavefunction(s) for diagram number 134 - FFV1_1( w_fp[34], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); + FFV1_1( w_fp[34], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); // Amplitude(s) for diagram number 134 - FFV1_0( w_fp[52], w_fp[60], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[60], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3260,7 +3260,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 135 - FFV1_0( w_fp[52], w_fp[55], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[55], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3273,7 +3273,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 136 - VVV1_0( w_fp[4], w_fp[29], w_fp[58], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[58], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3288,7 +3288,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 137 - FFV1_0( w_fp[52], w_fp[9], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[9], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3298,10 +3298,10 @@ namespace mg5amcCpu // *** DIAGRAM 138 OF 1240 *** // Wavefunction(s) for diagram number 138 - FFV1_1( w_fp[34], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[58] ); + FFV1_1( w_fp[34], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[58] ); // Amplitude(s) for diagram number 138 - FFV1_0( w_fp[52], w_fp[58], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[58], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3314,7 +3314,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 139 - FFV1_0( w_fp[52], w_fp[34], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[34], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3322,7 +3322,7 @@ namespace mg5amcCpu jamp_sv[11] -= amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[34], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[34], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3330,7 +3330,7 @@ namespace mg5amcCpu jamp_sv[15] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[34], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[34], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3342,12 +3342,12 @@ namespace mg5amcCpu // *** DIAGRAM 140 OF 1240 *** // Wavefunction(s) for diagram number 140 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[61] ); - FFV1P0_3( w_fp[3], w_fp[34], COUPs[1], 0., 0., w_fp[62] ); - VVV1P0_1( w_fp[61], w_fp[5], COUPs[0], 0., 0., w_fp[63] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[61] ); + FFV1P0_3( w_fp[3], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[62] ); + VVV1P0_1( w_fp[61], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[63] ); // Amplitude(s) for diagram number 140 - VVV1_0( w_fp[62], w_fp[63], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[63], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3363,10 +3363,10 @@ namespace mg5amcCpu // *** DIAGRAM 141 OF 1240 *** // Wavefunction(s) for diagram number 141 - VVV1P0_1( w_fp[61], w_fp[6], COUPs[0], 0., 0., w_fp[64] ); + VVV1P0_1( w_fp[61], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[64] ); // Amplitude(s) for diagram number 141 - VVV1_0( w_fp[62], w_fp[64], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[64], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3385,7 +3385,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 142 - VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3397,7 +3397,7 @@ namespace mg5amcCpu jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3409,7 +3409,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3425,10 +3425,10 @@ namespace mg5amcCpu // *** DIAGRAM 143 OF 1240 *** // Wavefunction(s) for diagram number 143 - FFV1_2( w_fp[3], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[65] ); + FFV1_2( w_fp[3], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[65] ); // Amplitude(s) for diagram number 143 - FFV1_0( w_fp[65], w_fp[55], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[55], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3441,7 +3441,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 144 - FFV1_0( w_fp[3], w_fp[55], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3456,7 +3456,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 145 - FFV1_0( w_fp[65], w_fp[57], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[57], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3469,7 +3469,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 146 - FFV1_0( w_fp[3], w_fp[57], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3481,10 +3481,10 @@ namespace mg5amcCpu // *** DIAGRAM 147 OF 1240 *** // Wavefunction(s) for diagram number 147 - FFV1_1( w_fp[34], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[66] ); + FFV1_1( w_fp[34], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[66] ); // Amplitude(s) for diagram number 147 - FFV1_0( w_fp[38], w_fp[66], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[66], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3494,10 +3494,10 @@ namespace mg5amcCpu // *** DIAGRAM 148 OF 1240 *** // Wavefunction(s) for diagram number 148 - FFV1P0_3( w_fp[38], w_fp[34], COUPs[1], 0., 0., w_fp[67] ); + FFV1P0_3( w_fp[38], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[67] ); // Amplitude(s) for diagram number 148 - VVV1_0( w_fp[61], w_fp[6], w_fp[67], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[67], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3512,7 +3512,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 149 - FFV1_0( w_fp[38], w_fp[57], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[57], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3525,7 +3525,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 150 - FFV1_0( w_fp[41], w_fp[66], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[66], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3535,10 +3535,10 @@ namespace mg5amcCpu // *** DIAGRAM 151 OF 1240 *** // Wavefunction(s) for diagram number 151 - FFV1P0_3( w_fp[41], w_fp[34], COUPs[1], 0., 0., w_fp[68] ); + FFV1P0_3( w_fp[41], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 151 - VVV1_0( w_fp[61], w_fp[5], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3553,7 +3553,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 152 - FFV1_0( w_fp[41], w_fp[55], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[55], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3566,7 +3566,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 153 - FFV1_0( w_fp[3], w_fp[66], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[66], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3581,7 +3581,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 154 - VVV1_0( w_fp[61], w_fp[29], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[29], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3600,7 +3600,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 155 - FFV1_0( w_fp[3], w_fp[58], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[58], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3612,11 +3612,11 @@ namespace mg5amcCpu // *** DIAGRAM 156 OF 1240 *** // Wavefunction(s) for diagram number 156 - VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 0., 0., w_fp[66] ); - VVV1P0_1( w_fp[66], w_fp[4], COUPs[0], 0., 0., w_fp[69] ); + VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[66] ); + VVV1P0_1( w_fp[66], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[69] ); // Amplitude(s) for diagram number 156 - VVV1_0( w_fp[62], w_fp[69], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[69], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3632,10 +3632,10 @@ namespace mg5amcCpu // *** DIAGRAM 157 OF 1240 *** // Wavefunction(s) for diagram number 157 - VVV1P0_1( w_fp[66], w_fp[6], COUPs[0], 0., 0., w_fp[70] ); + VVV1P0_1( w_fp[66], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[70] ); // Amplitude(s) for diagram number 157 - VVV1_0( w_fp[62], w_fp[70], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[70], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3654,7 +3654,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 158 - VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3666,7 +3666,7 @@ namespace mg5amcCpu jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3678,7 +3678,7 @@ namespace mg5amcCpu jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3694,10 +3694,10 @@ namespace mg5amcCpu // *** DIAGRAM 159 OF 1240 *** // Wavefunction(s) for diagram number 159 - FFV1_2( w_fp[3], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); + FFV1_2( w_fp[3], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); // Amplitude(s) for diagram number 159 - FFV1_0( w_fp[71], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3710,7 +3710,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 160 - FFV1_0( w_fp[3], w_fp[9], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3725,7 +3725,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 161 - FFV1_0( w_fp[71], w_fp[57], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[57], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3738,7 +3738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 162 - FFV1_0( w_fp[3], w_fp[57], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3750,10 +3750,10 @@ namespace mg5amcCpu // *** DIAGRAM 163 OF 1240 *** // Wavefunction(s) for diagram number 163 - FFV1_1( w_fp[34], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[72] ); + FFV1_1( w_fp[34], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[72] ); // Amplitude(s) for diagram number 163 - FFV1_0( w_fp[46], w_fp[72], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[72], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3763,10 +3763,10 @@ namespace mg5amcCpu // *** DIAGRAM 164 OF 1240 *** // Wavefunction(s) for diagram number 164 - FFV1P0_3( w_fp[46], w_fp[34], COUPs[1], 0., 0., w_fp[73] ); + FFV1P0_3( w_fp[46], w_fp[34], COUPs[1], 1.0, 0., 0., w_fp[73] ); // Amplitude(s) for diagram number 164 - VVV1_0( w_fp[66], w_fp[6], w_fp[73], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[73], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3781,7 +3781,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 165 - FFV1_0( w_fp[46], w_fp[57], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[57], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3794,7 +3794,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 166 - FFV1_0( w_fp[41], w_fp[72], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[72], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3807,7 +3807,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 167 - VVV1_0( w_fp[66], w_fp[4], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3822,7 +3822,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 168 - FFV1_0( w_fp[41], w_fp[9], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[9], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3835,7 +3835,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 169 - FFV1_0( w_fp[3], w_fp[72], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[72], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3850,7 +3850,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 170 - VVV1_0( w_fp[66], w_fp[27], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[27], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3869,7 +3869,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 171 - FFV1_0( w_fp[3], w_fp[60], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[60], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3881,11 +3881,11 @@ namespace mg5amcCpu // *** DIAGRAM 172 OF 1240 *** // Wavefunction(s) for diagram number 172 - VVV1P0_1( w_fp[1], w_fp[6], COUPs[0], 0., 0., w_fp[72] ); - VVV1P0_1( w_fp[72], w_fp[4], COUPs[0], 0., 0., w_fp[74] ); + VVV1P0_1( w_fp[1], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[72] ); + VVV1P0_1( w_fp[72], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[74] ); // Amplitude(s) for diagram number 172 - VVV1_0( w_fp[62], w_fp[74], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[74], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3901,10 +3901,10 @@ namespace mg5amcCpu // *** DIAGRAM 173 OF 1240 *** // Wavefunction(s) for diagram number 173 - VVV1P0_1( w_fp[72], w_fp[5], COUPs[0], 0., 0., w_fp[75] ); + VVV1P0_1( w_fp[72], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[75] ); // Amplitude(s) for diagram number 173 - VVV1_0( w_fp[62], w_fp[75], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[75], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3923,7 +3923,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 174 - VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3935,7 +3935,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3947,7 +3947,7 @@ namespace mg5amcCpu jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3963,10 +3963,10 @@ namespace mg5amcCpu // *** DIAGRAM 175 OF 1240 *** // Wavefunction(s) for diagram number 175 - FFV1_2( w_fp[3], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[76] ); + FFV1_2( w_fp[3], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[76] ); // Amplitude(s) for diagram number 175 - FFV1_0( w_fp[76], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3979,7 +3979,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 176 - FFV1_0( w_fp[3], w_fp[9], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -3994,7 +3994,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 177 - FFV1_0( w_fp[76], w_fp[55], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[55], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4007,7 +4007,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 178 - FFV1_0( w_fp[3], w_fp[55], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4019,10 +4019,10 @@ namespace mg5amcCpu // *** DIAGRAM 179 OF 1240 *** // Wavefunction(s) for diagram number 179 - FFV1_1( w_fp[34], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); + FFV1_1( w_fp[34], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); // Amplitude(s) for diagram number 179 - FFV1_0( w_fp[46], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4035,7 +4035,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 180 - VVV1_0( w_fp[72], w_fp[5], w_fp[73], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[73], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4050,7 +4050,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 181 - FFV1_0( w_fp[46], w_fp[55], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[55], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4063,7 +4063,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 182 - FFV1_0( w_fp[38], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4076,7 +4076,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 183 - VVV1_0( w_fp[72], w_fp[4], w_fp[67], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[67], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4091,7 +4091,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 184 - FFV1_0( w_fp[38], w_fp[9], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[9], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4104,7 +4104,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 185 - FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4119,7 +4119,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 186 - VVV1_0( w_fp[72], w_fp[24], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[24], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4138,7 +4138,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 187 - FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4150,10 +4150,10 @@ namespace mg5amcCpu // *** DIAGRAM 188 OF 1240 *** // Wavefunction(s) for diagram number 188 - FFV1_1( w_fp[34], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); + FFV1_1( w_fp[34], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); // Amplitude(s) for diagram number 188 - FFV1_0( w_fp[7], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4165,7 +4165,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 189 - FFV1_0( w_fp[53], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4174,10 +4174,10 @@ namespace mg5amcCpu // *** DIAGRAM 190 OF 1240 *** // Wavefunction(s) for diagram number 190 - FFV1_2( w_fp[46], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[78] ); + FFV1_2( w_fp[46], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[78] ); // Amplitude(s) for diagram number 190 - FFV1_0( w_fp[78], w_fp[55], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[55], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4189,7 +4189,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 191 - FFV1_0( w_fp[53], w_fp[55], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[55], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4201,7 +4201,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 192 - FFV1_0( w_fp[78], w_fp[57], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[57], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4213,7 +4213,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 193 - FFV1_0( w_fp[7], w_fp[57], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[57], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4225,7 +4225,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 194 - FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4238,7 +4238,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 195 - VVV1_0( w_fp[1], w_fp[29], w_fp[73], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[73], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4253,7 +4253,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 196 - FFV1_0( w_fp[46], w_fp[58], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[58], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4266,7 +4266,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 197 - FFV1_0( w_fp[25], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4278,7 +4278,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 198 - FFV1_0( w_fp[48], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4287,10 +4287,10 @@ namespace mg5amcCpu // *** DIAGRAM 199 OF 1240 *** // Wavefunction(s) for diagram number 199 - FFV1_2( w_fp[38], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[58] ); + FFV1_2( w_fp[38], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[58] ); // Amplitude(s) for diagram number 199 - FFV1_0( w_fp[58], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4302,7 +4302,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 200 - FFV1_0( w_fp[48], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4314,7 +4314,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 201 - FFV1_0( w_fp[58], w_fp[57], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[57], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4326,7 +4326,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 202 - FFV1_0( w_fp[25], w_fp[57], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[57], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4338,7 +4338,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 203 - FFV1_0( w_fp[38], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4351,7 +4351,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 204 - VVV1_0( w_fp[1], w_fp[27], w_fp[67], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[67], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4366,7 +4366,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 205 - FFV1_0( w_fp[38], w_fp[60], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[60], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4379,7 +4379,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 206 - FFV1_0( w_fp[28], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4391,7 +4391,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 207 - FFV1_0( w_fp[40], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4400,10 +4400,10 @@ namespace mg5amcCpu // *** DIAGRAM 208 OF 1240 *** // Wavefunction(s) for diagram number 208 - FFV1_2( w_fp[41], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); + FFV1_2( w_fp[41], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); // Amplitude(s) for diagram number 208 - FFV1_0( w_fp[60], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4415,7 +4415,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 209 - FFV1_0( w_fp[40], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4427,7 +4427,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 210 - FFV1_0( w_fp[60], w_fp[55], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[55], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4439,7 +4439,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 211 - FFV1_0( w_fp[28], w_fp[55], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[55], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4451,7 +4451,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 212 - FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4464,7 +4464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 213 - VVV1_0( w_fp[1], w_fp[24], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4479,7 +4479,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 214 - FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4492,7 +4492,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 215 - FFV1_0( w_fp[26], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4505,7 +4505,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 216 - FFV1_0( w_fp[3], w_fp[77], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4517,10 +4517,10 @@ namespace mg5amcCpu // *** DIAGRAM 217 OF 1240 *** // Wavefunction(s) for diagram number 217 - VVV1P0_1( w_fp[1], w_fp[24], COUPs[0], 0., 0., w_fp[59] ); + VVV1P0_1( w_fp[1], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[59] ); // Amplitude(s) for diagram number 217 - VVV1_0( w_fp[62], w_fp[59], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[59], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4539,7 +4539,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 218 - VVV1_0( w_fp[62], w_fp[1], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4558,7 +4558,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 219 - VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4570,7 +4570,7 @@ namespace mg5amcCpu jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4582,7 +4582,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4601,7 +4601,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 220 - FFV1_0( w_fp[3], w_fp[57], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4616,7 +4616,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 221 - FFV1_0( w_fp[26], w_fp[57], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[57], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4629,7 +4629,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 222 - FFV1_0( w_fp[14], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4642,7 +4642,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 223 - FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4654,10 +4654,10 @@ namespace mg5amcCpu // *** DIAGRAM 224 OF 1240 *** // Wavefunction(s) for diagram number 224 - VVV1P0_1( w_fp[1], w_fp[27], COUPs[0], 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[1], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 224 - VVV1_0( w_fp[62], w_fp[68], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[68], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4676,7 +4676,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 225 - VVV1_0( w_fp[62], w_fp[1], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4695,7 +4695,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 226 - VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4707,7 +4707,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4719,7 +4719,7 @@ namespace mg5amcCpu jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4738,7 +4738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 227 - FFV1_0( w_fp[3], w_fp[55], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4753,7 +4753,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 228 - FFV1_0( w_fp[14], w_fp[55], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[55], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4766,7 +4766,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 229 - FFV1_0( w_fp[12], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4779,7 +4779,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 230 - FFV1_0( w_fp[3], w_fp[77], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4791,10 +4791,10 @@ namespace mg5amcCpu // *** DIAGRAM 231 OF 1240 *** // Wavefunction(s) for diagram number 231 - VVV1P0_1( w_fp[1], w_fp[29], COUPs[0], 0., 0., w_fp[67] ); + VVV1P0_1( w_fp[1], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[67] ); // Amplitude(s) for diagram number 231 - VVV1_0( w_fp[62], w_fp[67], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[67], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4813,7 +4813,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 232 - VVV1_0( w_fp[62], w_fp[1], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4832,7 +4832,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 233 - VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4844,7 +4844,7 @@ namespace mg5amcCpu jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4856,7 +4856,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4875,7 +4875,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 234 - FFV1_0( w_fp[3], w_fp[9], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4890,7 +4890,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 235 - FFV1_0( w_fp[12], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4900,12 +4900,12 @@ namespace mg5amcCpu // *** DIAGRAM 236 OF 1240 *** // Wavefunction(s) for diagram number 236 - VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[73] ); - VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[79] ); - VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[80] ); + VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[73] ); + VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[79] ); + VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[80] ); // Amplitude(s) for diagram number 236 - VVV1_0( w_fp[73], w_fp[6], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[73], w_fp[6], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4917,7 +4917,7 @@ namespace mg5amcCpu jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[79], w_fp[6], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[79], w_fp[6], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4929,7 +4929,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[80], w_fp[6], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[80], w_fp[6], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4948,7 +4948,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 237 - FFV1_0( w_fp[3], w_fp[57], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4956,7 +4956,7 @@ namespace mg5amcCpu jamp_sv[19] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[57], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4964,7 +4964,7 @@ namespace mg5amcCpu jamp_sv[20] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[57], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[57], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4979,7 +4979,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 238 - FFV1_0( w_fp[41], w_fp[34], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[34], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4987,7 +4987,7 @@ namespace mg5amcCpu jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[34], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[34], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -4995,7 +4995,7 @@ namespace mg5amcCpu jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[12] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[34], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[34], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5007,12 +5007,12 @@ namespace mg5amcCpu // *** DIAGRAM 239 OF 1240 *** // Wavefunction(s) for diagram number 239 - VVVV1P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[57] ); - VVVV3P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[81] ); - VVVV4P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[82] ); + VVVV1P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[57] ); + VVVV3P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[81] ); + VVVV4P0_1( w_fp[1], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[82] ); // Amplitude(s) for diagram number 239 - VVV1_0( w_fp[57], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[57], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5024,7 +5024,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[81], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[81], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5036,7 +5036,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[82], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[82], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5055,7 +5055,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 240 - FFV1_0( w_fp[3], w_fp[55], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5063,7 +5063,7 @@ namespace mg5amcCpu jamp_sv[13] -= amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[55], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5071,7 +5071,7 @@ namespace mg5amcCpu jamp_sv[14] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[16] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[55], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[55], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5086,7 +5086,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 241 - FFV1_0( w_fp[38], w_fp[34], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[34], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5094,7 +5094,7 @@ namespace mg5amcCpu jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[34], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[34], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5102,7 +5102,7 @@ namespace mg5amcCpu jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[18] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[34], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[34], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5114,12 +5114,12 @@ namespace mg5amcCpu // *** DIAGRAM 242 OF 1240 *** // Wavefunction(s) for diagram number 242 - VVVV1P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[55] ); - VVVV3P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[83] ); - VVVV4P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[84] ); + VVVV1P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[55] ); + VVVV3P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[83] ); + VVVV4P0_1( w_fp[1], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[84] ); // Amplitude(s) for diagram number 242 - VVV1_0( w_fp[55], w_fp[4], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[55], w_fp[4], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5131,7 +5131,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[83], w_fp[4], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[83], w_fp[4], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5143,7 +5143,7 @@ namespace mg5amcCpu jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[84], w_fp[4], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[84], w_fp[4], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5162,7 +5162,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 243 - FFV1_0( w_fp[3], w_fp[9], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5170,7 +5170,7 @@ namespace mg5amcCpu jamp_sv[7] -= amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5178,7 +5178,7 @@ namespace mg5amcCpu jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5193,7 +5193,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 244 - FFV1_0( w_fp[46], w_fp[34], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[34], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5201,7 +5201,7 @@ namespace mg5amcCpu jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[34], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[34], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5209,7 +5209,7 @@ namespace mg5amcCpu jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[34], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[34], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5224,7 +5224,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 245 - FFV1_0( w_fp[3], w_fp[77], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5232,7 +5232,7 @@ namespace mg5amcCpu jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5240,7 +5240,7 @@ namespace mg5amcCpu jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5255,7 +5255,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 246 - VVV1_0( w_fp[1], w_fp[30], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[30], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5267,7 +5267,7 @@ namespace mg5amcCpu jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[31], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[31], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5279,7 +5279,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[32], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[32], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5295,13 +5295,13 @@ namespace mg5amcCpu // *** DIAGRAM 247 OF 1240 *** // Wavefunction(s) for diagram number 247 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[62] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); - FFV1_2( w_fp[62], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[34] ); - FFV1_1( w_fp[77], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[62] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); + FFV1_2( w_fp[62], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[34] ); + FFV1_1( w_fp[77], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 247 - FFV1_0( w_fp[34], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5310,10 +5310,10 @@ namespace mg5amcCpu // *** DIAGRAM 248 OF 1240 *** // Wavefunction(s) for diagram number 248 - FFV1_1( w_fp[77], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[85] ); + FFV1_1( w_fp[77], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[85] ); // Amplitude(s) for diagram number 248 - FFV1_0( w_fp[34], w_fp[85], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[85], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5322,11 +5322,11 @@ namespace mg5amcCpu // *** DIAGRAM 249 OF 1240 *** // Wavefunction(s) for diagram number 249 - FFV1_2( w_fp[62], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[86] ); - FFV1_1( w_fp[77], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[87] ); + FFV1_2( w_fp[62], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[86] ); + FFV1_1( w_fp[77], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[87] ); // Amplitude(s) for diagram number 249 - FFV1_0( w_fp[86], w_fp[87], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[87], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5338,7 +5338,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 250 - FFV1_0( w_fp[86], w_fp[85], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[85], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5347,10 +5347,10 @@ namespace mg5amcCpu // *** DIAGRAM 251 OF 1240 *** // Wavefunction(s) for diagram number 251 - FFV1_2( w_fp[62], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[88] ); + FFV1_2( w_fp[62], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[88] ); // Amplitude(s) for diagram number 251 - FFV1_0( w_fp[88], w_fp[87], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[87], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5362,7 +5362,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 252 - FFV1_0( w_fp[88], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5371,10 +5371,10 @@ namespace mg5amcCpu // *** DIAGRAM 253 OF 1240 *** // Wavefunction(s) for diagram number 253 - FFV1P0_3( w_fp[62], w_fp[77], COUPs[1], 0., 0., w_fp[89] ); + FFV1P0_3( w_fp[62], w_fp[77], COUPs[1], 1.0, 0., 0., w_fp[89] ); // Amplitude(s) for diagram number 253 - VVV1_0( w_fp[24], w_fp[6], w_fp[89], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[89], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5386,10 +5386,10 @@ namespace mg5amcCpu // *** DIAGRAM 254 OF 1240 *** // Wavefunction(s) for diagram number 254 - FFV1_2( w_fp[62], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[90] ); + FFV1_2( w_fp[62], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[90] ); // Amplitude(s) for diagram number 254 - FFV1_0( w_fp[90], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5402,7 +5402,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 255 - FFV1_0( w_fp[88], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5415,7 +5415,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 256 - VVV1_0( w_fp[27], w_fp[5], w_fp[89], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[89], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5427,10 +5427,10 @@ namespace mg5amcCpu // *** DIAGRAM 257 OF 1240 *** // Wavefunction(s) for diagram number 257 - FFV1_2( w_fp[62], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[91] ); + FFV1_2( w_fp[62], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[91] ); // Amplitude(s) for diagram number 257 - FFV1_0( w_fp[91], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[91], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5443,7 +5443,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 258 - FFV1_0( w_fp[86], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5456,7 +5456,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 259 - VVV1_0( w_fp[4], w_fp[29], w_fp[89], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[89], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5471,7 +5471,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 260 - FFV1_0( w_fp[34], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5481,10 +5481,10 @@ namespace mg5amcCpu // *** DIAGRAM 261 OF 1240 *** // Wavefunction(s) for diagram number 261 - FFV1_2( w_fp[62], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[89] ); + FFV1_2( w_fp[62], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[89] ); // Amplitude(s) for diagram number 261 - FFV1_0( w_fp[89], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[89], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5497,7 +5497,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 262 - FFV1_0( w_fp[62], w_fp[77], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5505,7 +5505,7 @@ namespace mg5amcCpu jamp_sv[35] -= amp_sv[0]; jamp_sv[41] -= amp_sv[0]; jamp_sv[47] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[77], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5513,7 +5513,7 @@ namespace mg5amcCpu jamp_sv[39] += amp_sv[0]; jamp_sv[41] -= amp_sv[0]; jamp_sv[45] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[77], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5525,10 +5525,10 @@ namespace mg5amcCpu // *** DIAGRAM 263 OF 1240 *** // Wavefunction(s) for diagram number 263 - FFV1P0_3( w_fp[62], w_fp[2], COUPs[1], 0., 0., w_fp[92] ); + FFV1P0_3( w_fp[62], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[92] ); // Amplitude(s) for diagram number 263 - VVV1_0( w_fp[92], w_fp[63], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[63], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5547,7 +5547,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 264 - VVV1_0( w_fp[92], w_fp[64], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[64], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5566,7 +5566,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 265 - VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5578,7 +5578,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5590,7 +5590,7 @@ namespace mg5amcCpu jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5606,10 +5606,10 @@ namespace mg5amcCpu // *** DIAGRAM 266 OF 1240 *** // Wavefunction(s) for diagram number 266 - FFV1_1( w_fp[2], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[93] ); + FFV1_1( w_fp[2], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[93] ); // Amplitude(s) for diagram number 266 - FFV1_0( w_fp[86], w_fp[93], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[93], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5622,7 +5622,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 267 - FFV1_0( w_fp[86], w_fp[2], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5637,7 +5637,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 268 - FFV1_0( w_fp[88], w_fp[93], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[93], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5650,7 +5650,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 269 - FFV1_0( w_fp[88], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5662,10 +5662,10 @@ namespace mg5amcCpu // *** DIAGRAM 270 OF 1240 *** // Wavefunction(s) for diagram number 270 - FFV1_2( w_fp[62], w_fp[61], COUPs[1], cIPD[0], cIPD[1], w_fp[94] ); + FFV1_2( w_fp[62], w_fp[61], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[94] ); // Amplitude(s) for diagram number 270 - FFV1_0( w_fp[94], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[94], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5675,10 +5675,10 @@ namespace mg5amcCpu // *** DIAGRAM 271 OF 1240 *** // Wavefunction(s) for diagram number 271 - FFV1P0_3( w_fp[62], w_fp[39], COUPs[1], 0., 0., w_fp[95] ); + FFV1P0_3( w_fp[62], w_fp[39], COUPs[1], 1.0, 0., 0., w_fp[95] ); // Amplitude(s) for diagram number 271 - VVV1_0( w_fp[61], w_fp[6], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5693,7 +5693,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 272 - FFV1_0( w_fp[88], w_fp[39], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[39], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5706,7 +5706,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 273 - FFV1_0( w_fp[94], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[94], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5716,10 +5716,10 @@ namespace mg5amcCpu // *** DIAGRAM 274 OF 1240 *** // Wavefunction(s) for diagram number 274 - FFV1P0_3( w_fp[62], w_fp[47], COUPs[1], 0., 0., w_fp[96] ); + FFV1P0_3( w_fp[62], w_fp[47], COUPs[1], 1.0, 0., 0., w_fp[96] ); // Amplitude(s) for diagram number 274 - VVV1_0( w_fp[61], w_fp[5], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5734,7 +5734,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 275 - FFV1_0( w_fp[86], w_fp[47], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[47], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5747,7 +5747,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 276 - FFV1_0( w_fp[94], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[94], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5762,7 +5762,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 277 - VVV1_0( w_fp[61], w_fp[29], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[29], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5781,7 +5781,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 278 - FFV1_0( w_fp[89], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[89], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5796,7 +5796,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 279 - VVV1_0( w_fp[92], w_fp[69], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[69], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5815,7 +5815,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 280 - VVV1_0( w_fp[92], w_fp[70], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[70], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5834,7 +5834,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 281 - VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5846,7 +5846,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5858,7 +5858,7 @@ namespace mg5amcCpu jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5874,10 +5874,10 @@ namespace mg5amcCpu // *** DIAGRAM 282 OF 1240 *** // Wavefunction(s) for diagram number 282 - FFV1_1( w_fp[2], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[94] ); + FFV1_1( w_fp[2], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[94] ); // Amplitude(s) for diagram number 282 - FFV1_0( w_fp[34], w_fp[94], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[94], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5890,7 +5890,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 283 - FFV1_0( w_fp[34], w_fp[2], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5905,7 +5905,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 284 - FFV1_0( w_fp[88], w_fp[94], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[94], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5918,7 +5918,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 285 - FFV1_0( w_fp[88], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5930,10 +5930,10 @@ namespace mg5amcCpu // *** DIAGRAM 286 OF 1240 *** // Wavefunction(s) for diagram number 286 - FFV1_2( w_fp[62], w_fp[66], COUPs[1], cIPD[0], cIPD[1], w_fp[97] ); + FFV1_2( w_fp[62], w_fp[66], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[97] ); // Amplitude(s) for diagram number 286 - FFV1_0( w_fp[97], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[97], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5943,10 +5943,10 @@ namespace mg5amcCpu // *** DIAGRAM 287 OF 1240 *** // Wavefunction(s) for diagram number 287 - FFV1P0_3( w_fp[62], w_fp[33], COUPs[1], 0., 0., w_fp[98] ); + FFV1P0_3( w_fp[62], w_fp[33], COUPs[1], 1.0, 0., 0., w_fp[98] ); // Amplitude(s) for diagram number 287 - VVV1_0( w_fp[66], w_fp[6], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5961,7 +5961,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 288 - FFV1_0( w_fp[88], w_fp[33], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[33], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5974,7 +5974,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 289 - FFV1_0( w_fp[97], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[97], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -5987,7 +5987,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 290 - VVV1_0( w_fp[66], w_fp[4], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6002,7 +6002,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 291 - FFV1_0( w_fp[34], w_fp[47], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[47], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6015,7 +6015,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 292 - FFV1_0( w_fp[97], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[97], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6030,7 +6030,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 293 - VVV1_0( w_fp[66], w_fp[27], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[27], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6049,7 +6049,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 294 - FFV1_0( w_fp[91], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[91], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6064,7 +6064,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 295 - VVV1_0( w_fp[92], w_fp[74], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[74], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6083,7 +6083,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 296 - VVV1_0( w_fp[92], w_fp[75], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[75], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6102,7 +6102,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 297 - VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6114,7 +6114,7 @@ namespace mg5amcCpu jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6126,7 +6126,7 @@ namespace mg5amcCpu jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6142,10 +6142,10 @@ namespace mg5amcCpu // *** DIAGRAM 298 OF 1240 *** // Wavefunction(s) for diagram number 298 - FFV1_1( w_fp[2], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[97] ); + FFV1_1( w_fp[2], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[97] ); // Amplitude(s) for diagram number 298 - FFV1_0( w_fp[34], w_fp[97], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[97], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6158,7 +6158,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 299 - FFV1_0( w_fp[34], w_fp[2], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6173,7 +6173,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 300 - FFV1_0( w_fp[86], w_fp[97], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[97], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6186,7 +6186,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 301 - FFV1_0( w_fp[86], w_fp[2], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6198,10 +6198,10 @@ namespace mg5amcCpu // *** DIAGRAM 302 OF 1240 *** // Wavefunction(s) for diagram number 302 - FFV1_2( w_fp[62], w_fp[72], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + FFV1_2( w_fp[62], w_fp[72], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 302 - FFV1_0( w_fp[99], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6214,7 +6214,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 303 - VVV1_0( w_fp[72], w_fp[5], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6229,7 +6229,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 304 - FFV1_0( w_fp[86], w_fp[33], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[33], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6242,7 +6242,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 305 - FFV1_0( w_fp[99], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6255,7 +6255,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 306 - VVV1_0( w_fp[72], w_fp[4], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6270,7 +6270,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 307 - FFV1_0( w_fp[34], w_fp[39], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[39], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6283,7 +6283,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 308 - FFV1_0( w_fp[99], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6298,7 +6298,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 309 - VVV1_0( w_fp[72], w_fp[24], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[24], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6317,7 +6317,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 310 - FFV1_0( w_fp[90], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6329,10 +6329,10 @@ namespace mg5amcCpu // *** DIAGRAM 311 OF 1240 *** // Wavefunction(s) for diagram number 311 - FFV1_2( w_fp[62], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + FFV1_2( w_fp[62], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 311 - FFV1_0( w_fp[99], w_fp[35], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[35], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6344,7 +6344,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 312 - FFV1_0( w_fp[99], w_fp[36], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[36], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6353,10 +6353,10 @@ namespace mg5amcCpu // *** DIAGRAM 313 OF 1240 *** // Wavefunction(s) for diagram number 313 - FFV1_1( w_fp[33], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[100] ); + FFV1_1( w_fp[33], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[100] ); // Amplitude(s) for diagram number 313 - FFV1_0( w_fp[86], w_fp[100], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[100], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6368,7 +6368,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 314 - FFV1_0( w_fp[86], w_fp[36], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[36], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6380,7 +6380,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 315 - FFV1_0( w_fp[88], w_fp[100], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[100], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6392,7 +6392,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 316 - FFV1_0( w_fp[88], w_fp[35], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[35], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6404,7 +6404,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 317 - FFV1_0( w_fp[99], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6417,7 +6417,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 318 - VVV1_0( w_fp[1], w_fp[29], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6432,7 +6432,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 319 - FFV1_0( w_fp[89], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[89], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6445,7 +6445,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 320 - FFV1_0( w_fp[99], w_fp[43], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[43], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6457,7 +6457,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 321 - FFV1_0( w_fp[99], w_fp[44], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[44], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6466,10 +6466,10 @@ namespace mg5amcCpu // *** DIAGRAM 322 OF 1240 *** // Wavefunction(s) for diagram number 322 - FFV1_1( w_fp[39], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[89] ); + FFV1_1( w_fp[39], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[89] ); // Amplitude(s) for diagram number 322 - FFV1_0( w_fp[34], w_fp[89], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[89], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6481,7 +6481,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 323 - FFV1_0( w_fp[34], w_fp[44], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[44], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6493,7 +6493,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 324 - FFV1_0( w_fp[88], w_fp[89], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[89], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6505,7 +6505,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 325 - FFV1_0( w_fp[88], w_fp[43], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[43], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6517,7 +6517,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 326 - FFV1_0( w_fp[99], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6530,7 +6530,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 327 - VVV1_0( w_fp[1], w_fp[27], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6545,7 +6545,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 328 - FFV1_0( w_fp[91], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[91], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6558,7 +6558,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 329 - FFV1_0( w_fp[99], w_fp[49], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[49], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6570,7 +6570,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 330 - FFV1_0( w_fp[99], w_fp[50], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[50], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6579,10 +6579,10 @@ namespace mg5amcCpu // *** DIAGRAM 331 OF 1240 *** // Wavefunction(s) for diagram number 331 - FFV1_1( w_fp[47], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[91] ); + FFV1_1( w_fp[47], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[91] ); // Amplitude(s) for diagram number 331 - FFV1_0( w_fp[34], w_fp[91], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[91], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6594,7 +6594,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 332 - FFV1_0( w_fp[34], w_fp[50], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[50], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6606,7 +6606,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 333 - FFV1_0( w_fp[86], w_fp[91], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[91], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6618,7 +6618,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 334 - FFV1_0( w_fp[86], w_fp[49], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[49], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6630,7 +6630,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 335 - FFV1_0( w_fp[99], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6643,7 +6643,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 336 - VVV1_0( w_fp[1], w_fp[24], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6658,7 +6658,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 337 - FFV1_0( w_fp[90], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6671,7 +6671,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 338 - FFV1_0( w_fp[99], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6684,7 +6684,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 339 - FFV1_0( w_fp[99], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6699,7 +6699,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 340 - VVV1_0( w_fp[92], w_fp[59], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[59], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6718,7 +6718,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 341 - VVV1_0( w_fp[92], w_fp[1], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[1], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6737,7 +6737,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 342 - VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6749,7 +6749,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6761,7 +6761,7 @@ namespace mg5amcCpu jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6780,7 +6780,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 343 - FFV1_0( w_fp[88], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6795,7 +6795,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 344 - FFV1_0( w_fp[88], w_fp[17], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[17], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6808,7 +6808,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 345 - FFV1_0( w_fp[99], w_fp[15], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[15], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6821,7 +6821,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 346 - FFV1_0( w_fp[99], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6836,7 +6836,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 347 - VVV1_0( w_fp[92], w_fp[68], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[68], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6855,7 +6855,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 348 - VVV1_0( w_fp[92], w_fp[1], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[1], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6874,7 +6874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 349 - VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6886,7 +6886,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6898,7 +6898,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6917,7 +6917,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 350 - FFV1_0( w_fp[86], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6932,7 +6932,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 351 - FFV1_0( w_fp[86], w_fp[15], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[15], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6945,7 +6945,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 352 - FFV1_0( w_fp[99], w_fp[18], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[18], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6958,7 +6958,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 353 - FFV1_0( w_fp[99], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6973,7 +6973,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 354 - VVV1_0( w_fp[92], w_fp[67], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[67], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -6992,7 +6992,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 355 - VVV1_0( w_fp[92], w_fp[1], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[1], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7011,7 +7011,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 356 - VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7023,7 +7023,7 @@ namespace mg5amcCpu jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7035,7 +7035,7 @@ namespace mg5amcCpu jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[92], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7054,7 +7054,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 357 - FFV1_0( w_fp[34], w_fp[2], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7069,7 +7069,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 358 - FFV1_0( w_fp[34], w_fp[18], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[18], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7082,7 +7082,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 359 - VVV1_0( w_fp[73], w_fp[6], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[73], w_fp[6], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7094,7 +7094,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[79], w_fp[6], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[79], w_fp[6], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7106,7 +7106,7 @@ namespace mg5amcCpu jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[80], w_fp[6], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[80], w_fp[6], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7125,7 +7125,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 360 - FFV1_0( w_fp[88], w_fp[2], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7133,7 +7133,7 @@ namespace mg5amcCpu jamp_sv[39] -= amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[87] += amp_sv[0]; - FFV1_0( w_fp[88], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7141,7 +7141,7 @@ namespace mg5amcCpu jamp_sv[57] += amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[81] += amp_sv[0]; - FFV1_0( w_fp[88], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7156,7 +7156,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 361 - FFV1_0( w_fp[62], w_fp[47], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[47], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7164,7 +7164,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[47], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[47], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7172,7 +7172,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[47], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[47], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7187,7 +7187,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 362 - VVV1_0( w_fp[57], w_fp[5], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[57], w_fp[5], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7199,7 +7199,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[81], w_fp[5], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[81], w_fp[5], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7211,7 +7211,7 @@ namespace mg5amcCpu jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[82], w_fp[5], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[82], w_fp[5], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7230,7 +7230,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 363 - FFV1_0( w_fp[86], w_fp[2], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7238,7 +7238,7 @@ namespace mg5amcCpu jamp_sv[45] -= amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - FFV1_0( w_fp[86], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7246,7 +7246,7 @@ namespace mg5amcCpu jamp_sv[59] += amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; - FFV1_0( w_fp[86], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7261,7 +7261,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 364 - FFV1_0( w_fp[62], w_fp[39], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7269,7 +7269,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[39], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7277,7 +7277,7 @@ namespace mg5amcCpu jamp_sv[87] += amp_sv[0]; jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[39], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7292,7 +7292,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 365 - VVV1_0( w_fp[55], w_fp[4], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[55], w_fp[4], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7304,7 +7304,7 @@ namespace mg5amcCpu jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[83], w_fp[4], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[83], w_fp[4], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7316,7 +7316,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[84], w_fp[4], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[84], w_fp[4], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7335,7 +7335,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 366 - FFV1_0( w_fp[34], w_fp[2], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7343,7 +7343,7 @@ namespace mg5amcCpu jamp_sv[47] -= amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7351,7 +7351,7 @@ namespace mg5amcCpu jamp_sv[83] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - FFV1_0( w_fp[34], w_fp[2], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[34], w_fp[2], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7366,7 +7366,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 367 - FFV1_0( w_fp[62], w_fp[33], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7374,7 +7374,7 @@ namespace mg5amcCpu jamp_sv[59] -= amp_sv[0]; jamp_sv[65] -= amp_sv[0]; jamp_sv[71] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[33], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7382,7 +7382,7 @@ namespace mg5amcCpu jamp_sv[63] += amp_sv[0]; jamp_sv[65] -= amp_sv[0]; jamp_sv[69] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[33], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7397,7 +7397,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 368 - FFV1_0( w_fp[99], w_fp[2], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7405,7 +7405,7 @@ namespace mg5amcCpu jamp_sv[71] -= amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7413,7 +7413,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7428,7 +7428,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 369 - VVV1_0( w_fp[1], w_fp[30], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[30], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7440,7 +7440,7 @@ namespace mg5amcCpu jamp_sv[71] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[31], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[31], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7452,7 +7452,7 @@ namespace mg5amcCpu jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[1], w_fp[32], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[32], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7468,11 +7468,11 @@ namespace mg5amcCpu // *** DIAGRAM 370 OF 1240 *** // Wavefunction(s) for diagram number 370 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[92] ); - FFV1_2( w_fp[3], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[92] ); + FFV1_2( w_fp[3], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 370 - FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7485,7 +7485,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 371 - FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7495,11 +7495,11 @@ namespace mg5amcCpu // *** DIAGRAM 372 OF 1240 *** // Wavefunction(s) for diagram number 372 - VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 0., 0., w_fp[62] ); - FFV1P0_3( w_fp[3], w_fp[77], COUPs[1], 0., 0., w_fp[34] ); + VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[62] ); + FFV1P0_3( w_fp[3], w_fp[77], COUPs[1], 1.0, 0., 0., w_fp[34] ); // Amplitude(s) for diagram number 372 - VVV1_0( w_fp[62], w_fp[34], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[34], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7518,7 +7518,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 373 - FFV1_0( w_fp[3], w_fp[85], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[85], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7530,10 +7530,10 @@ namespace mg5amcCpu // *** DIAGRAM 374 OF 1240 *** // Wavefunction(s) for diagram number 374 - VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 374 - VVV1_0( w_fp[86], w_fp[34], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[34], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7552,7 +7552,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 375 - FFV1_0( w_fp[3], w_fp[9], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7564,12 +7564,12 @@ namespace mg5amcCpu // *** DIAGRAM 376 OF 1240 *** // Wavefunction(s) for diagram number 376 - VVVV1P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[88] ); - VVVV3P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[90] ); - VVVV4P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[96] ); + VVVV1P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[88] ); + VVVV3P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV4P0_1( w_fp[92], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[96] ); // Amplitude(s) for diagram number 376 - FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7581,7 +7581,7 @@ namespace mg5amcCpu jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7593,7 +7593,7 @@ namespace mg5amcCpu jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7609,10 +7609,10 @@ namespace mg5amcCpu // *** DIAGRAM 377 OF 1240 *** // Wavefunction(s) for diagram number 377 - FFV1_1( w_fp[77], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[95] ); + FFV1_1( w_fp[77], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[95] ); // Amplitude(s) for diagram number 377 - FFV1_0( w_fp[38], w_fp[95], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[95], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7622,10 +7622,10 @@ namespace mg5amcCpu // *** DIAGRAM 378 OF 1240 *** // Wavefunction(s) for diagram number 378 - FFV1_2( w_fp[38], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + FFV1_2( w_fp[38], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 378 - FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7638,7 +7638,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 379 - FFV1_0( w_fp[38], w_fp[77], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7653,7 +7653,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 380 - FFV1_0( w_fp[41], w_fp[95], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[95], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7663,10 +7663,10 @@ namespace mg5amcCpu // *** DIAGRAM 381 OF 1240 *** // Wavefunction(s) for diagram number 381 - FFV1_2( w_fp[41], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[101] ); + FFV1_2( w_fp[41], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[101] ); // Amplitude(s) for diagram number 381 - FFV1_0( w_fp[101], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[101], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7679,7 +7679,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 382 - FFV1_0( w_fp[41], w_fp[77], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7694,7 +7694,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 383 - FFV1_0( w_fp[3], w_fp[95], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[95], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7709,7 +7709,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 384 - FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7721,10 +7721,10 @@ namespace mg5amcCpu // *** DIAGRAM 385 OF 1240 *** // Wavefunction(s) for diagram number 385 - VVV1P0_1( w_fp[92], w_fp[29], COUPs[0], 0., 0., w_fp[95] ); + VVV1P0_1( w_fp[92], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[95] ); // Amplitude(s) for diagram number 385 - FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7740,10 +7740,10 @@ namespace mg5amcCpu // *** DIAGRAM 386 OF 1240 *** // Wavefunction(s) for diagram number 386 - FFV1_1( w_fp[2], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[102] ); + FFV1_1( w_fp[2], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[102] ); // Amplitude(s) for diagram number 386 - FFV1_0( w_fp[22], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7756,7 +7756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 387 - FFV1_0( w_fp[21], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7766,10 +7766,10 @@ namespace mg5amcCpu // *** DIAGRAM 388 OF 1240 *** // Wavefunction(s) for diagram number 388 - FFV1P0_3( w_fp[52], w_fp[2], COUPs[1], 0., 0., w_fp[103] ); + FFV1P0_3( w_fp[52], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[103] ); // Amplitude(s) for diagram number 388 - VVV1_0( w_fp[62], w_fp[103], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[103], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7788,7 +7788,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 389 - FFV1_0( w_fp[21], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7803,7 +7803,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 390 - VVV1_0( w_fp[86], w_fp[103], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[103], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7822,7 +7822,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 391 - FFV1_0( w_fp[22], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7837,7 +7837,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 392 - FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7849,7 +7849,7 @@ namespace mg5amcCpu jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7861,7 +7861,7 @@ namespace mg5amcCpu jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7877,10 +7877,10 @@ namespace mg5amcCpu // *** DIAGRAM 393 OF 1240 *** // Wavefunction(s) for diagram number 393 - FFV1_2( w_fp[52], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[104] ); + FFV1_2( w_fp[52], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[104] ); // Amplitude(s) for diagram number 393 - FFV1_0( w_fp[104], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7890,10 +7890,10 @@ namespace mg5amcCpu // *** DIAGRAM 394 OF 1240 *** // Wavefunction(s) for diagram number 394 - FFV1_1( w_fp[39], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[105] ); + FFV1_1( w_fp[39], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[105] ); // Amplitude(s) for diagram number 394 - FFV1_0( w_fp[52], w_fp[105], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[105], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7906,7 +7906,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 395 - FFV1_0( w_fp[52], w_fp[39], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7921,7 +7921,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 396 - FFV1_0( w_fp[104], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7931,10 +7931,10 @@ namespace mg5amcCpu // *** DIAGRAM 397 OF 1240 *** // Wavefunction(s) for diagram number 397 - FFV1_1( w_fp[47], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[106] ); + FFV1_1( w_fp[47], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[106] ); // Amplitude(s) for diagram number 397 - FFV1_0( w_fp[52], w_fp[106], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[106], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7947,7 +7947,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 398 - FFV1_0( w_fp[52], w_fp[47], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7962,7 +7962,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 399 - FFV1_0( w_fp[104], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7977,7 +7977,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 400 - FFV1_0( w_fp[52], w_fp[102], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[102], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -7992,7 +7992,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 401 - FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8011,7 +8011,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 402 - FFV1_0( w_fp[71], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8026,7 +8026,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 403 - FFV1_0( w_fp[3], w_fp[102], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8045,7 +8045,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 404 - FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8060,7 +8060,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 405 - FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8079,7 +8079,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 406 - FFV1_0( w_fp[3], w_fp[94], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[94], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8098,7 +8098,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 407 - FFV1_0( w_fp[71], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8117,7 +8117,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 408 - VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8137,7 +8137,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8157,7 +8157,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8181,10 +8181,10 @@ namespace mg5amcCpu // *** DIAGRAM 409 OF 1240 *** // Wavefunction(s) for diagram number 409 - VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 409 - VVV1_0( w_fp[8], w_fp[6], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8208,10 +8208,10 @@ namespace mg5amcCpu // *** DIAGRAM 410 OF 1240 *** // Wavefunction(s) for diagram number 410 - VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 0., 0., w_fp[107] ); + VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[107] ); // Amplitude(s) for diagram number 410 - VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8238,7 +8238,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 411 - VVV1_0( w_fp[66], w_fp[8], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[8], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8265,7 +8265,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 412 - FFV1_0( w_fp[3], w_fp[47], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8284,7 +8284,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 413 - FFV1_0( w_fp[3], w_fp[106], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[106], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8299,7 +8299,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 414 - FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8314,7 +8314,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 415 - FFV1_0( w_fp[41], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8333,7 +8333,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 416 - FFV1_0( w_fp[41], w_fp[102], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[102], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8348,7 +8348,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 417 - FFV1_0( w_fp[101], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[101], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8363,7 +8363,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 418 - FFV1_0( w_fp[76], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8378,7 +8378,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 419 - FFV1_0( w_fp[3], w_fp[102], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8397,7 +8397,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 420 - FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8412,7 +8412,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 421 - FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8431,7 +8431,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 422 - FFV1_0( w_fp[3], w_fp[97], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[97], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8450,7 +8450,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 423 - FFV1_0( w_fp[76], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8469,7 +8469,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 424 - VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8489,7 +8489,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8509,7 +8509,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8533,10 +8533,10 @@ namespace mg5amcCpu // *** DIAGRAM 425 OF 1240 *** // Wavefunction(s) for diagram number 425 - VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 425 - VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8563,7 +8563,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 426 - VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8590,7 +8590,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 427 - VVV1_0( w_fp[72], w_fp[8], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[8], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8617,7 +8617,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 428 - FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8636,7 +8636,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 429 - FFV1_0( w_fp[3], w_fp[105], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[105], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8651,7 +8651,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 430 - FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8666,7 +8666,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 431 - FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8685,7 +8685,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 432 - FFV1_0( w_fp[38], w_fp[102], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[102], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8700,7 +8700,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 433 - FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8712,10 +8712,10 @@ namespace mg5amcCpu // *** DIAGRAM 434 OF 1240 *** // Wavefunction(s) for diagram number 434 - VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 434 - VVV1_0( w_fp[104], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8742,7 +8742,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 435 - VVV1_0( w_fp[104], w_fp[11], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[11], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8769,7 +8769,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 436 - VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8789,7 +8789,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8809,7 +8809,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8833,10 +8833,10 @@ namespace mg5amcCpu // *** DIAGRAM 437 OF 1240 *** // Wavefunction(s) for diagram number 437 - VVV1P0_1( w_fp[1], w_fp[8], COUPs[0], 0., 0., w_fp[108] ); + VVV1P0_1( w_fp[1], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[108] ); // Amplitude(s) for diagram number 437 - VVV1_0( w_fp[62], w_fp[108], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[108], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8863,7 +8863,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 438 - VVV1_0( w_fp[62], w_fp[1], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8890,7 +8890,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 439 - VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8910,7 +8910,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[115] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8930,7 +8930,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[62], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8957,7 +8957,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 440 - VVV1_0( w_fp[86], w_fp[108], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[108], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -8984,7 +8984,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 441 - VVV1_0( w_fp[86], w_fp[1], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9011,7 +9011,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 442 - VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9031,7 +9031,7 @@ namespace mg5amcCpu jamp_sv[94] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9051,7 +9051,7 @@ namespace mg5amcCpu jamp_sv[99] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9075,12 +9075,12 @@ namespace mg5amcCpu // *** DIAGRAM 443 OF 1240 *** // Wavefunction(s) for diagram number 443 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[109] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[109] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 443 - VVV1_0( w_fp[8], w_fp[6], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[109], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9100,7 +9100,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[110], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9120,7 +9120,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[115] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[111], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9144,12 +9144,12 @@ namespace mg5amcCpu // *** DIAGRAM 444 OF 1240 *** // Wavefunction(s) for diagram number 444 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[112] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[113] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[114] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[112] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[113] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[114] ); // Amplitude(s) for diagram number 444 - VVV1_0( w_fp[8], w_fp[5], w_fp[112], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[112], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9169,7 +9169,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[113], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9189,7 +9189,7 @@ namespace mg5amcCpu jamp_sv[94] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[114], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[114], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9216,7 +9216,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 445 - VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9236,7 +9236,7 @@ namespace mg5amcCpu jamp_sv[94] -= amp_sv[0]; jamp_sv[115] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[90], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9256,7 +9256,7 @@ namespace mg5amcCpu jamp_sv[94] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9283,7 +9283,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 446 - VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9303,7 +9303,7 @@ namespace mg5amcCpu jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9323,7 +9323,7 @@ namespace mg5amcCpu jamp_sv[93] -= amp_sv[0]; jamp_sv[116] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9350,7 +9350,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 447 - VVV1_0( w_fp[8], w_fp[29], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[29], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9377,7 +9377,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 448 - VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9404,7 +9404,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 449 - VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9431,7 +9431,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 450 - VVV1_0( w_fp[104], w_fp[45], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[45], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9450,7 +9450,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 451 - FFV1_0( w_fp[3], w_fp[44], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[44], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9465,7 +9465,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 452 - FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9478,7 +9478,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 453 - FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9491,7 +9491,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 454 - FFV1_0( w_fp[3], w_fp[89], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[89], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9506,7 +9506,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 455 - VVV1_0( w_fp[86], w_fp[1], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9525,7 +9525,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 456 - FFV1_0( w_fp[3], w_fp[39], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9537,7 +9537,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[113], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[113], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9549,7 +9549,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[114], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[114], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9568,7 +9568,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 457 - FFV1_0( w_fp[41], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9583,7 +9583,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 458 - FFV1_0( w_fp[41], w_fp[105], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[105], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9596,7 +9596,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 459 - FFV1_0( w_fp[101], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[101], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9609,7 +9609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 460 - VVV1_0( w_fp[104], w_fp[51], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[51], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9628,7 +9628,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 461 - FFV1_0( w_fp[3], w_fp[50], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[50], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9643,7 +9643,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 462 - FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9656,7 +9656,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 463 - FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9669,7 +9669,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 464 - FFV1_0( w_fp[3], w_fp[91], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[91], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9684,7 +9684,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 465 - VVV1_0( w_fp[62], w_fp[1], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9703,7 +9703,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 466 - FFV1_0( w_fp[3], w_fp[47], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9715,7 +9715,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9727,7 +9727,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9746,7 +9746,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 467 - FFV1_0( w_fp[38], w_fp[47], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9761,7 +9761,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 468 - FFV1_0( w_fp[38], w_fp[106], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[106], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9774,7 +9774,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 469 - FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9787,7 +9787,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 470 - VVV1_0( w_fp[104], w_fp[23], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[23], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9806,7 +9806,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 471 - FFV1_0( w_fp[48], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9821,7 +9821,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 472 - FFV1_0( w_fp[58], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9834,7 +9834,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 473 - FFV1_0( w_fp[48], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9847,7 +9847,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 474 - FFV1_0( w_fp[58], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9862,7 +9862,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 475 - VVV1_0( w_fp[86], w_fp[1], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9881,7 +9881,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 476 - FFV1_0( w_fp[38], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9893,7 +9893,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[113], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[113], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9905,7 +9905,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[114], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[114], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9924,7 +9924,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 477 - VVV1_0( w_fp[104], w_fp[20], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[20], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9943,7 +9943,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 478 - FFV1_0( w_fp[40], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9958,7 +9958,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 479 - FFV1_0( w_fp[60], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9971,7 +9971,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 480 - FFV1_0( w_fp[40], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9984,7 +9984,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 481 - FFV1_0( w_fp[60], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -9999,7 +9999,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 482 - VVV1_0( w_fp[62], w_fp[1], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[62], w_fp[1], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10018,7 +10018,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 483 - FFV1_0( w_fp[41], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10030,7 +10030,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10042,7 +10042,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10061,7 +10061,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 484 - FFV1_0( w_fp[3], w_fp[18], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[18], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10080,7 +10080,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 485 - FFV1_0( w_fp[12], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10099,7 +10099,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 486 - FFV1_0( w_fp[3], w_fp[102], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10118,7 +10118,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 487 - FFV1_0( w_fp[12], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10133,7 +10133,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 488 - FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10152,7 +10152,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 489 - FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10167,7 +10167,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 490 - FFV1_0( w_fp[3], w_fp[102], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10179,7 +10179,7 @@ namespace mg5amcCpu jamp_sv[49] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[53] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10191,7 +10191,7 @@ namespace mg5amcCpu jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[51] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10210,7 +10210,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 491 - FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10222,7 +10222,7 @@ namespace mg5amcCpu jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10234,7 +10234,7 @@ namespace mg5amcCpu jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10253,7 +10253,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 492 - VVV1_0( w_fp[92], w_fp[55], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[55], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10273,7 +10273,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[83], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[83], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10293,7 +10293,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[84], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[84], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10317,11 +10317,11 @@ namespace mg5amcCpu // *** DIAGRAM 493 OF 1240 *** // Wavefunction(s) for diagram number 493 - VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 0., 0., w_fp[92] ); - FFV1_2( w_fp[3], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[92] ); + FFV1_2( w_fp[3], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 493 - FFV1_0( w_fp[99], w_fp[87], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[87], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10334,7 +10334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 494 - FFV1_0( w_fp[99], w_fp[85], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[85], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10344,10 +10344,10 @@ namespace mg5amcCpu // *** DIAGRAM 495 OF 1240 *** // Wavefunction(s) for diagram number 495 - VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 0., 0., w_fp[102] ); + VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[102] ); // Amplitude(s) for diagram number 495 - VVV1_0( w_fp[102], w_fp[34], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[34], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10366,7 +10366,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 496 - FFV1_0( w_fp[3], w_fp[85], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[85], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10378,10 +10378,10 @@ namespace mg5amcCpu // *** DIAGRAM 497 OF 1240 *** // Wavefunction(s) for diagram number 497 - VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 497 - VVV1_0( w_fp[104], w_fp[34], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[34], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10400,7 +10400,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 498 - FFV1_0( w_fp[3], w_fp[87], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[87], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10412,12 +10412,12 @@ namespace mg5amcCpu // *** DIAGRAM 499 OF 1240 *** // Wavefunction(s) for diagram number 499 - VVVV1P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[111] ); - VVVV3P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[109] ); + VVVV1P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[111] ); + VVVV3P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[92], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[109] ); // Amplitude(s) for diagram number 499 - FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10429,7 +10429,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10441,7 +10441,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10457,10 +10457,10 @@ namespace mg5amcCpu // *** DIAGRAM 500 OF 1240 *** // Wavefunction(s) for diagram number 500 - FFV1_1( w_fp[77], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[62] ); + FFV1_1( w_fp[77], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[62] ); // Amplitude(s) for diagram number 500 - FFV1_0( w_fp[46], w_fp[62], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[62], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10470,10 +10470,10 @@ namespace mg5amcCpu // *** DIAGRAM 501 OF 1240 *** // Wavefunction(s) for diagram number 501 - FFV1_2( w_fp[46], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[114] ); + FFV1_2( w_fp[46], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[114] ); // Amplitude(s) for diagram number 501 - FFV1_0( w_fp[114], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[114], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10486,7 +10486,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 502 - FFV1_0( w_fp[46], w_fp[77], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10501,7 +10501,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 503 - FFV1_0( w_fp[41], w_fp[62], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[62], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10511,10 +10511,10 @@ namespace mg5amcCpu // *** DIAGRAM 504 OF 1240 *** // Wavefunction(s) for diagram number 504 - FFV1_2( w_fp[41], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[113] ); + FFV1_2( w_fp[41], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[113] ); // Amplitude(s) for diagram number 504 - FFV1_0( w_fp[113], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[113], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10527,7 +10527,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 505 - FFV1_0( w_fp[41], w_fp[77], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10542,7 +10542,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 506 - FFV1_0( w_fp[3], w_fp[62], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[62], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10557,7 +10557,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 507 - FFV1_0( w_fp[99], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10569,10 +10569,10 @@ namespace mg5amcCpu // *** DIAGRAM 508 OF 1240 *** // Wavefunction(s) for diagram number 508 - VVV1P0_1( w_fp[92], w_fp[27], COUPs[0], 0., 0., w_fp[62] ); + VVV1P0_1( w_fp[92], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[62] ); // Amplitude(s) for diagram number 508 - FFV1_0( w_fp[3], w_fp[77], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10588,10 +10588,10 @@ namespace mg5amcCpu // *** DIAGRAM 509 OF 1240 *** // Wavefunction(s) for diagram number 509 - FFV1_1( w_fp[2], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[112] ); + FFV1_1( w_fp[2], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[112] ); // Amplitude(s) for diagram number 509 - FFV1_0( w_fp[56], w_fp[112], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[112], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10604,7 +10604,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 510 - FFV1_0( w_fp[21], w_fp[112], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[112], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10617,7 +10617,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 511 - VVV1_0( w_fp[102], w_fp[103], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[103], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10636,7 +10636,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 512 - FFV1_0( w_fp[21], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10651,7 +10651,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 513 - VVV1_0( w_fp[104], w_fp[103], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[103], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10670,7 +10670,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 514 - FFV1_0( w_fp[56], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10685,7 +10685,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 515 - FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10697,7 +10697,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10709,7 +10709,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10725,10 +10725,10 @@ namespace mg5amcCpu // *** DIAGRAM 516 OF 1240 *** // Wavefunction(s) for diagram number 516 - FFV1_2( w_fp[52], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[86] ); + FFV1_2( w_fp[52], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[86] ); // Amplitude(s) for diagram number 516 - FFV1_0( w_fp[86], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10738,10 +10738,10 @@ namespace mg5amcCpu // *** DIAGRAM 517 OF 1240 *** // Wavefunction(s) for diagram number 517 - FFV1_1( w_fp[33], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + FFV1_1( w_fp[33], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 517 - FFV1_0( w_fp[52], w_fp[98], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[98], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10754,7 +10754,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 518 - FFV1_0( w_fp[52], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10769,7 +10769,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 519 - FFV1_0( w_fp[86], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10779,10 +10779,10 @@ namespace mg5amcCpu // *** DIAGRAM 520 OF 1240 *** // Wavefunction(s) for diagram number 520 - FFV1_1( w_fp[47], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[106] ); + FFV1_1( w_fp[47], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[106] ); // Amplitude(s) for diagram number 520 - FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10795,7 +10795,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 521 - FFV1_0( w_fp[52], w_fp[47], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10810,7 +10810,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 522 - FFV1_0( w_fp[86], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[86], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10825,7 +10825,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 523 - FFV1_0( w_fp[52], w_fp[112], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[112], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10840,7 +10840,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 524 - FFV1_0( w_fp[52], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10859,7 +10859,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 525 - FFV1_0( w_fp[65], w_fp[112], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[112], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10874,7 +10874,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 526 - FFV1_0( w_fp[3], w_fp[112], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10893,7 +10893,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 527 - FFV1_0( w_fp[99], w_fp[93], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[93], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10908,7 +10908,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 528 - FFV1_0( w_fp[99], w_fp[2], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10927,7 +10927,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 529 - FFV1_0( w_fp[3], w_fp[93], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[93], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10946,7 +10946,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 530 - FFV1_0( w_fp[65], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10965,7 +10965,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 531 - VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -10985,7 +10985,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11005,7 +11005,7 @@ namespace mg5amcCpu jamp_sv[105] -= amp_sv[0]; jamp_sv[110] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11029,10 +11029,10 @@ namespace mg5amcCpu // *** DIAGRAM 532 OF 1240 *** // Wavefunction(s) for diagram number 532 - VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 532 - VVV1_0( w_fp[8], w_fp[6], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11056,10 +11056,10 @@ namespace mg5amcCpu // *** DIAGRAM 533 OF 1240 *** // Wavefunction(s) for diagram number 533 - VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 0., 0., w_fp[101] ); + VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[101] ); // Amplitude(s) for diagram number 533 - VVV1_0( w_fp[61], w_fp[6], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11086,7 +11086,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 534 - VVV1_0( w_fp[61], w_fp[8], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[8], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11113,7 +11113,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 535 - FFV1_0( w_fp[3], w_fp[47], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11132,7 +11132,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 536 - FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11147,7 +11147,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 537 - FFV1_0( w_fp[99], w_fp[47], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11162,7 +11162,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 538 - FFV1_0( w_fp[41], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11181,7 +11181,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 539 - FFV1_0( w_fp[41], w_fp[112], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[112], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11196,7 +11196,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 540 - FFV1_0( w_fp[113], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[113], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11211,7 +11211,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 541 - FFV1_0( w_fp[76], w_fp[112], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[112], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11226,7 +11226,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 542 - FFV1_0( w_fp[3], w_fp[112], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11245,7 +11245,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 543 - FFV1_0( w_fp[99], w_fp[97], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[97], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11260,7 +11260,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 544 - FFV1_0( w_fp[99], w_fp[2], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11279,7 +11279,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 545 - FFV1_0( w_fp[3], w_fp[97], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[97], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11298,7 +11298,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 546 - FFV1_0( w_fp[76], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11317,7 +11317,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 547 - VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11337,7 +11337,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[103] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11357,7 +11357,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[72], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11381,10 +11381,10 @@ namespace mg5amcCpu // *** DIAGRAM 548 OF 1240 *** // Wavefunction(s) for diagram number 548 - VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[72], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 548 - VVV1_0( w_fp[8], w_fp[4], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11411,7 +11411,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 549 - VVV1_0( w_fp[72], w_fp[4], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11438,7 +11438,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 550 - VVV1_0( w_fp[72], w_fp[8], w_fp[102], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[8], w_fp[102], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11465,7 +11465,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 551 - FFV1_0( w_fp[3], w_fp[33], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11484,7 +11484,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 552 - FFV1_0( w_fp[3], w_fp[98], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[98], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11499,7 +11499,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 553 - FFV1_0( w_fp[99], w_fp[33], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11514,7 +11514,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 554 - FFV1_0( w_fp[46], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11533,7 +11533,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 555 - FFV1_0( w_fp[46], w_fp[112], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[112], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11548,7 +11548,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 556 - FFV1_0( w_fp[114], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[114], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11560,10 +11560,10 @@ namespace mg5amcCpu // *** DIAGRAM 557 OF 1240 *** // Wavefunction(s) for diagram number 557 - VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 557 - VVV1_0( w_fp[86], w_fp[13], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[13], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11590,7 +11590,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 558 - VVV1_0( w_fp[86], w_fp[11], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[11], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11617,7 +11617,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 559 - VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11637,7 +11637,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11657,7 +11657,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11684,7 +11684,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 560 - VVV1_0( w_fp[102], w_fp[108], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[108], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11711,7 +11711,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 561 - VVV1_0( w_fp[102], w_fp[1], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[1], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11738,7 +11738,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 562 - VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11758,7 +11758,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11778,7 +11778,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[102], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11805,7 +11805,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 563 - VVV1_0( w_fp[104], w_fp[108], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[108], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11832,7 +11832,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 564 - VVV1_0( w_fp[104], w_fp[1], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[1], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11859,7 +11859,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 565 - VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11879,7 +11879,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[101] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11899,7 +11899,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11923,12 +11923,12 @@ namespace mg5amcCpu // *** DIAGRAM 566 OF 1240 *** // Wavefunction(s) for diagram number 566 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[105] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[107] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[105] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[107] ); // Amplitude(s) for diagram number 566 - VVV1_0( w_fp[8], w_fp[6], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[105], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11948,7 +11948,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11968,7 +11968,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -11992,12 +11992,12 @@ namespace mg5amcCpu // *** DIAGRAM 567 OF 1240 *** // Wavefunction(s) for diagram number 567 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[96] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[90] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[88] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[96] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[88] ); // Amplitude(s) for diagram number 567 - VVV1_0( w_fp[8], w_fp[4], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12017,7 +12017,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[103] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12037,7 +12037,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[88], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[88], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12064,7 +12064,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 568 - VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12084,7 +12084,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12104,7 +12104,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[101] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12131,7 +12131,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 569 - VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12151,7 +12151,7 @@ namespace mg5amcCpu jamp_sv[110] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12171,7 +12171,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[110] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12198,7 +12198,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 570 - VVV1_0( w_fp[8], w_fp[27], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[27], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12225,7 +12225,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 571 - VVV1_0( w_fp[1], w_fp[27], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12252,7 +12252,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 572 - VVV1_0( w_fp[1], w_fp[8], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12279,7 +12279,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 573 - VVV1_0( w_fp[86], w_fp[37], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[37], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12298,7 +12298,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 574 - FFV1_0( w_fp[3], w_fp[36], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[36], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12313,7 +12313,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 575 - FFV1_0( w_fp[99], w_fp[100], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[100], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12326,7 +12326,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 576 - FFV1_0( w_fp[99], w_fp[36], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[36], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12339,7 +12339,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 577 - FFV1_0( w_fp[3], w_fp[100], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[100], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12354,7 +12354,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 578 - VVV1_0( w_fp[104], w_fp[1], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[1], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12373,7 +12373,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 579 - FFV1_0( w_fp[3], w_fp[33], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12385,7 +12385,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12397,7 +12397,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[88], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12416,7 +12416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 580 - FFV1_0( w_fp[41], w_fp[33], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12431,7 +12431,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 581 - FFV1_0( w_fp[41], w_fp[98], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[98], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12444,7 +12444,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 582 - FFV1_0( w_fp[113], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[113], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12457,7 +12457,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 583 - VVV1_0( w_fp[86], w_fp[51], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[51], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12476,7 +12476,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 584 - FFV1_0( w_fp[3], w_fp[49], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[49], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12491,7 +12491,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 585 - FFV1_0( w_fp[99], w_fp[91], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[91], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12504,7 +12504,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 586 - FFV1_0( w_fp[99], w_fp[49], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[49], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12517,7 +12517,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 587 - FFV1_0( w_fp[3], w_fp[91], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[91], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12532,7 +12532,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 588 - VVV1_0( w_fp[102], w_fp[1], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[1], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12551,7 +12551,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 589 - FFV1_0( w_fp[3], w_fp[47], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[105], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12563,7 +12563,7 @@ namespace mg5amcCpu jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12575,7 +12575,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[107], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12594,7 +12594,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 590 - FFV1_0( w_fp[46], w_fp[47], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12609,7 +12609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 591 - FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12622,7 +12622,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 592 - FFV1_0( w_fp[114], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[114], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12635,7 +12635,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 593 - VVV1_0( w_fp[86], w_fp[54], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[54], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12654,7 +12654,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 594 - FFV1_0( w_fp[53], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12669,7 +12669,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 595 - FFV1_0( w_fp[78], w_fp[112], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[112], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12682,7 +12682,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 596 - FFV1_0( w_fp[53], w_fp[112], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[112], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12695,7 +12695,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 597 - FFV1_0( w_fp[78], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12710,7 +12710,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 598 - VVV1_0( w_fp[104], w_fp[1], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[1], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12729,7 +12729,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 599 - FFV1_0( w_fp[46], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12741,7 +12741,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12753,7 +12753,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[88], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12772,7 +12772,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 600 - VVV1_0( w_fp[86], w_fp[20], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[20], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12791,7 +12791,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 601 - FFV1_0( w_fp[28], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12806,7 +12806,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 602 - FFV1_0( w_fp[60], w_fp[112], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[112], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12819,7 +12819,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 603 - FFV1_0( w_fp[28], w_fp[112], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[112], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12832,7 +12832,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 604 - FFV1_0( w_fp[60], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12847,7 +12847,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 605 - VVV1_0( w_fp[102], w_fp[1], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[102], w_fp[1], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12866,7 +12866,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 606 - FFV1_0( w_fp[41], w_fp[2], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[105], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12878,7 +12878,7 @@ namespace mg5amcCpu jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12890,7 +12890,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[107], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12909,7 +12909,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 607 - FFV1_0( w_fp[3], w_fp[15], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[15], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12928,7 +12928,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 608 - FFV1_0( w_fp[14], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12947,7 +12947,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 609 - FFV1_0( w_fp[3], w_fp[112], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12966,7 +12966,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 610 - FFV1_0( w_fp[14], w_fp[112], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[112], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -12981,7 +12981,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 611 - FFV1_0( w_fp[99], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13000,7 +13000,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 612 - FFV1_0( w_fp[99], w_fp[15], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[15], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13015,7 +13015,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 613 - FFV1_0( w_fp[3], w_fp[112], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13027,7 +13027,7 @@ namespace mg5amcCpu jamp_sv[73] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[112], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13039,7 +13039,7 @@ namespace mg5amcCpu jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[112], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[112], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13058,7 +13058,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 614 - FFV1_0( w_fp[99], w_fp[2], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13070,7 +13070,7 @@ namespace mg5amcCpu jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13082,7 +13082,7 @@ namespace mg5amcCpu jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13101,7 +13101,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 615 - VVV1_0( w_fp[92], w_fp[57], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[57], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13121,7 +13121,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[81], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[81], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13141,7 +13141,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVV1_0( w_fp[92], w_fp[82], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[82], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13165,11 +13165,11 @@ namespace mg5amcCpu // *** DIAGRAM 616 OF 1240 *** // Wavefunction(s) for diagram number 616 - VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 0., 0., w_fp[92] ); - FFV1_2( w_fp[3], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[92] ); + FFV1_2( w_fp[3], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 616 - FFV1_0( w_fp[99], w_fp[87], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[87], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13182,7 +13182,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 617 - FFV1_0( w_fp[99], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13192,10 +13192,10 @@ namespace mg5amcCpu // *** DIAGRAM 618 OF 1240 *** // Wavefunction(s) for diagram number 618 - VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 0., 0., w_fp[112] ); + VVV1P0_1( w_fp[92], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[112] ); // Amplitude(s) for diagram number 618 - VVV1_0( w_fp[112], w_fp[34], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[34], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13214,7 +13214,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 619 - FFV1_0( w_fp[3], w_fp[9], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13226,10 +13226,10 @@ namespace mg5amcCpu // *** DIAGRAM 620 OF 1240 *** // Wavefunction(s) for diagram number 620 - VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 0., 0., w_fp[86] ); + VVV1P0_1( w_fp[92], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 620 - VVV1_0( w_fp[86], w_fp[34], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[34], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13248,7 +13248,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 621 - FFV1_0( w_fp[3], w_fp[87], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[87], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13260,12 +13260,12 @@ namespace mg5amcCpu // *** DIAGRAM 622 OF 1240 *** // Wavefunction(s) for diagram number 622 - VVVV1P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[107] ); - VVVV3P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[105] ); + VVVV1P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[107] ); + VVVV3P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[92], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[105] ); // Amplitude(s) for diagram number 622 - FFV1_0( w_fp[3], w_fp[77], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[107], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13277,7 +13277,7 @@ namespace mg5amcCpu jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13289,7 +13289,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[105], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13305,10 +13305,10 @@ namespace mg5amcCpu // *** DIAGRAM 623 OF 1240 *** // Wavefunction(s) for diagram number 623 - FFV1_1( w_fp[77], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[102] ); + FFV1_1( w_fp[77], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[102] ); // Amplitude(s) for diagram number 623 - FFV1_0( w_fp[46], w_fp[102], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[102], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13318,10 +13318,10 @@ namespace mg5amcCpu // *** DIAGRAM 624 OF 1240 *** // Wavefunction(s) for diagram number 624 - FFV1_2( w_fp[46], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[88] ); + FFV1_2( w_fp[46], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[88] ); // Amplitude(s) for diagram number 624 - FFV1_0( w_fp[88], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13334,7 +13334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 625 - FFV1_0( w_fp[46], w_fp[77], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13349,7 +13349,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 626 - FFV1_0( w_fp[38], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13359,10 +13359,10 @@ namespace mg5amcCpu // *** DIAGRAM 627 OF 1240 *** // Wavefunction(s) for diagram number 627 - FFV1_2( w_fp[38], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[90] ); + FFV1_2( w_fp[38], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[90] ); // Amplitude(s) for diagram number 627 - FFV1_0( w_fp[90], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13375,7 +13375,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 628 - FFV1_0( w_fp[38], w_fp[77], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13390,7 +13390,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 629 - FFV1_0( w_fp[3], w_fp[102], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13405,7 +13405,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 630 - FFV1_0( w_fp[99], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13417,10 +13417,10 @@ namespace mg5amcCpu // *** DIAGRAM 631 OF 1240 *** // Wavefunction(s) for diagram number 631 - VVV1P0_1( w_fp[92], w_fp[24], COUPs[0], 0., 0., w_fp[102] ); + VVV1P0_1( w_fp[92], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[102] ); // Amplitude(s) for diagram number 631 - FFV1_0( w_fp[3], w_fp[77], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13436,10 +13436,10 @@ namespace mg5amcCpu // *** DIAGRAM 632 OF 1240 *** // Wavefunction(s) for diagram number 632 - FFV1_1( w_fp[2], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[96] ); + FFV1_1( w_fp[2], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[96] ); // Amplitude(s) for diagram number 632 - FFV1_0( w_fp[56], w_fp[96], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[96], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13452,7 +13452,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 633 - FFV1_0( w_fp[22], w_fp[96], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[96], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13465,7 +13465,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 634 - VVV1_0( w_fp[112], w_fp[103], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[103], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13484,7 +13484,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 635 - FFV1_0( w_fp[22], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13499,7 +13499,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 636 - VVV1_0( w_fp[86], w_fp[103], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[103], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13518,7 +13518,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 637 - FFV1_0( w_fp[56], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13533,7 +13533,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 638 - FFV1_0( w_fp[52], w_fp[2], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[107], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13545,7 +13545,7 @@ namespace mg5amcCpu jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13557,7 +13557,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[105], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13573,10 +13573,10 @@ namespace mg5amcCpu // *** DIAGRAM 639 OF 1240 *** // Wavefunction(s) for diagram number 639 - FFV1_2( w_fp[52], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[104] ); + FFV1_2( w_fp[52], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[104] ); // Amplitude(s) for diagram number 639 - FFV1_0( w_fp[104], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13586,10 +13586,10 @@ namespace mg5amcCpu // *** DIAGRAM 640 OF 1240 *** // Wavefunction(s) for diagram number 640 - FFV1_1( w_fp[33], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[114] ); + FFV1_1( w_fp[33], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[114] ); // Amplitude(s) for diagram number 640 - FFV1_0( w_fp[52], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13602,7 +13602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 641 - FFV1_0( w_fp[52], w_fp[33], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13617,7 +13617,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 642 - FFV1_0( w_fp[104], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13627,10 +13627,10 @@ namespace mg5amcCpu // *** DIAGRAM 643 OF 1240 *** // Wavefunction(s) for diagram number 643 - FFV1_1( w_fp[39], w_fp[92], COUPs[1], cIPD[0], cIPD[1], w_fp[106] ); + FFV1_1( w_fp[39], w_fp[92], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[106] ); // Amplitude(s) for diagram number 643 - FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[106], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13643,7 +13643,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 644 - FFV1_0( w_fp[52], w_fp[39], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13658,7 +13658,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 645 - FFV1_0( w_fp[104], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13673,7 +13673,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 646 - FFV1_0( w_fp[52], w_fp[96], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[96], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13688,7 +13688,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 647 - FFV1_0( w_fp[52], w_fp[2], w_fp[102], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[102], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13707,7 +13707,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 648 - FFV1_0( w_fp[65], w_fp[96], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[96], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13722,7 +13722,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 649 - FFV1_0( w_fp[3], w_fp[96], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13741,7 +13741,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 650 - FFV1_0( w_fp[99], w_fp[93], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[93], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13756,7 +13756,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 651 - FFV1_0( w_fp[99], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13775,7 +13775,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 652 - FFV1_0( w_fp[3], w_fp[93], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[93], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13794,7 +13794,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 653 - FFV1_0( w_fp[65], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13813,7 +13813,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 654 - VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13833,7 +13833,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[96] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13853,7 +13853,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[61], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13877,10 +13877,10 @@ namespace mg5amcCpu // *** DIAGRAM 655 OF 1240 *** // Wavefunction(s) for diagram number 655 - VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[61], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 655 - VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13904,10 +13904,10 @@ namespace mg5amcCpu // *** DIAGRAM 656 OF 1240 *** // Wavefunction(s) for diagram number 656 - VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 0., 0., w_fp[113] ); + VVV1P0_1( w_fp[92], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[113] ); // Amplitude(s) for diagram number 656 - VVV1_0( w_fp[61], w_fp[5], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[113], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13934,7 +13934,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 657 - VVV1_0( w_fp[61], w_fp[8], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[8], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13961,7 +13961,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 658 - FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13980,7 +13980,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 659 - FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[106], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -13995,7 +13995,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 660 - FFV1_0( w_fp[99], w_fp[39], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14010,7 +14010,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 661 - FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14029,7 +14029,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 662 - FFV1_0( w_fp[38], w_fp[96], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[96], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14044,7 +14044,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 663 - FFV1_0( w_fp[90], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14059,7 +14059,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 664 - FFV1_0( w_fp[71], w_fp[96], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[96], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14074,7 +14074,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 665 - FFV1_0( w_fp[3], w_fp[96], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14093,7 +14093,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 666 - FFV1_0( w_fp[99], w_fp[94], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[94], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14108,7 +14108,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 667 - FFV1_0( w_fp[99], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14127,7 +14127,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 668 - FFV1_0( w_fp[3], w_fp[94], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[94], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14146,7 +14146,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 669 - FFV1_0( w_fp[71], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14165,7 +14165,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 670 - VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14185,7 +14185,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[97] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14205,7 +14205,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[66], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14229,10 +14229,10 @@ namespace mg5amcCpu // *** DIAGRAM 671 OF 1240 *** // Wavefunction(s) for diagram number 671 - VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[66], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 671 - VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14259,7 +14259,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 672 - VVV1_0( w_fp[66], w_fp[4], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[113], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14286,7 +14286,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 673 - VVV1_0( w_fp[66], w_fp[8], w_fp[112], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[8], w_fp[112], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14313,7 +14313,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 674 - FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14332,7 +14332,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 675 - FFV1_0( w_fp[3], w_fp[114], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14347,7 +14347,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 676 - FFV1_0( w_fp[99], w_fp[33], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[33], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14362,7 +14362,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 677 - FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14381,7 +14381,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 678 - FFV1_0( w_fp[46], w_fp[96], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[96], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14396,7 +14396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 679 - FFV1_0( w_fp[88], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14408,10 +14408,10 @@ namespace mg5amcCpu // *** DIAGRAM 680 OF 1240 *** // Wavefunction(s) for diagram number 680 - VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[92], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[104] ); // Amplitude(s) for diagram number 680 - VVV1_0( w_fp[104], w_fp[13], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[13], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14438,7 +14438,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 681 - VVV1_0( w_fp[104], w_fp[10], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[10], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14465,7 +14465,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 682 - VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14485,7 +14485,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14505,7 +14505,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[104], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14532,7 +14532,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 683 - VVV1_0( w_fp[112], w_fp[108], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[108], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14559,7 +14559,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 684 - VVV1_0( w_fp[112], w_fp[1], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[1], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14586,7 +14586,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 685 - VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14606,7 +14606,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14626,7 +14626,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[112], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14653,7 +14653,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 686 - VVV1_0( w_fp[86], w_fp[108], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[108], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14680,7 +14680,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 687 - VVV1_0( w_fp[86], w_fp[1], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14707,7 +14707,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 688 - VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14727,7 +14727,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14747,7 +14747,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[86], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14771,12 +14771,12 @@ namespace mg5amcCpu // *** DIAGRAM 689 OF 1240 *** // Wavefunction(s) for diagram number 689 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[98] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[62] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[101] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[98] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[62] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[101] ); // Amplitude(s) for diagram number 689 - VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14796,7 +14796,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[96] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14816,7 +14816,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14840,12 +14840,12 @@ namespace mg5amcCpu // *** DIAGRAM 690 OF 1240 *** // Wavefunction(s) for diagram number 690 - VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[109] ); - VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[109] ); + VVVV3P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[92], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 690 - VVV1_0( w_fp[8], w_fp[4], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[109], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14865,7 +14865,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[97] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[110], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14885,7 +14885,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[111], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14912,7 +14912,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 691 - VVV1_0( w_fp[1], w_fp[8], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14932,7 +14932,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[99] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14952,7 +14952,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[105], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14979,7 +14979,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 692 - VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -14999,7 +14999,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[96] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15019,7 +15019,7 @@ namespace mg5amcCpu jamp_sv[97] += amp_sv[0]; jamp_sv[99] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[92], w_fp[1], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15046,7 +15046,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 693 - VVV1_0( w_fp[8], w_fp[24], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[24], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15073,7 +15073,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 694 - VVV1_0( w_fp[1], w_fp[24], w_fp[113], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[113], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15100,7 +15100,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 695 - VVV1_0( w_fp[1], w_fp[8], w_fp[102], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[102], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15127,7 +15127,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 696 - VVV1_0( w_fp[104], w_fp[37], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[37], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15146,7 +15146,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 697 - FFV1_0( w_fp[3], w_fp[35], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[35], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15161,7 +15161,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 698 - FFV1_0( w_fp[99], w_fp[100], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[100], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15174,7 +15174,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 699 - FFV1_0( w_fp[99], w_fp[35], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[35], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15187,7 +15187,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 700 - FFV1_0( w_fp[3], w_fp[100], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[100], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15202,7 +15202,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 701 - VVV1_0( w_fp[86], w_fp[1], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15221,7 +15221,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 702 - FFV1_0( w_fp[3], w_fp[33], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15233,7 +15233,7 @@ namespace mg5amcCpu jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15245,7 +15245,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15264,7 +15264,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 703 - FFV1_0( w_fp[38], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15279,7 +15279,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 704 - FFV1_0( w_fp[38], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15292,7 +15292,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 705 - FFV1_0( w_fp[90], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15305,7 +15305,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 706 - VVV1_0( w_fp[104], w_fp[45], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[45], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15324,7 +15324,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 707 - FFV1_0( w_fp[3], w_fp[43], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[43], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15339,7 +15339,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 708 - FFV1_0( w_fp[99], w_fp[89], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[89], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15352,7 +15352,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 709 - FFV1_0( w_fp[99], w_fp[43], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[43], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15365,7 +15365,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 710 - FFV1_0( w_fp[3], w_fp[89], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[89], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15380,7 +15380,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 711 - VVV1_0( w_fp[112], w_fp[1], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[1], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15399,7 +15399,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 712 - FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15411,7 +15411,7 @@ namespace mg5amcCpu jamp_sv[87] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15423,7 +15423,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15442,7 +15442,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 713 - FFV1_0( w_fp[46], w_fp[39], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15457,7 +15457,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 714 - FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[106], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15470,7 +15470,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 715 - FFV1_0( w_fp[88], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[88], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15483,7 +15483,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 716 - VVV1_0( w_fp[104], w_fp[54], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[54], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15502,7 +15502,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 717 - FFV1_0( w_fp[7], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15517,7 +15517,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 718 - FFV1_0( w_fp[78], w_fp[96], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[96], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15530,7 +15530,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 719 - FFV1_0( w_fp[7], w_fp[96], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[96], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15543,7 +15543,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 720 - FFV1_0( w_fp[78], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15558,7 +15558,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 721 - VVV1_0( w_fp[86], w_fp[1], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[86], w_fp[1], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15577,7 +15577,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 722 - FFV1_0( w_fp[46], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15589,7 +15589,7 @@ namespace mg5amcCpu jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15601,7 +15601,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15620,7 +15620,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 723 - VVV1_0( w_fp[104], w_fp[23], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[104], w_fp[23], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15639,7 +15639,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 724 - FFV1_0( w_fp[25], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15654,7 +15654,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 725 - FFV1_0( w_fp[58], w_fp[96], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[96], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15667,7 +15667,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 726 - FFV1_0( w_fp[25], w_fp[96], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[96], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15680,7 +15680,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 727 - FFV1_0( w_fp[58], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15695,7 +15695,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 728 - VVV1_0( w_fp[112], w_fp[1], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[112], w_fp[1], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15714,7 +15714,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 729 - FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15726,7 +15726,7 @@ namespace mg5amcCpu jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15738,7 +15738,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15757,7 +15757,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 730 - FFV1_0( w_fp[3], w_fp[17], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15776,7 +15776,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 731 - FFV1_0( w_fp[26], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15795,7 +15795,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 732 - FFV1_0( w_fp[3], w_fp[96], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15814,7 +15814,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 733 - FFV1_0( w_fp[26], w_fp[96], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[96], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15829,7 +15829,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 734 - FFV1_0( w_fp[99], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15848,7 +15848,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 735 - FFV1_0( w_fp[99], w_fp[17], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[17], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15863,7 +15863,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 736 - FFV1_0( w_fp[3], w_fp[96], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15875,7 +15875,7 @@ namespace mg5amcCpu jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[96], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15887,7 +15887,7 @@ namespace mg5amcCpu jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[96], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[96], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15906,7 +15906,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 737 - FFV1_0( w_fp[99], w_fp[2], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15918,7 +15918,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[87] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15930,7 +15930,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15949,7 +15949,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 738 - VVV1_0( w_fp[92], w_fp[73], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[73], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15969,7 +15969,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[92], w_fp[79], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[79], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -15989,7 +15989,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[92], w_fp[80], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[92], w_fp[80], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16013,10 +16013,10 @@ namespace mg5amcCpu // *** DIAGRAM 739 OF 1240 *** // Wavefunction(s) for diagram number 739 - FFV1_1( w_fp[77], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[92] ); + FFV1_1( w_fp[77], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[92] ); // Amplitude(s) for diagram number 739 - FFV1_0( w_fp[7], w_fp[92], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[92], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16028,7 +16028,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 740 - FFV1_0( w_fp[53], w_fp[92], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[92], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16037,10 +16037,10 @@ namespace mg5amcCpu // *** DIAGRAM 741 OF 1240 *** // Wavefunction(s) for diagram number 741 - FFV1_2( w_fp[46], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[99] ); + FFV1_2( w_fp[46], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[99] ); // Amplitude(s) for diagram number 741 - FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16052,7 +16052,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 742 - FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[85], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16064,7 +16064,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 743 - FFV1_0( w_fp[53], w_fp[9], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[9], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16076,7 +16076,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 744 - FFV1_0( w_fp[7], w_fp[85], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[85], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16088,7 +16088,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 745 - FFV1_0( w_fp[46], w_fp[92], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[92], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16101,7 +16101,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 746 - FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16111,10 +16111,10 @@ namespace mg5amcCpu // *** DIAGRAM 747 OF 1240 *** // Wavefunction(s) for diagram number 747 - VVV1P0_1( w_fp[0], w_fp[29], COUPs[0], 0., 0., w_fp[96] ); + VVV1P0_1( w_fp[0], w_fp[29], COUPs[0], 1.0, 0., 0., w_fp[96] ); // Amplitude(s) for diagram number 747 - FFV1_0( w_fp[46], w_fp[77], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16129,7 +16129,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 748 - FFV1_0( w_fp[25], w_fp[92], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[92], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16141,7 +16141,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 749 - FFV1_0( w_fp[48], w_fp[92], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[92], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16150,10 +16150,10 @@ namespace mg5amcCpu // *** DIAGRAM 750 OF 1240 *** // Wavefunction(s) for diagram number 750 - FFV1_2( w_fp[38], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[104] ); + FFV1_2( w_fp[38], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[104] ); // Amplitude(s) for diagram number 750 - FFV1_0( w_fp[104], w_fp[87], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[87], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16165,7 +16165,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 751 - FFV1_0( w_fp[104], w_fp[85], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[85], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16177,7 +16177,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 752 - FFV1_0( w_fp[48], w_fp[87], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[87], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16189,7 +16189,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 753 - FFV1_0( w_fp[25], w_fp[85], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[85], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16201,7 +16201,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 754 - FFV1_0( w_fp[38], w_fp[92], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[92], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16214,7 +16214,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 755 - FFV1_0( w_fp[104], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16224,10 +16224,10 @@ namespace mg5amcCpu // *** DIAGRAM 756 OF 1240 *** // Wavefunction(s) for diagram number 756 - VVV1P0_1( w_fp[0], w_fp[27], COUPs[0], 0., 0., w_fp[101] ); + VVV1P0_1( w_fp[0], w_fp[27], COUPs[0], 1.0, 0., 0., w_fp[101] ); // Amplitude(s) for diagram number 756 - FFV1_0( w_fp[38], w_fp[77], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16242,7 +16242,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 757 - FFV1_0( w_fp[28], w_fp[92], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[92], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16254,7 +16254,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 758 - FFV1_0( w_fp[40], w_fp[92], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[92], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16263,10 +16263,10 @@ namespace mg5amcCpu // *** DIAGRAM 759 OF 1240 *** // Wavefunction(s) for diagram number 759 - FFV1_2( w_fp[41], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[62] ); + FFV1_2( w_fp[41], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[62] ); // Amplitude(s) for diagram number 759 - FFV1_0( w_fp[62], w_fp[87], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[87], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16278,7 +16278,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 760 - FFV1_0( w_fp[62], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16290,7 +16290,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 761 - FFV1_0( w_fp[40], w_fp[87], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[87], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16302,7 +16302,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 762 - FFV1_0( w_fp[28], w_fp[9], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[9], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16314,7 +16314,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 763 - FFV1_0( w_fp[41], w_fp[92], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[92], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16327,7 +16327,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 764 - FFV1_0( w_fp[62], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16337,10 +16337,10 @@ namespace mg5amcCpu // *** DIAGRAM 765 OF 1240 *** // Wavefunction(s) for diagram number 765 - VVV1P0_1( w_fp[0], w_fp[24], COUPs[0], 0., 0., w_fp[98] ); + VVV1P0_1( w_fp[0], w_fp[24], COUPs[0], 1.0, 0., 0., w_fp[98] ); // Amplitude(s) for diagram number 765 - FFV1_0( w_fp[41], w_fp[77], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16355,7 +16355,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 766 - FFV1_0( w_fp[26], w_fp[92], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[92], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16368,7 +16368,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 767 - FFV1_0( w_fp[3], w_fp[92], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16383,7 +16383,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 768 - VVV1_0( w_fp[98], w_fp[34], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[34], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16402,7 +16402,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 769 - FFV1_0( w_fp[3], w_fp[85], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[85], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16417,7 +16417,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 770 - VVV1_0( w_fp[0], w_fp[34], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[34], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16436,7 +16436,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 771 - FFV1_0( w_fp[26], w_fp[85], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[85], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16446,12 +16446,12 @@ namespace mg5amcCpu // *** DIAGRAM 772 OF 1240 *** // Wavefunction(s) for diagram number 772 - VVVV1P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 0., 0., w_fp[85] ); - VVVV3P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 0., 0., w_fp[112] ); - VVVV4P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[85] ); + VVVV3P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[112] ); + VVVV4P0_1( w_fp[0], w_fp[24], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 772 - FFV1_0( w_fp[3], w_fp[77], w_fp[85], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[85], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16463,7 +16463,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16475,7 +16475,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16494,7 +16494,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 773 - FFV1_0( w_fp[14], w_fp[92], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[92], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16507,7 +16507,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 774 - FFV1_0( w_fp[3], w_fp[92], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16522,7 +16522,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 775 - VVV1_0( w_fp[101], w_fp[34], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[34], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16541,7 +16541,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 776 - FFV1_0( w_fp[3], w_fp[9], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16556,7 +16556,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 777 - VVV1_0( w_fp[0], w_fp[34], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[34], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16575,7 +16575,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 778 - FFV1_0( w_fp[14], w_fp[9], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[9], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16585,12 +16585,12 @@ namespace mg5amcCpu // *** DIAGRAM 779 OF 1240 *** // Wavefunction(s) for diagram number 779 - VVVV1P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 0., 0., w_fp[9] ); - VVVV3P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 0., 0., w_fp[110] ); - VVVV4P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 0., 0., w_fp[109] ); + VVVV1P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[9] ); + VVVV3P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[110] ); + VVVV4P0_1( w_fp[0], w_fp[27], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[109] ); // Amplitude(s) for diagram number 779 - FFV1_0( w_fp[3], w_fp[77], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16602,7 +16602,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16614,7 +16614,7 @@ namespace mg5amcCpu jamp_sv[37] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16633,7 +16633,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 780 - FFV1_0( w_fp[12], w_fp[92], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[92], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16646,7 +16646,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 781 - FFV1_0( w_fp[3], w_fp[92], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16661,7 +16661,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 782 - VVV1_0( w_fp[96], w_fp[34], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[34], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16680,7 +16680,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 783 - FFV1_0( w_fp[3], w_fp[87], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[87], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16695,7 +16695,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 784 - VVV1_0( w_fp[0], w_fp[34], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[34], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16714,7 +16714,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 785 - FFV1_0( w_fp[12], w_fp[87], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[87], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16724,12 +16724,12 @@ namespace mg5amcCpu // *** DIAGRAM 786 OF 1240 *** // Wavefunction(s) for diagram number 786 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 0., 0., w_fp[87] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 0., 0., w_fp[34] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 0., 0., w_fp[86] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[87] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[34] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[86] ); // Amplitude(s) for diagram number 786 - FFV1_0( w_fp[3], w_fp[77], w_fp[87], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[87], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16741,7 +16741,7 @@ namespace mg5amcCpu jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[34], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[34], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16753,7 +16753,7 @@ namespace mg5amcCpu jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16772,7 +16772,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 787 - FFV1_0( w_fp[3], w_fp[92], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16780,7 +16780,7 @@ namespace mg5amcCpu jamp_sv[25] -= amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[29] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[92], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16788,7 +16788,7 @@ namespace mg5amcCpu jamp_sv[26] += amp_sv[0]; jamp_sv[27] -= amp_sv[0]; jamp_sv[28] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[92], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[92], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16800,12 +16800,12 @@ namespace mg5amcCpu // *** DIAGRAM 788 OF 1240 *** // Wavefunction(s) for diagram number 788 - VVV1P0_1( w_fp[0], w_fp[30], COUPs[0], 0., 0., w_fp[92] ); - VVV1P0_1( w_fp[0], w_fp[31], COUPs[0], 0., 0., w_fp[88] ); - VVV1P0_1( w_fp[0], w_fp[32], COUPs[0], 0., 0., w_fp[106] ); + VVV1P0_1( w_fp[0], w_fp[30], COUPs[0], 1.0, 0., 0., w_fp[92] ); + VVV1P0_1( w_fp[0], w_fp[31], COUPs[0], 1.0, 0., 0., w_fp[88] ); + VVV1P0_1( w_fp[0], w_fp[32], COUPs[0], 1.0, 0., 0., w_fp[106] ); // Amplitude(s) for diagram number 788 - FFV1_0( w_fp[3], w_fp[77], w_fp[92], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[92], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16817,7 +16817,7 @@ namespace mg5amcCpu jamp_sv[35] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[88], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16829,7 +16829,7 @@ namespace mg5amcCpu jamp_sv[39] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[106], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[106], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16845,10 +16845,10 @@ namespace mg5amcCpu // *** DIAGRAM 789 OF 1240 *** // Wavefunction(s) for diagram number 789 - FFV1_2( w_fp[52], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[90] ); + FFV1_2( w_fp[52], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[90] ); // Amplitude(s) for diagram number 789 - FFV1_0( w_fp[90], w_fp[35], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[35], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16860,7 +16860,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 790 - FFV1_0( w_fp[90], w_fp[36], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[36], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16869,10 +16869,10 @@ namespace mg5amcCpu // *** DIAGRAM 791 OF 1240 *** // Wavefunction(s) for diagram number 791 - FFV1_1( w_fp[33], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[114] ); + FFV1_1( w_fp[33], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[114] ); // Amplitude(s) for diagram number 791 - FFV1_0( w_fp[22], w_fp[114], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[114], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16884,7 +16884,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 792 - FFV1_0( w_fp[21], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16896,7 +16896,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 793 - FFV1_0( w_fp[22], w_fp[36], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[36], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16908,7 +16908,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 794 - FFV1_0( w_fp[21], w_fp[35], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[35], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16920,7 +16920,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 795 - FFV1_0( w_fp[90], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16933,7 +16933,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 796 - FFV1_0( w_fp[52], w_fp[114], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[114], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16946,7 +16946,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 797 - FFV1_0( w_fp[52], w_fp[33], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16961,7 +16961,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 798 - FFV1_0( w_fp[90], w_fp[43], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[43], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16973,7 +16973,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 799 - FFV1_0( w_fp[90], w_fp[44], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[44], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16982,10 +16982,10 @@ namespace mg5amcCpu // *** DIAGRAM 800 OF 1240 *** // Wavefunction(s) for diagram number 800 - FFV1_1( w_fp[39], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[102] ); + FFV1_1( w_fp[39], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[102] ); // Amplitude(s) for diagram number 800 - FFV1_0( w_fp[56], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -16997,7 +16997,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 801 - FFV1_0( w_fp[21], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17009,7 +17009,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 802 - FFV1_0( w_fp[56], w_fp[44], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[44], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17021,7 +17021,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 803 - FFV1_0( w_fp[21], w_fp[43], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[43], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17033,7 +17033,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 804 - FFV1_0( w_fp[90], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17046,7 +17046,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 805 - FFV1_0( w_fp[52], w_fp[102], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[102], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17059,7 +17059,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 806 - FFV1_0( w_fp[52], w_fp[39], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17074,7 +17074,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 807 - FFV1_0( w_fp[90], w_fp[49], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[49], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17086,7 +17086,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 808 - FFV1_0( w_fp[90], w_fp[50], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[50], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17095,10 +17095,10 @@ namespace mg5amcCpu // *** DIAGRAM 809 OF 1240 *** // Wavefunction(s) for diagram number 809 - FFV1_1( w_fp[47], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[113] ); + FFV1_1( w_fp[47], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[113] ); // Amplitude(s) for diagram number 809 - FFV1_0( w_fp[56], w_fp[113], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[113], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17110,7 +17110,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 810 - FFV1_0( w_fp[22], w_fp[113], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[113], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17122,7 +17122,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 811 - FFV1_0( w_fp[56], w_fp[50], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[50], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17134,7 +17134,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 812 - FFV1_0( w_fp[22], w_fp[49], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[49], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17146,7 +17146,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 813 - FFV1_0( w_fp[90], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17159,7 +17159,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 814 - FFV1_0( w_fp[52], w_fp[113], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[113], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17172,7 +17172,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 815 - FFV1_0( w_fp[52], w_fp[47], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17187,7 +17187,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 816 - FFV1_0( w_fp[90], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17200,7 +17200,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 817 - FFV1_0( w_fp[90], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17215,7 +17215,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 818 - VVV1_0( w_fp[98], w_fp[103], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[103], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17234,7 +17234,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 819 - FFV1_0( w_fp[21], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17249,7 +17249,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 820 - VVV1_0( w_fp[0], w_fp[103], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[103], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17268,7 +17268,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 821 - FFV1_0( w_fp[21], w_fp[17], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[17], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17281,7 +17281,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 822 - FFV1_0( w_fp[52], w_fp[2], w_fp[85], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[85], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17293,7 +17293,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[112], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[112], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17305,7 +17305,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17324,7 +17324,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 823 - FFV1_0( w_fp[90], w_fp[15], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[15], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17337,7 +17337,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 824 - FFV1_0( w_fp[90], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17352,7 +17352,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 825 - VVV1_0( w_fp[101], w_fp[103], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[103], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17371,7 +17371,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 826 - FFV1_0( w_fp[22], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17386,7 +17386,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 827 - VVV1_0( w_fp[0], w_fp[103], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[103], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17405,7 +17405,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 828 - FFV1_0( w_fp[22], w_fp[15], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[15], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17418,7 +17418,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 829 - FFV1_0( w_fp[52], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17430,7 +17430,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[110], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17442,7 +17442,7 @@ namespace mg5amcCpu jamp_sv[77] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[109], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17461,7 +17461,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 830 - FFV1_0( w_fp[90], w_fp[18], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[18], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17474,7 +17474,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 831 - FFV1_0( w_fp[90], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17489,7 +17489,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 832 - VVV1_0( w_fp[96], w_fp[103], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[103], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17508,7 +17508,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 833 - FFV1_0( w_fp[56], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17523,7 +17523,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 834 - VVV1_0( w_fp[0], w_fp[103], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[103], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17542,7 +17542,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 835 - FFV1_0( w_fp[56], w_fp[18], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[56], w_fp[18], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17555,7 +17555,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 836 - FFV1_0( w_fp[52], w_fp[2], w_fp[87], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[87], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17567,7 +17567,7 @@ namespace mg5amcCpu jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[34], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[34], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17579,7 +17579,7 @@ namespace mg5amcCpu jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[86], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[86], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17598,7 +17598,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 837 - FFV1_0( w_fp[90], w_fp[2], w_fp[30], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[30], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17606,7 +17606,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - FFV1_0( w_fp[90], w_fp[2], w_fp[31], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[31], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17614,7 +17614,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - FFV1_0( w_fp[90], w_fp[2], w_fp[32], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[90], w_fp[2], w_fp[32], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17629,7 +17629,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 838 - FFV1_0( w_fp[52], w_fp[2], w_fp[92], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[92], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17641,7 +17641,7 @@ namespace mg5amcCpu jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[88], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17653,7 +17653,7 @@ namespace mg5amcCpu jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[106], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[106], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17669,10 +17669,10 @@ namespace mg5amcCpu // *** DIAGRAM 839 OF 1240 *** // Wavefunction(s) for diagram number 839 - VVV1P0_1( w_fp[0], w_fp[61], COUPs[0], 0., 0., w_fp[90] ); + VVV1P0_1( w_fp[0], w_fp[61], COUPs[0], 1.0, 0., 0., w_fp[90] ); // Amplitude(s) for diagram number 839 - VVV1_0( w_fp[90], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17699,7 +17699,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 840 - VVV1_0( w_fp[90], w_fp[11], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[11], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17726,7 +17726,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 841 - VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17746,7 +17746,7 @@ namespace mg5amcCpu jamp_sv[98] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17766,7 +17766,7 @@ namespace mg5amcCpu jamp_sv[115] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[5], w_fp[6], w_fp[90], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17790,10 +17790,10 @@ namespace mg5amcCpu // *** DIAGRAM 842 OF 1240 *** // Wavefunction(s) for diagram number 842 - VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 0., 0., w_fp[56] ); + VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[56] ); // Amplitude(s) for diagram number 842 - VVV1_0( w_fp[56], w_fp[63], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[63], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17820,7 +17820,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 843 - VVV1_0( w_fp[56], w_fp[64], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[64], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17847,7 +17847,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 844 - VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17867,7 +17867,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17887,7 +17887,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[61], w_fp[5], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17914,7 +17914,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 845 - VVV1_0( w_fp[0], w_fp[63], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[63], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17941,7 +17941,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 846 - VVV1_0( w_fp[0], w_fp[64], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[64], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17965,12 +17965,12 @@ namespace mg5amcCpu // *** DIAGRAM 847 OF 1240 *** // Wavefunction(s) for diagram number 847 - VVVV1P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 0., 0., w_fp[103] ); - VVVV3P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 0., 0., w_fp[22] ); - VVVV4P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[103] ); + VVVV3P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[22] ); + VVVV4P0_1( w_fp[0], w_fp[61], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 847 - VVV1_0( w_fp[8], w_fp[6], w_fp[103], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[103], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -17990,7 +17990,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18010,7 +18010,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18034,12 +18034,12 @@ namespace mg5amcCpu // *** DIAGRAM 848 OF 1240 *** // Wavefunction(s) for diagram number 848 - VVVV1P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 0., 0., w_fp[105] ); - VVVV3P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 0., 0., w_fp[107] ); + VVVV1P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[105] ); + VVVV3P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[0], w_fp[61], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[107] ); // Amplitude(s) for diagram number 848 - VVV1_0( w_fp[8], w_fp[5], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[105], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18059,7 +18059,7 @@ namespace mg5amcCpu jamp_sv[95] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18079,7 +18079,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[98] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18103,12 +18103,12 @@ namespace mg5amcCpu // *** DIAGRAM 849 OF 1240 *** // Wavefunction(s) for diagram number 849 - VVVV1P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 0., 0., w_fp[115] ); - VVVV3P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 0., 0., w_fp[116] ); - VVVV4P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 0., 0., w_fp[117] ); + VVVV1P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[115] ); + VVVV3P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[116] ); + VVVV4P0_1( w_fp[0], w_fp[8], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[117] ); // Amplitude(s) for diagram number 849 - VVV1_0( w_fp[61], w_fp[6], w_fp[115], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[115], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18128,7 +18128,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVV1_0( w_fp[61], w_fp[6], w_fp[116], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[116], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18148,7 +18148,7 @@ namespace mg5amcCpu jamp_sv[105] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[61], w_fp[6], w_fp[117], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[6], w_fp[117], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18172,12 +18172,12 @@ namespace mg5amcCpu // *** DIAGRAM 850 OF 1240 *** // Wavefunction(s) for diagram number 850 - VVVV1P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 0., 0., w_fp[118] ); - VVVV3P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 0., 0., w_fp[119] ); - VVVV4P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 0., 0., w_fp[120] ); + VVVV1P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[118] ); + VVVV3P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[119] ); + VVVV4P0_1( w_fp[0], w_fp[8], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[120] ); // Amplitude(s) for diagram number 850 - VVV1_0( w_fp[61], w_fp[5], w_fp[118], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[118], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18197,7 +18197,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[61], w_fp[5], w_fp[119], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[119], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18217,7 +18217,7 @@ namespace mg5amcCpu jamp_sv[98] -= amp_sv[0]; jamp_sv[100] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[61], w_fp[5], w_fp[120], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[5], w_fp[120], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18244,7 +18244,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 851 - VVVV1_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18264,7 +18264,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18284,7 +18284,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[61], w_fp[8], w_fp[29], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18311,7 +18311,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 852 - VVV1_0( w_fp[8], w_fp[29], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[29], w_fp[90], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18338,7 +18338,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 853 - VVV1_0( w_fp[61], w_fp[29], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[29], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18365,7 +18365,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 854 - VVV1_0( w_fp[61], w_fp[8], w_fp[96], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[61], w_fp[8], w_fp[96], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18392,7 +18392,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 855 - VVV1_0( w_fp[90], w_fp[45], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[45], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18411,7 +18411,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 856 - FFV1_0( w_fp[3], w_fp[44], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[44], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18426,7 +18426,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 857 - FFV1_0( w_fp[65], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18439,7 +18439,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 858 - FFV1_0( w_fp[3], w_fp[102], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18454,7 +18454,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 859 - FFV1_0( w_fp[65], w_fp[44], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[44], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18467,7 +18467,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 860 - VVV1_0( w_fp[0], w_fp[64], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[64], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18486,7 +18486,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 861 - FFV1_0( w_fp[3], w_fp[39], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[105], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18498,7 +18498,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18510,7 +18510,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[107], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18529,7 +18529,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 862 - FFV1_0( w_fp[41], w_fp[39], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18544,7 +18544,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 863 - FFV1_0( w_fp[41], w_fp[102], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[102], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18557,7 +18557,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 864 - FFV1_0( w_fp[62], w_fp[39], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[39], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18570,7 +18570,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 865 - VVV1_0( w_fp[90], w_fp[51], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[51], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18589,7 +18589,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 866 - FFV1_0( w_fp[3], w_fp[50], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[50], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18604,7 +18604,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 867 - FFV1_0( w_fp[65], w_fp[113], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[113], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18617,7 +18617,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 868 - FFV1_0( w_fp[3], w_fp[113], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18632,7 +18632,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 869 - FFV1_0( w_fp[65], w_fp[50], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[50], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18645,7 +18645,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 870 - VVV1_0( w_fp[0], w_fp[63], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[63], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18664,7 +18664,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 871 - FFV1_0( w_fp[3], w_fp[47], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[103], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18676,7 +18676,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18688,7 +18688,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18707,7 +18707,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 872 - FFV1_0( w_fp[38], w_fp[47], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18722,7 +18722,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 873 - FFV1_0( w_fp[38], w_fp[113], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[113], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18735,7 +18735,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 874 - FFV1_0( w_fp[104], w_fp[47], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[47], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18748,7 +18748,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 875 - VVV1_0( w_fp[90], w_fp[23], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[23], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18767,7 +18767,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 876 - FFV1_0( w_fp[48], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18782,7 +18782,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 877 - FFV1_0( w_fp[104], w_fp[93], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[93], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18795,7 +18795,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 878 - FFV1_0( w_fp[104], w_fp[2], w_fp[64], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[64], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18810,7 +18810,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 879 - FFV1_0( w_fp[48], w_fp[93], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[93], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18823,7 +18823,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 880 - VVV1_0( w_fp[0], w_fp[64], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[64], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18842,7 +18842,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 881 - FFV1_0( w_fp[38], w_fp[2], w_fp[105], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[105], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18854,7 +18854,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[95], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[95], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18866,7 +18866,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[107], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[107], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18885,7 +18885,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 882 - VVV1_0( w_fp[90], w_fp[20], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[90], w_fp[20], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18904,7 +18904,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 883 - FFV1_0( w_fp[40], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18919,7 +18919,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 884 - FFV1_0( w_fp[62], w_fp[93], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[93], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18932,7 +18932,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 885 - FFV1_0( w_fp[62], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18947,7 +18947,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 886 - FFV1_0( w_fp[40], w_fp[93], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[93], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18960,7 +18960,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 887 - VVV1_0( w_fp[0], w_fp[63], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[63], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18979,7 +18979,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 888 - FFV1_0( w_fp[41], w_fp[2], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[103], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -18991,7 +18991,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19003,7 +19003,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19022,7 +19022,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 889 - FFV1_0( w_fp[3], w_fp[18], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[18], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19041,7 +19041,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 890 - FFV1_0( w_fp[12], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19060,7 +19060,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 891 - FFV1_0( w_fp[3], w_fp[93], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[93], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19079,7 +19079,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 892 - FFV1_0( w_fp[65], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19098,7 +19098,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 893 - FFV1_0( w_fp[12], w_fp[93], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[93], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19113,7 +19113,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 894 - FFV1_0( w_fp[65], w_fp[18], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[65], w_fp[18], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19125,10 +19125,10 @@ namespace mg5amcCpu // *** DIAGRAM 895 OF 1240 *** // Wavefunction(s) for diagram number 895 - VVV1P0_1( w_fp[0], w_fp[66], COUPs[0], 0., 0., w_fp[65] ); + VVV1P0_1( w_fp[0], w_fp[66], COUPs[0], 1.0, 0., 0., w_fp[65] ); // Amplitude(s) for diagram number 895 - VVV1_0( w_fp[65], w_fp[13], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[13], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19155,7 +19155,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 896 - VVV1_0( w_fp[65], w_fp[11], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[11], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19182,7 +19182,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 897 - VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19202,7 +19202,7 @@ namespace mg5amcCpu jamp_sv[100] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19222,7 +19222,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[6], w_fp[65], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19249,7 +19249,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 898 - VVV1_0( w_fp[56], w_fp[69], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[69], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19276,7 +19276,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 899 - VVV1_0( w_fp[56], w_fp[70], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[70], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19303,7 +19303,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 900 - VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19323,7 +19323,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19343,7 +19343,7 @@ namespace mg5amcCpu jamp_sv[83] += amp_sv[0]; jamp_sv[107] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[66], w_fp[4], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19370,7 +19370,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 901 - VVV1_0( w_fp[0], w_fp[69], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[69], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19397,7 +19397,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 902 - VVV1_0( w_fp[0], w_fp[70], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[70], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19421,12 +19421,12 @@ namespace mg5amcCpu // *** DIAGRAM 903 OF 1240 *** // Wavefunction(s) for diagram number 903 - VVVV1P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 0., 0., w_fp[93] ); - VVVV3P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 0., 0., w_fp[90] ); - VVVV4P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[93] ); + VVVV3P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV4P0_1( w_fp[0], w_fp[66], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 903 - VVV1_0( w_fp[8], w_fp[6], w_fp[93], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[93], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19446,7 +19446,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[90], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19466,7 +19466,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19490,12 +19490,12 @@ namespace mg5amcCpu // *** DIAGRAM 904 OF 1240 *** // Wavefunction(s) for diagram number 904 - VVVV1P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 0., 0., w_fp[22] ); - VVVV3P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 0., 0., w_fp[103] ); - VVVV4P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 0., 0., w_fp[63] ); + VVVV1P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[22] ); + VVVV3P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[103] ); + VVVV4P0_1( w_fp[0], w_fp[66], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[63] ); // Amplitude(s) for diagram number 904 - VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19515,7 +19515,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[103], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[103], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19535,7 +19535,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[97] += amp_sv[0]; jamp_sv[100] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[63], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[63], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19559,12 +19559,12 @@ namespace mg5amcCpu // *** DIAGRAM 905 OF 1240 *** // Wavefunction(s) for diagram number 905 - VVVV1P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 0., 0., w_fp[107] ); - VVVV3P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 0., 0., w_fp[95] ); - VVVV4P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 0., 0., w_fp[105] ); + VVVV1P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[107] ); + VVVV3P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[95] ); + VVVV4P0_1( w_fp[0], w_fp[8], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[105] ); // Amplitude(s) for diagram number 905 - VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19584,7 +19584,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVV1_0( w_fp[66], w_fp[6], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19604,7 +19604,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[66], w_fp[6], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[6], w_fp[105], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19631,7 +19631,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 906 - VVV1_0( w_fp[66], w_fp[4], w_fp[118], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[118], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19651,7 +19651,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[66], w_fp[4], w_fp[119], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[119], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19671,7 +19671,7 @@ namespace mg5amcCpu jamp_sv[98] -= amp_sv[0]; jamp_sv[99] += amp_sv[0]; jamp_sv[100] -= amp_sv[0]; - VVV1_0( w_fp[66], w_fp[4], w_fp[120], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[4], w_fp[120], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19698,7 +19698,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 907 - VVVV1_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19718,7 +19718,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19738,7 +19738,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[66], w_fp[8], w_fp[27], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19765,7 +19765,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 908 - VVV1_0( w_fp[8], w_fp[27], w_fp[65], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[27], w_fp[65], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19792,7 +19792,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 909 - VVV1_0( w_fp[66], w_fp[27], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[27], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19819,7 +19819,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 910 - VVV1_0( w_fp[66], w_fp[8], w_fp[101], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[66], w_fp[8], w_fp[101], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19846,7 +19846,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 911 - VVV1_0( w_fp[65], w_fp[37], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[37], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19865,7 +19865,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 912 - FFV1_0( w_fp[3], w_fp[36], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[36], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19880,7 +19880,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 913 - FFV1_0( w_fp[71], w_fp[114], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[114], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19893,7 +19893,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 914 - FFV1_0( w_fp[3], w_fp[114], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19908,7 +19908,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 915 - FFV1_0( w_fp[71], w_fp[36], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[36], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19921,7 +19921,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 916 - VVV1_0( w_fp[0], w_fp[70], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[70], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19940,7 +19940,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 917 - FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19952,7 +19952,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[103], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19964,7 +19964,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19983,7 +19983,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 918 - FFV1_0( w_fp[41], w_fp[33], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -19998,7 +19998,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 919 - FFV1_0( w_fp[41], w_fp[114], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[114], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20011,7 +20011,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 920 - FFV1_0( w_fp[62], w_fp[33], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[33], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20024,7 +20024,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 921 - VVV1_0( w_fp[65], w_fp[51], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[51], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20043,7 +20043,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 922 - FFV1_0( w_fp[3], w_fp[49], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[49], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20058,7 +20058,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 923 - FFV1_0( w_fp[71], w_fp[113], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[113], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20071,7 +20071,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 924 - FFV1_0( w_fp[3], w_fp[113], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20086,7 +20086,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 925 - FFV1_0( w_fp[71], w_fp[49], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[49], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20099,7 +20099,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 926 - VVV1_0( w_fp[0], w_fp[69], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[69], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20118,7 +20118,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 927 - FFV1_0( w_fp[3], w_fp[47], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[93], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20130,7 +20130,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20142,7 +20142,7 @@ namespace mg5amcCpu jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20161,7 +20161,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 928 - FFV1_0( w_fp[46], w_fp[47], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20176,7 +20176,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 929 - FFV1_0( w_fp[46], w_fp[113], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[113], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20189,7 +20189,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 930 - FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[47], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20202,7 +20202,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 931 - VVV1_0( w_fp[65], w_fp[54], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[54], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20221,7 +20221,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 932 - FFV1_0( w_fp[53], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20236,7 +20236,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 933 - FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[94], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20249,7 +20249,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 934 - FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[70], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20264,7 +20264,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 935 - FFV1_0( w_fp[53], w_fp[94], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[94], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20277,7 +20277,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 936 - VVV1_0( w_fp[0], w_fp[70], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[70], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20296,7 +20296,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 937 - FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20308,7 +20308,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[103], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[103], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20320,7 +20320,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[63], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[63], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20339,7 +20339,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 938 - VVV1_0( w_fp[65], w_fp[20], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[65], w_fp[20], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20358,7 +20358,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 939 - FFV1_0( w_fp[28], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20373,7 +20373,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 940 - FFV1_0( w_fp[62], w_fp[94], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[94], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20386,7 +20386,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 941 - FFV1_0( w_fp[62], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20401,7 +20401,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 942 - FFV1_0( w_fp[28], w_fp[94], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[94], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20414,7 +20414,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 943 - VVV1_0( w_fp[0], w_fp[69], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[69], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20433,7 +20433,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 944 - FFV1_0( w_fp[41], w_fp[2], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[93], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20445,7 +20445,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20457,7 +20457,7 @@ namespace mg5amcCpu jamp_sv[50] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20476,7 +20476,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 945 - FFV1_0( w_fp[3], w_fp[15], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[15], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20495,7 +20495,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 946 - FFV1_0( w_fp[14], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20514,7 +20514,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 947 - FFV1_0( w_fp[3], w_fp[94], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[94], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20533,7 +20533,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 948 - FFV1_0( w_fp[71], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20552,7 +20552,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 949 - FFV1_0( w_fp[14], w_fp[94], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[94], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20567,7 +20567,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 950 - FFV1_0( w_fp[71], w_fp[15], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[15], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20579,10 +20579,10 @@ namespace mg5amcCpu // *** DIAGRAM 951 OF 1240 *** // Wavefunction(s) for diagram number 951 - VVV1P0_1( w_fp[0], w_fp[72], COUPs[0], 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[0], w_fp[72], COUPs[0], 1.0, 0., 0., w_fp[71] ); // Amplitude(s) for diagram number 951 - VVV1_0( w_fp[71], w_fp[13], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[13], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20609,7 +20609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 952 - VVV1_0( w_fp[71], w_fp[10], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[10], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20636,7 +20636,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 953 - VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20656,7 +20656,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20676,7 +20676,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[8], w_fp[4], w_fp[5], w_fp[71], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20703,7 +20703,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 954 - VVV1_0( w_fp[56], w_fp[74], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[74], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20730,7 +20730,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 955 - VVV1_0( w_fp[56], w_fp[75], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[75], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20757,7 +20757,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 956 - VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20777,7 +20777,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; - VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20797,7 +20797,7 @@ namespace mg5amcCpu jamp_sv[83] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[72], w_fp[4], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20824,7 +20824,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 957 - VVV1_0( w_fp[0], w_fp[74], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[74], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20851,7 +20851,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 958 - VVV1_0( w_fp[0], w_fp[75], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[75], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20875,12 +20875,12 @@ namespace mg5amcCpu // *** DIAGRAM 959 OF 1240 *** // Wavefunction(s) for diagram number 959 - VVVV1P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 0., 0., w_fp[94] ); - VVVV3P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 0., 0., w_fp[65] ); - VVVV4P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[94] ); + VVVV3P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[65] ); + VVVV4P0_1( w_fp[0], w_fp[72], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 959 - VVV1_0( w_fp[8], w_fp[5], w_fp[94], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[94], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20900,7 +20900,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[65], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[65], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20920,7 +20920,7 @@ namespace mg5amcCpu jamp_sv[93] -= amp_sv[0]; jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20944,12 +20944,12 @@ namespace mg5amcCpu // *** DIAGRAM 960 OF 1240 *** // Wavefunction(s) for diagram number 960 - VVVV1P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 0., 0., w_fp[90] ); - VVVV3P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 0., 0., w_fp[93] ); - VVVV4P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 0., 0., w_fp[69] ); + VVVV1P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[90] ); + VVVV3P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[93] ); + VVVV4P0_1( w_fp[0], w_fp[72], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[69] ); // Amplitude(s) for diagram number 960 - VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[90], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20969,7 +20969,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[93], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[93], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -20989,7 +20989,7 @@ namespace mg5amcCpu jamp_sv[76] -= amp_sv[0]; jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[69], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[69], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21016,7 +21016,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 961 - VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21036,7 +21036,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[72], w_fp[5], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21056,7 +21056,7 @@ namespace mg5amcCpu jamp_sv[93] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - VVV1_0( w_fp[72], w_fp[5], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[5], w_fp[105], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21083,7 +21083,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 962 - VVV1_0( w_fp[72], w_fp[4], w_fp[115], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[115], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21103,7 +21103,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVV1_0( w_fp[72], w_fp[4], w_fp[116], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[116], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21123,7 +21123,7 @@ namespace mg5amcCpu jamp_sv[76] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; - VVV1_0( w_fp[72], w_fp[4], w_fp[117], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[4], w_fp[117], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21150,7 +21150,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 963 - VVVV1_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21170,7 +21170,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21190,7 +21190,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[72], w_fp[8], w_fp[24], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21217,7 +21217,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 964 - VVV1_0( w_fp[8], w_fp[24], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[24], w_fp[71], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21244,7 +21244,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 965 - VVV1_0( w_fp[72], w_fp[24], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[24], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21271,7 +21271,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 966 - VVV1_0( w_fp[72], w_fp[8], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[72], w_fp[8], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21298,7 +21298,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 967 - VVV1_0( w_fp[71], w_fp[37], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[37], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21317,7 +21317,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 968 - FFV1_0( w_fp[3], w_fp[35], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[35], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21332,7 +21332,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 969 - FFV1_0( w_fp[76], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21345,7 +21345,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 970 - FFV1_0( w_fp[3], w_fp[114], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21360,7 +21360,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 971 - FFV1_0( w_fp[76], w_fp[35], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[35], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21373,7 +21373,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 972 - VVV1_0( w_fp[0], w_fp[75], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[75], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21392,7 +21392,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 973 - FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21404,7 +21404,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[93], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21416,7 +21416,7 @@ namespace mg5amcCpu jamp_sv[61] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21435,7 +21435,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 974 - FFV1_0( w_fp[38], w_fp[33], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21450,7 +21450,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 975 - FFV1_0( w_fp[38], w_fp[114], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[114], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21463,7 +21463,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 976 - FFV1_0( w_fp[104], w_fp[33], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[33], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21476,7 +21476,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 977 - VVV1_0( w_fp[71], w_fp[45], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[45], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21495,7 +21495,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 978 - FFV1_0( w_fp[3], w_fp[43], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[43], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21510,7 +21510,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 979 - FFV1_0( w_fp[76], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21523,7 +21523,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 980 - FFV1_0( w_fp[3], w_fp[102], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21538,7 +21538,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 981 - FFV1_0( w_fp[76], w_fp[43], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[43], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21551,7 +21551,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 982 - VVV1_0( w_fp[0], w_fp[74], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[74], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21570,7 +21570,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 983 - FFV1_0( w_fp[3], w_fp[39], w_fp[94], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[94], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21582,7 +21582,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21594,7 +21594,7 @@ namespace mg5amcCpu jamp_sv[85] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21613,7 +21613,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 984 - FFV1_0( w_fp[46], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21628,7 +21628,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 985 - FFV1_0( w_fp[46], w_fp[102], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[102], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21641,7 +21641,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 986 - FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[39], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21654,7 +21654,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 987 - VVV1_0( w_fp[71], w_fp[54], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[54], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21673,7 +21673,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 988 - FFV1_0( w_fp[7], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21688,7 +21688,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 989 - FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[97], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21701,7 +21701,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 990 - FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[75], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21716,7 +21716,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 991 - FFV1_0( w_fp[7], w_fp[97], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[97], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21729,7 +21729,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 992 - VVV1_0( w_fp[0], w_fp[75], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[75], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21748,7 +21748,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 993 - FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[90], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21760,7 +21760,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[93], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[93], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21772,7 +21772,7 @@ namespace mg5amcCpu jamp_sv[76] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[69], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[69], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21791,7 +21791,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 994 - VVV1_0( w_fp[71], w_fp[23], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[23], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21810,7 +21810,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 995 - FFV1_0( w_fp[25], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21825,7 +21825,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 996 - FFV1_0( w_fp[104], w_fp[97], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[97], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21838,7 +21838,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 997 - FFV1_0( w_fp[104], w_fp[2], w_fp[74], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[74], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21853,7 +21853,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 998 - FFV1_0( w_fp[25], w_fp[97], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[97], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21866,7 +21866,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 999 - VVV1_0( w_fp[0], w_fp[74], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[74], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21885,7 +21885,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1000 - FFV1_0( w_fp[38], w_fp[2], w_fp[94], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[94], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21897,7 +21897,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[65], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[65], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21909,7 +21909,7 @@ namespace mg5amcCpu jamp_sv[52] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21928,7 +21928,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1001 - FFV1_0( w_fp[3], w_fp[17], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21947,7 +21947,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1002 - FFV1_0( w_fp[26], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21966,7 +21966,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1003 - FFV1_0( w_fp[3], w_fp[97], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[97], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -21985,7 +21985,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1004 - FFV1_0( w_fp[76], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22004,7 +22004,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1005 - FFV1_0( w_fp[26], w_fp[97], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[97], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22019,7 +22019,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1006 - FFV1_0( w_fp[76], w_fp[17], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[76], w_fp[17], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22034,7 +22034,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1007 - VVV1_0( w_fp[56], w_fp[59], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[59], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22061,7 +22061,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1008 - VVV1_0( w_fp[56], w_fp[1], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[1], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22088,7 +22088,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1009 - VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22108,7 +22108,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22128,7 +22128,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[24], w_fp[6], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22155,7 +22155,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1010 - VVV1_0( w_fp[98], w_fp[108], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[108], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22182,7 +22182,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1011 - VVV1_0( w_fp[98], w_fp[1], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[1], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22209,7 +22209,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1012 - VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22229,7 +22229,7 @@ namespace mg5amcCpu jamp_sv[101] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22249,7 +22249,7 @@ namespace mg5amcCpu jamp_sv[103] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[6], w_fp[98], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22276,7 +22276,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1013 - VVV1_0( w_fp[0], w_fp[108], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[108], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22303,7 +22303,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1014 - VVV1_0( w_fp[0], w_fp[59], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[59], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22327,12 +22327,12 @@ namespace mg5amcCpu // *** DIAGRAM 1015 OF 1240 *** // Wavefunction(s) for diagram number 1015 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 0., 0., w_fp[11] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 0., 0., w_fp[42] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 0., 0., w_fp[76] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 1.0, 0., 0., w_fp[11] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 1.0, 0., 0., w_fp[42] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[8], COUPs[2], 1.0, 0., 0., w_fp[76] ); // Amplitude(s) for diagram number 1015 - VVV1_0( w_fp[24], w_fp[6], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22352,7 +22352,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVV1_0( w_fp[24], w_fp[6], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22372,7 +22372,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[24], w_fp[6], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[6], w_fp[76], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22396,12 +22396,12 @@ namespace mg5amcCpu // *** DIAGRAM 1016 OF 1240 *** // Wavefunction(s) for diagram number 1016 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 0., 0., w_fp[97] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 0., 0., w_fp[71] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 1.0, 0., 0., w_fp[97] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 1.0, 0., 0., w_fp[71] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[24], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 1016 - VVV1_0( w_fp[8], w_fp[6], w_fp[97], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[97], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22421,7 +22421,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22441,7 +22441,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22468,7 +22468,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1017 - VVV1_0( w_fp[1], w_fp[24], w_fp[118], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[118], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22488,7 +22488,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[24], w_fp[119], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[119], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22508,7 +22508,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[24], w_fp[120], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[24], w_fp[120], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22535,7 +22535,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1018 - VVV1_0( w_fp[1], w_fp[8], w_fp[85], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[85], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22555,7 +22555,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[112], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[112], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22575,7 +22575,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[111], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22602,7 +22602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1019 - VVV1_0( w_fp[56], w_fp[68], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[68], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22629,7 +22629,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1020 - VVV1_0( w_fp[56], w_fp[1], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[1], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22656,7 +22656,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1021 - VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22676,7 +22676,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22696,7 +22696,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[27], w_fp[5], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22723,7 +22723,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1022 - VVV1_0( w_fp[101], w_fp[108], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[108], w_fp[5], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22750,7 +22750,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1023 - VVV1_0( w_fp[101], w_fp[1], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[1], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22777,7 +22777,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1024 - VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22797,7 +22797,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22817,7 +22817,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[5], w_fp[101], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22844,7 +22844,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1025 - VVV1_0( w_fp[0], w_fp[108], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[108], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22871,7 +22871,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1026 - VVV1_0( w_fp[0], w_fp[68], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[68], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22898,7 +22898,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1027 - VVV1_0( w_fp[27], w_fp[5], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22918,7 +22918,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[27], w_fp[5], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22938,7 +22938,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[27], w_fp[5], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[5], w_fp[76], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22962,12 +22962,12 @@ namespace mg5amcCpu // *** DIAGRAM 1028 OF 1240 *** // Wavefunction(s) for diagram number 1028 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 0., 0., w_fp[10] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 0., 0., w_fp[16] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 1.0, 0., 0., w_fp[10] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 1.0, 0., 0., w_fp[16] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[27], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 1028 - VVV1_0( w_fp[8], w_fp[5], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -22987,7 +22987,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23007,7 +23007,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23034,7 +23034,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1029 - VVV1_0( w_fp[1], w_fp[27], w_fp[115], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[115], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23054,7 +23054,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[27], w_fp[116], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[116], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23074,7 +23074,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[27], w_fp[117], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[27], w_fp[117], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23101,7 +23101,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1030 - VVV1_0( w_fp[1], w_fp[8], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23121,7 +23121,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[110], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23141,7 +23141,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[109], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23168,7 +23168,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1031 - VVV1_0( w_fp[56], w_fp[67], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[67], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23195,7 +23195,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1032 - VVV1_0( w_fp[56], w_fp[1], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[56], w_fp[1], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23222,7 +23222,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1033 - VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23242,7 +23242,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23262,7 +23262,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[4], w_fp[29], w_fp[56], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23289,7 +23289,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1034 - VVV1_0( w_fp[96], w_fp[108], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[108], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23316,7 +23316,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1035 - VVV1_0( w_fp[96], w_fp[1], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[1], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23343,7 +23343,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1036 - VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23363,7 +23363,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23383,7 +23383,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[1], w_fp[8], w_fp[4], w_fp[96], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23410,7 +23410,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1037 - VVV1_0( w_fp[0], w_fp[108], w_fp[19], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[108], w_fp[19], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23437,7 +23437,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1038 - VVV1_0( w_fp[0], w_fp[67], w_fp[13], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[67], w_fp[13], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23464,7 +23464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1039 - VVV1_0( w_fp[4], w_fp[29], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23484,7 +23484,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVV1_0( w_fp[4], w_fp[29], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23504,7 +23504,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVV1_0( w_fp[4], w_fp[29], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[29], w_fp[76], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23528,12 +23528,12 @@ namespace mg5amcCpu // *** DIAGRAM 1040 OF 1240 *** // Wavefunction(s) for diagram number 1040 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 0., 0., w_fp[76] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 0., 0., w_fp[42] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 0., 0., w_fp[11] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[76] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[42] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[29], COUPs[2], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 1040 - VVV1_0( w_fp[8], w_fp[4], w_fp[76], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[76], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23553,7 +23553,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[42], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[42], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23573,7 +23573,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[90] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23600,7 +23600,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1041 - VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[107], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23620,7 +23620,7 @@ namespace mg5amcCpu jamp_sv[71] -= amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[29], w_fp[95], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[95], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23640,7 +23640,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[29], w_fp[105], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[29], w_fp[105], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23667,7 +23667,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1042 - VVV1_0( w_fp[1], w_fp[8], w_fp[87], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[87], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23687,7 +23687,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[34], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[34], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23707,7 +23707,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[86], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[86], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23734,7 +23734,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1043 - VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23754,7 +23754,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[118] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23774,7 +23774,7 @@ namespace mg5amcCpu jamp_sv[71] -= amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[30], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23794,7 +23794,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23814,7 +23814,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23834,7 +23834,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[31], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23854,7 +23854,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23874,7 +23874,7 @@ namespace mg5amcCpu jamp_sv[113] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23894,7 +23894,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[8], w_fp[32], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23921,7 +23921,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1044 - VVV1_0( w_fp[1], w_fp[30], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[30], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23941,7 +23941,7 @@ namespace mg5amcCpu jamp_sv[71] -= amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[31], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[31], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23961,7 +23961,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[95] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[32], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[32], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -23988,7 +23988,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1045 - VVV1_0( w_fp[1], w_fp[8], w_fp[92], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[92], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24008,7 +24008,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[88], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24028,7 +24028,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[106], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[106], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24055,7 +24055,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1046 - FFV1_0( w_fp[58], w_fp[114], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[114], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24067,7 +24067,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1047 - FFV1_0( w_fp[48], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24079,7 +24079,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1048 - FFV1_0( w_fp[104], w_fp[100], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[100], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24091,7 +24091,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1049 - FFV1_0( w_fp[104], w_fp[36], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[36], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24103,7 +24103,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1050 - FFV1_0( w_fp[48], w_fp[100], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[48], w_fp[100], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24115,7 +24115,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1051 - FFV1_0( w_fp[58], w_fp[36], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[36], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24127,7 +24127,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1052 - FFV1_0( w_fp[60], w_fp[114], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[114], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24139,7 +24139,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1053 - FFV1_0( w_fp[40], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24151,7 +24151,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1054 - FFV1_0( w_fp[62], w_fp[100], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[100], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24163,7 +24163,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1055 - FFV1_0( w_fp[62], w_fp[35], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[35], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24175,7 +24175,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1056 - FFV1_0( w_fp[40], w_fp[100], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[40], w_fp[100], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24187,7 +24187,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1057 - FFV1_0( w_fp[60], w_fp[35], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[35], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24199,7 +24199,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1058 - FFV1_0( w_fp[3], w_fp[114], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24214,7 +24214,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1059 - FFV1_0( w_fp[12], w_fp[114], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[114], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24227,7 +24227,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1060 - FFV1_0( w_fp[3], w_fp[100], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[100], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24242,7 +24242,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1061 - VVV1_0( w_fp[96], w_fp[1], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[1], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24261,7 +24261,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1062 - FFV1_0( w_fp[12], w_fp[100], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[100], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24274,7 +24274,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1063 - VVV1_0( w_fp[0], w_fp[67], w_fp[37], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[67], w_fp[37], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24293,7 +24293,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1064 - FFV1_0( w_fp[3], w_fp[33], w_fp[76], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[76], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24305,7 +24305,7 @@ namespace mg5amcCpu jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24317,7 +24317,7 @@ namespace mg5amcCpu jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24336,7 +24336,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1065 - FFV1_0( w_fp[78], w_fp[102], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[102], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24348,7 +24348,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1066 - FFV1_0( w_fp[53], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24360,7 +24360,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1067 - FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[89], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24372,7 +24372,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1068 - FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[44], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24384,7 +24384,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1069 - FFV1_0( w_fp[53], w_fp[89], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[53], w_fp[89], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24396,7 +24396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1070 - FFV1_0( w_fp[78], w_fp[44], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[44], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24408,7 +24408,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1071 - FFV1_0( w_fp[60], w_fp[102], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[102], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24420,7 +24420,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1072 - FFV1_0( w_fp[28], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24432,7 +24432,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1073 - FFV1_0( w_fp[62], w_fp[89], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[89], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24444,7 +24444,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1074 - FFV1_0( w_fp[62], w_fp[43], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[43], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24456,7 +24456,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1075 - FFV1_0( w_fp[28], w_fp[89], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[28], w_fp[89], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24468,7 +24468,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1076 - FFV1_0( w_fp[60], w_fp[43], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[43], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24480,7 +24480,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1077 - FFV1_0( w_fp[3], w_fp[102], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24495,7 +24495,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1078 - FFV1_0( w_fp[14], w_fp[102], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[102], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24508,7 +24508,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1079 - FFV1_0( w_fp[3], w_fp[89], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[89], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24523,7 +24523,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1080 - VVV1_0( w_fp[101], w_fp[1], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[1], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24542,7 +24542,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1081 - FFV1_0( w_fp[14], w_fp[89], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[89], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24555,7 +24555,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1082 - VVV1_0( w_fp[0], w_fp[68], w_fp[45], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[68], w_fp[45], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24574,7 +24574,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1083 - FFV1_0( w_fp[3], w_fp[39], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24586,7 +24586,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24598,7 +24598,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24617,7 +24617,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1084 - FFV1_0( w_fp[78], w_fp[113], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[113], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24629,7 +24629,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1085 - FFV1_0( w_fp[7], w_fp[113], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[113], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24641,7 +24641,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1086 - FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[91], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24653,7 +24653,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1087 - FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[50], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24665,7 +24665,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1088 - FFV1_0( w_fp[7], w_fp[91], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[7], w_fp[91], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24677,7 +24677,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1089 - FFV1_0( w_fp[78], w_fp[50], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[50], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24689,7 +24689,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1090 - FFV1_0( w_fp[58], w_fp[113], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[113], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24701,7 +24701,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1091 - FFV1_0( w_fp[25], w_fp[113], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[113], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24713,7 +24713,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1092 - FFV1_0( w_fp[104], w_fp[91], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[91], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24725,7 +24725,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1093 - FFV1_0( w_fp[104], w_fp[49], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[49], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24737,7 +24737,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1094 - FFV1_0( w_fp[25], w_fp[91], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[25], w_fp[91], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24749,7 +24749,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1095 - FFV1_0( w_fp[58], w_fp[49], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[49], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24761,7 +24761,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1096 - FFV1_0( w_fp[3], w_fp[113], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24776,7 +24776,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1097 - FFV1_0( w_fp[26], w_fp[113], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[113], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24789,7 +24789,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1098 - FFV1_0( w_fp[3], w_fp[91], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[91], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24804,7 +24804,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1099 - VVV1_0( w_fp[98], w_fp[1], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[1], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24823,7 +24823,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1100 - FFV1_0( w_fp[26], w_fp[91], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[26], w_fp[91], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24836,7 +24836,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1101 - VVV1_0( w_fp[0], w_fp[59], w_fp[51], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[59], w_fp[51], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24855,7 +24855,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1102 - FFV1_0( w_fp[3], w_fp[47], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[97], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24867,7 +24867,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24879,7 +24879,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24898,7 +24898,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1103 - FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[67], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24913,7 +24913,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1104 - FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[18], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24926,7 +24926,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1105 - FFV1_0( w_fp[78], w_fp[2], w_fp[96], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[2], w_fp[96], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24941,7 +24941,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1106 - VVV1_0( w_fp[96], w_fp[1], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[96], w_fp[1], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24960,7 +24960,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1107 - FFV1_0( w_fp[78], w_fp[18], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[78], w_fp[18], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24973,7 +24973,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1108 - VVV1_0( w_fp[0], w_fp[67], w_fp[54], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[67], w_fp[54], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -24992,7 +24992,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1109 - FFV1_0( w_fp[46], w_fp[2], w_fp[76], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[76], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25004,7 +25004,7 @@ namespace mg5amcCpu jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[42], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[42], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25016,7 +25016,7 @@ namespace mg5amcCpu jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25035,7 +25035,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1110 - FFV1_0( w_fp[104], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25050,7 +25050,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1111 - FFV1_0( w_fp[104], w_fp[15], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[15], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25063,7 +25063,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1112 - FFV1_0( w_fp[58], w_fp[2], w_fp[101], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[2], w_fp[101], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25078,7 +25078,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1113 - VVV1_0( w_fp[101], w_fp[1], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[101], w_fp[1], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25097,7 +25097,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1114 - FFV1_0( w_fp[58], w_fp[15], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[58], w_fp[15], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25110,7 +25110,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1115 - VVV1_0( w_fp[0], w_fp[68], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[68], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25129,7 +25129,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1116 - FFV1_0( w_fp[38], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25141,7 +25141,7 @@ namespace mg5amcCpu jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25153,7 +25153,7 @@ namespace mg5amcCpu jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25172,7 +25172,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1117 - FFV1_0( w_fp[62], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25187,7 +25187,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1118 - FFV1_0( w_fp[62], w_fp[17], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[17], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25200,7 +25200,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1119 - FFV1_0( w_fp[60], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25215,7 +25215,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1120 - VVV1_0( w_fp[98], w_fp[1], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[1], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25234,7 +25234,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1121 - FFV1_0( w_fp[60], w_fp[17], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[17], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25247,7 +25247,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1122 - VVV1_0( w_fp[0], w_fp[59], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[59], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25266,7 +25266,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1123 - FFV1_0( w_fp[41], w_fp[2], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[97], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25278,7 +25278,7 @@ namespace mg5amcCpu jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25290,7 +25290,7 @@ namespace mg5amcCpu jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25306,12 +25306,12 @@ namespace mg5amcCpu // *** DIAGRAM 1124 OF 1240 *** // Wavefunction(s) for diagram number 1124 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[71] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[97] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[71] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[97] ); // Amplitude(s) for diagram number 1124 - VVVV1_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25331,7 +25331,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25351,7 +25351,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[21], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25371,7 +25371,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVVV1_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25391,7 +25391,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV3_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25411,7 +25411,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV4_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[71], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25431,7 +25431,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVVV1_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25451,7 +25451,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV3_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25471,7 +25471,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[118] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[97], w_fp[8], w_fp[5], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25495,12 +25495,12 @@ namespace mg5amcCpu // *** DIAGRAM 1125 OF 1240 *** // Wavefunction(s) for diagram number 1125 - VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 0., 0., w_fp[59] ); - VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 0., 0., w_fp[20] ); - VVV1P0_1( w_fp[97], w_fp[5], COUPs[0], 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[59] ); + VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[20] ); + VVV1P0_1( w_fp[97], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[60] ); // Amplitude(s) for diagram number 1125 - VVV1_0( w_fp[8], w_fp[6], w_fp[59], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[59], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25520,7 +25520,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25540,7 +25540,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25564,12 +25564,12 @@ namespace mg5amcCpu // *** DIAGRAM 1126 OF 1240 *** // Wavefunction(s) for diagram number 1126 - VVV1P0_1( w_fp[21], w_fp[6], COUPs[0], 0., 0., w_fp[17] ); - VVV1P0_1( w_fp[71], w_fp[6], COUPs[0], 0., 0., w_fp[98] ); - VVV1P0_1( w_fp[97], w_fp[6], COUPs[0], 0., 0., w_fp[111] ); + VVV1P0_1( w_fp[21], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[17] ); + VVV1P0_1( w_fp[71], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[98] ); + VVV1P0_1( w_fp[97], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 1126 - VVV1_0( w_fp[8], w_fp[5], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25589,7 +25589,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25609,7 +25609,7 @@ namespace mg5amcCpu jamp_sv[102] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[111], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25636,7 +25636,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1127 - VVV1_0( w_fp[21], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25656,7 +25656,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[71], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25676,7 +25676,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[97], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[97], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25700,12 +25700,12 @@ namespace mg5amcCpu // *** DIAGRAM 1128 OF 1240 *** // Wavefunction(s) for diagram number 1128 - FFV1_2( w_fp[3], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_2( w_fp[3], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); - FFV1_2( w_fp[3], w_fp[97], COUPs[1], cIPD[0], cIPD[1], w_fp[68] ); + FFV1_2( w_fp[3], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_2( w_fp[3], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); + FFV1_2( w_fp[3], w_fp[97], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[68] ); // Amplitude(s) for diagram number 1128 - FFV1_0( w_fp[16], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25713,7 +25713,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; - FFV1_0( w_fp[10], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25721,7 +25721,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[93] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; - FFV1_0( w_fp[68], w_fp[39], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[68], w_fp[39], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25736,7 +25736,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1129 - FFV1_0( w_fp[3], w_fp[39], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25748,7 +25748,7 @@ namespace mg5amcCpu jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25760,7 +25760,7 @@ namespace mg5amcCpu jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25779,7 +25779,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1130 - FFV1_0( w_fp[41], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25787,7 +25787,7 @@ namespace mg5amcCpu jamp_sv[74] -= amp_sv[0]; jamp_sv[80] -= amp_sv[0]; jamp_sv[86] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25795,7 +25795,7 @@ namespace mg5amcCpu jamp_sv[78] += amp_sv[0]; jamp_sv[80] -= amp_sv[0]; jamp_sv[84] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[39], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[39], w_fp[97], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25810,7 +25810,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1131 - FFV1_0( w_fp[16], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25818,7 +25818,7 @@ namespace mg5amcCpu jamp_sv[115] -= amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - FFV1_0( w_fp[10], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25826,7 +25826,7 @@ namespace mg5amcCpu jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - FFV1_0( w_fp[68], w_fp[47], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[68], w_fp[47], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25841,7 +25841,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1132 - FFV1_0( w_fp[3], w_fp[47], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25853,7 +25853,7 @@ namespace mg5amcCpu jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25865,7 +25865,7 @@ namespace mg5amcCpu jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25884,7 +25884,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1133 - FFV1_0( w_fp[38], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25892,7 +25892,7 @@ namespace mg5amcCpu jamp_sv[98] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[47], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25900,7 +25900,7 @@ namespace mg5amcCpu jamp_sv[102] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[47], w_fp[97], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[47], w_fp[97], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25912,12 +25912,12 @@ namespace mg5amcCpu // *** DIAGRAM 1134 OF 1240 *** // Wavefunction(s) for diagram number 1134 - FFV1_1( w_fp[2], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); - FFV1_1( w_fp[2], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); - FFV1_1( w_fp[2], w_fp[97], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); + FFV1_1( w_fp[2], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); + FFV1_1( w_fp[2], w_fp[97], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); // Amplitude(s) for diagram number 1134 - FFV1_0( w_fp[38], w_fp[23], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[23], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25925,7 +25925,7 @@ namespace mg5amcCpu jamp_sv[7] -= amp_sv[0]; jamp_sv[31] -= amp_sv[0]; jamp_sv[55] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[21], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[21], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25933,7 +25933,7 @@ namespace mg5amcCpu jamp_sv[25] += amp_sv[0]; jamp_sv[31] -= amp_sv[0]; jamp_sv[49] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[71], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[71], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25948,7 +25948,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1135 - FFV1_0( w_fp[38], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25960,7 +25960,7 @@ namespace mg5amcCpu jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25972,7 +25972,7 @@ namespace mg5amcCpu jamp_sv[102] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25991,7 +25991,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1136 - FFV1_0( w_fp[41], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -25999,7 +25999,7 @@ namespace mg5amcCpu jamp_sv[6] -= amp_sv[0]; jamp_sv[30] -= amp_sv[0]; jamp_sv[54] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[21], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[21], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26007,7 +26007,7 @@ namespace mg5amcCpu jamp_sv[24] += amp_sv[0]; jamp_sv[30] -= amp_sv[0]; jamp_sv[48] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[71], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[71], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26022,7 +26022,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1137 - FFV1_0( w_fp[41], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26034,7 +26034,7 @@ namespace mg5amcCpu jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26046,7 +26046,7 @@ namespace mg5amcCpu jamp_sv[78] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26065,7 +26065,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1138 - FFV1_0( w_fp[3], w_fp[23], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26077,7 +26077,7 @@ namespace mg5amcCpu jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[54] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[55] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[21], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[21], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26089,7 +26089,7 @@ namespace mg5amcCpu jamp_sv[31] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[48] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[49] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[71], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[71], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26108,7 +26108,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1139 - FFV1_0( w_fp[16], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26120,7 +26120,7 @@ namespace mg5amcCpu jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[10], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26132,7 +26132,7 @@ namespace mg5amcCpu jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[68], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[68], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26148,12 +26148,12 @@ namespace mg5amcCpu // *** DIAGRAM 1140 OF 1240 *** // Wavefunction(s) for diagram number 1140 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[68] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[29] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[10] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[68] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[29] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 1140 - VVVV1_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26173,7 +26173,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVVV3_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26193,7 +26193,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVVV4_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[68], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26213,7 +26213,7 @@ namespace mg5amcCpu jamp_sv[100] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVVV1_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26233,7 +26233,7 @@ namespace mg5amcCpu jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVVV3_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26253,7 +26253,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV4_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[29], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26273,7 +26273,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV1_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26293,7 +26293,7 @@ namespace mg5amcCpu jamp_sv[110] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; - VVVV3_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26313,7 +26313,7 @@ namespace mg5amcCpu jamp_sv[113] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV4_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[10], w_fp[8], w_fp[4], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26337,12 +26337,12 @@ namespace mg5amcCpu // *** DIAGRAM 1141 OF 1240 *** // Wavefunction(s) for diagram number 1141 - VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 0., 0., w_fp[16] ); - VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 0., 0., w_fp[71] ); - VVV1P0_1( w_fp[10], w_fp[4], COUPs[0], 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[10], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 1141 - VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26362,7 +26362,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[71], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26382,7 +26382,7 @@ namespace mg5amcCpu jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26406,12 +26406,12 @@ namespace mg5amcCpu // *** DIAGRAM 1142 OF 1240 *** // Wavefunction(s) for diagram number 1142 - VVV1P0_1( w_fp[68], w_fp[6], COUPs[0], 0., 0., w_fp[23] ); - VVV1P0_1( w_fp[29], w_fp[6], COUPs[0], 0., 0., w_fp[60] ); - VVV1P0_1( w_fp[10], w_fp[6], COUPs[0], 0., 0., w_fp[20] ); + VVV1P0_1( w_fp[68], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[29], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[10], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[20] ); // Amplitude(s) for diagram number 1142 - VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26431,7 +26431,7 @@ namespace mg5amcCpu jamp_sv[100] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[60], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26451,7 +26451,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[20], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[20], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26478,7 +26478,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1143 - VVV1_0( w_fp[68], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[68], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26498,7 +26498,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - VVV1_0( w_fp[29], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[29], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26518,7 +26518,7 @@ namespace mg5amcCpu jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - VVV1_0( w_fp[10], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[10], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26542,12 +26542,12 @@ namespace mg5amcCpu // *** DIAGRAM 1144 OF 1240 *** // Wavefunction(s) for diagram number 1144 - FFV1_2( w_fp[3], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[59] ); - FFV1_2( w_fp[3], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[111] ); - FFV1_2( w_fp[3], w_fp[10], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + FFV1_2( w_fp[3], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[59] ); + FFV1_2( w_fp[3], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[111] ); + FFV1_2( w_fp[3], w_fp[10], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 1144 - FFV1_0( w_fp[59], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[59], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26555,7 +26555,7 @@ namespace mg5amcCpu jamp_sv[67] -= amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[71] += amp_sv[0]; - FFV1_0( w_fp[111], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[111], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26563,7 +26563,7 @@ namespace mg5amcCpu jamp_sv[68] += amp_sv[0]; jamp_sv[69] -= amp_sv[0]; jamp_sv[70] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[33], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[33], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26578,7 +26578,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1145 - FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26590,7 +26590,7 @@ namespace mg5amcCpu jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26602,7 +26602,7 @@ namespace mg5amcCpu jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26621,7 +26621,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1146 - FFV1_0( w_fp[41], w_fp[33], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26629,7 +26629,7 @@ namespace mg5amcCpu jamp_sv[50] -= amp_sv[0]; jamp_sv[56] -= amp_sv[0]; jamp_sv[62] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26637,7 +26637,7 @@ namespace mg5amcCpu jamp_sv[54] += amp_sv[0]; jamp_sv[56] -= amp_sv[0]; jamp_sv[60] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[33], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[33], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26652,7 +26652,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1147 - FFV1_0( w_fp[59], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[59], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26660,7 +26660,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[113] += amp_sv[0]; - FFV1_0( w_fp[111], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[111], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26668,7 +26668,7 @@ namespace mg5amcCpu jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[47], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[47], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26683,7 +26683,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1148 - FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26695,7 +26695,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26707,7 +26707,7 @@ namespace mg5amcCpu jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26726,7 +26726,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1149 - FFV1_0( w_fp[46], w_fp[47], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26734,7 +26734,7 @@ namespace mg5amcCpu jamp_sv[100] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[47], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26742,7 +26742,7 @@ namespace mg5amcCpu jamp_sv[103] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[47], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[47], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26754,12 +26754,12 @@ namespace mg5amcCpu // *** DIAGRAM 1150 OF 1240 *** // Wavefunction(s) for diagram number 1150 - FFV1_1( w_fp[2], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[17] ); - FFV1_1( w_fp[2], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[68] ); - FFV1_1( w_fp[2], w_fp[10], COUPs[1], cIPD[0], cIPD[1], w_fp[29] ); + FFV1_1( w_fp[2], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[17] ); + FFV1_1( w_fp[2], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[68] ); + FFV1_1( w_fp[2], w_fp[10], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[29] ); // Amplitude(s) for diagram number 1150 - FFV1_0( w_fp[46], w_fp[17], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[17], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26767,7 +26767,7 @@ namespace mg5amcCpu jamp_sv[13] -= amp_sv[0]; jamp_sv[37] -= amp_sv[0]; jamp_sv[79] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[68], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[68], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26775,7 +26775,7 @@ namespace mg5amcCpu jamp_sv[27] += amp_sv[0]; jamp_sv[37] -= amp_sv[0]; jamp_sv[73] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[29], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[29], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26790,7 +26790,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1151 - FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26802,7 +26802,7 @@ namespace mg5amcCpu jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26814,7 +26814,7 @@ namespace mg5amcCpu jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26833,7 +26833,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1152 - FFV1_0( w_fp[41], w_fp[17], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[17], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26841,7 +26841,7 @@ namespace mg5amcCpu jamp_sv[12] -= amp_sv[0]; jamp_sv[36] -= amp_sv[0]; jamp_sv[78] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[68], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[68], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26849,7 +26849,7 @@ namespace mg5amcCpu jamp_sv[26] += amp_sv[0]; jamp_sv[36] -= amp_sv[0]; jamp_sv[72] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[29], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[29], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26864,7 +26864,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1153 - FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26876,7 +26876,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26888,7 +26888,7 @@ namespace mg5amcCpu jamp_sv[56] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26907,7 +26907,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1154 - FFV1_0( w_fp[3], w_fp[17], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[17], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26919,7 +26919,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[78] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[79] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[68], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[68], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26931,7 +26931,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[72] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[73] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[29], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[29], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26950,7 +26950,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1155 - FFV1_0( w_fp[59], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[59], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26962,7 +26962,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[111], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[111], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26974,7 +26974,7 @@ namespace mg5amcCpu jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[111] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[98], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -26990,12 +26990,12 @@ namespace mg5amcCpu // *** DIAGRAM 1156 OF 1240 *** // Wavefunction(s) for diagram number 1156 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[98] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[27] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 0., 0., w_fp[111] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[98] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[27] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[111] ); // Amplitude(s) for diagram number 1156 - VVVV1_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27015,7 +27015,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVVV3_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27035,7 +27035,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; - VVVV4_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[98], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27055,7 +27055,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - VVVV1_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27075,7 +27075,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[97] -= amp_sv[0]; - VVVV3_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27095,7 +27095,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - VVVV4_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[27], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27115,7 +27115,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVVV1_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27135,7 +27135,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[102] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - VVVV3_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27155,7 +27155,7 @@ namespace mg5amcCpu jamp_sv[92] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[102] -= amp_sv[0]; - VVVV4_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[111], w_fp[8], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27179,12 +27179,12 @@ namespace mg5amcCpu // *** DIAGRAM 1157 OF 1240 *** // Wavefunction(s) for diagram number 1157 - VVV1P0_1( w_fp[98], w_fp[4], COUPs[0], 0., 0., w_fp[59] ); - VVV1P0_1( w_fp[27], w_fp[4], COUPs[0], 0., 0., w_fp[29] ); - VVV1P0_1( w_fp[111], w_fp[4], COUPs[0], 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[98], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[59] ); + VVV1P0_1( w_fp[27], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[29] ); + VVV1P0_1( w_fp[111], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 1157 - VVV1_0( w_fp[8], w_fp[5], w_fp[59], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[59], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27204,7 +27204,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[29], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27224,7 +27224,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27248,12 +27248,12 @@ namespace mg5amcCpu // *** DIAGRAM 1158 OF 1240 *** // Wavefunction(s) for diagram number 1158 - VVV1P0_1( w_fp[98], w_fp[5], COUPs[0], 0., 0., w_fp[17] ); - VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 0., 0., w_fp[21] ); - VVV1P0_1( w_fp[111], w_fp[5], COUPs[0], 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[98], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[17] ); + VVV1P0_1( w_fp[27], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[111], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[71] ); // Amplitude(s) for diagram number 1158 - VVV1_0( w_fp[8], w_fp[4], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27273,7 +27273,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27293,7 +27293,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[71], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27320,7 +27320,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1159 - VVV1_0( w_fp[98], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[98], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27340,7 +27340,7 @@ namespace mg5amcCpu jamp_sv[89] += amp_sv[0]; jamp_sv[102] += amp_sv[0]; jamp_sv[103] -= amp_sv[0]; - VVV1_0( w_fp[27], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[27], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27360,7 +27360,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[96] += amp_sv[0]; jamp_sv[97] -= amp_sv[0]; - VVV1_0( w_fp[111], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[111], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27384,12 +27384,12 @@ namespace mg5amcCpu // *** DIAGRAM 1160 OF 1240 *** // Wavefunction(s) for diagram number 1160 - FFV1_2( w_fp[3], w_fp[98], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_2( w_fp[3], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); - FFV1_2( w_fp[3], w_fp[111], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); + FFV1_2( w_fp[3], w_fp[98], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_2( w_fp[3], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); + FFV1_2( w_fp[3], w_fp[111], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); // Amplitude(s) for diagram number 1160 - FFV1_0( w_fp[16], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27397,7 +27397,7 @@ namespace mg5amcCpu jamp_sv[61] -= amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[65] += amp_sv[0]; - FFV1_0( w_fp[20], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27405,7 +27405,7 @@ namespace mg5amcCpu jamp_sv[62] += amp_sv[0]; jamp_sv[63] -= amp_sv[0]; jamp_sv[64] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[33], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[33], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27420,7 +27420,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1161 - FFV1_0( w_fp[3], w_fp[33], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27432,7 +27432,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27444,7 +27444,7 @@ namespace mg5amcCpu jamp_sv[63] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27463,7 +27463,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1162 - FFV1_0( w_fp[38], w_fp[33], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27471,7 +27471,7 @@ namespace mg5amcCpu jamp_sv[52] -= amp_sv[0]; jamp_sv[58] -= amp_sv[0]; jamp_sv[68] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[33], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27479,7 +27479,7 @@ namespace mg5amcCpu jamp_sv[55] += amp_sv[0]; jamp_sv[58] -= amp_sv[0]; jamp_sv[66] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[33], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[33], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27494,7 +27494,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1163 - FFV1_0( w_fp[16], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27502,7 +27502,7 @@ namespace mg5amcCpu jamp_sv[85] -= amp_sv[0]; jamp_sv[87] -= amp_sv[0]; jamp_sv[89] += amp_sv[0]; - FFV1_0( w_fp[20], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27510,7 +27510,7 @@ namespace mg5amcCpu jamp_sv[86] += amp_sv[0]; jamp_sv[87] -= amp_sv[0]; jamp_sv[88] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[39], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[39], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27525,7 +27525,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1164 - FFV1_0( w_fp[3], w_fp[39], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27537,7 +27537,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27549,7 +27549,7 @@ namespace mg5amcCpu jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27568,7 +27568,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1165 - FFV1_0( w_fp[46], w_fp[39], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27576,7 +27576,7 @@ namespace mg5amcCpu jamp_sv[76] -= amp_sv[0]; jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[39], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27584,7 +27584,7 @@ namespace mg5amcCpu jamp_sv[79] += amp_sv[0]; jamp_sv[82] -= amp_sv[0]; jamp_sv[90] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[39], w_fp[111], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[39], w_fp[111], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27596,12 +27596,12 @@ namespace mg5amcCpu // *** DIAGRAM 1166 OF 1240 *** // Wavefunction(s) for diagram number 1166 - FFV1_1( w_fp[2], w_fp[98], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); - FFV1_1( w_fp[2], w_fp[27], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); - FFV1_1( w_fp[2], w_fp[111], COUPs[1], cIPD[0], cIPD[1], w_fp[27] ); + FFV1_1( w_fp[2], w_fp[98], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[27], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); + FFV1_1( w_fp[2], w_fp[111], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[27] ); // Amplitude(s) for diagram number 1166 - FFV1_0( w_fp[46], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27609,7 +27609,7 @@ namespace mg5amcCpu jamp_sv[19] -= amp_sv[0]; jamp_sv[43] -= amp_sv[0]; jamp_sv[103] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[98], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[98], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27617,7 +27617,7 @@ namespace mg5amcCpu jamp_sv[29] += amp_sv[0]; jamp_sv[43] -= amp_sv[0]; jamp_sv[97] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[27], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[27], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27632,7 +27632,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1167 - FFV1_0( w_fp[46], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27644,7 +27644,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27656,7 +27656,7 @@ namespace mg5amcCpu jamp_sv[82] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27675,7 +27675,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1168 - FFV1_0( w_fp[38], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27683,7 +27683,7 @@ namespace mg5amcCpu jamp_sv[18] -= amp_sv[0]; jamp_sv[42] -= amp_sv[0]; jamp_sv[102] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[98], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[98], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27691,7 +27691,7 @@ namespace mg5amcCpu jamp_sv[28] += amp_sv[0]; jamp_sv[42] -= amp_sv[0]; jamp_sv[96] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[27], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[27], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27706,7 +27706,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1169 - FFV1_0( w_fp[38], w_fp[2], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27718,7 +27718,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27730,7 +27730,7 @@ namespace mg5amcCpu jamp_sv[58] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27749,7 +27749,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1170 - FFV1_0( w_fp[3], w_fp[23], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27761,7 +27761,7 @@ namespace mg5amcCpu jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[102] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[103] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[98], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[98], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27773,7 +27773,7 @@ namespace mg5amcCpu jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[96] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[97] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[27], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[27], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27792,7 +27792,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1171 - FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27804,7 +27804,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[20], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27816,7 +27816,7 @@ namespace mg5amcCpu jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[87] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[60], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27832,15 +27832,15 @@ namespace mg5amcCpu // *** DIAGRAM 1172 OF 1240 *** // Wavefunction(s) for diagram number 1172 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[60] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[20] ); - FFV1_2( w_fp[3], w_fp[60], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_2( w_fp[3], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[27] ); - FFV1_2( w_fp[3], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[98] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[60] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[20] ); + FFV1_2( w_fp[3], w_fp[60], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_2( w_fp[3], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[27] ); + FFV1_2( w_fp[3], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[98] ); // Amplitude(s) for diagram number 1172 - FFV1_0( w_fp[16], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27848,7 +27848,7 @@ namespace mg5amcCpu jamp_sv[43] -= amp_sv[0]; jamp_sv[45] -= amp_sv[0]; jamp_sv[47] += amp_sv[0]; - FFV1_0( w_fp[27], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[27], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27856,7 +27856,7 @@ namespace mg5amcCpu jamp_sv[44] += amp_sv[0]; jamp_sv[45] -= amp_sv[0]; jamp_sv[46] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[77], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27868,12 +27868,12 @@ namespace mg5amcCpu // *** DIAGRAM 1173 OF 1240 *** // Wavefunction(s) for diagram number 1173 - VVV1P0_1( w_fp[60], w_fp[6], COUPs[0], 0., 0., w_fp[23] ); - VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 0., 0., w_fp[68] ); - VVV1P0_1( w_fp[20], w_fp[6], COUPs[0], 0., 0., w_fp[29] ); + VVV1P0_1( w_fp[60], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[24], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[20], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[29] ); // Amplitude(s) for diagram number 1173 - FFV1_0( w_fp[3], w_fp[77], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27885,7 +27885,7 @@ namespace mg5amcCpu jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[47] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27897,7 +27897,7 @@ namespace mg5amcCpu jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[45] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27916,7 +27916,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1174 - FFV1_0( w_fp[41], w_fp[77], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27924,7 +27924,7 @@ namespace mg5amcCpu jamp_sv[26] -= amp_sv[0]; jamp_sv[32] -= amp_sv[0]; jamp_sv[38] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27932,7 +27932,7 @@ namespace mg5amcCpu jamp_sv[30] += amp_sv[0]; jamp_sv[32] -= amp_sv[0]; jamp_sv[36] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[77], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[77], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27944,12 +27944,12 @@ namespace mg5amcCpu // *** DIAGRAM 1175 OF 1240 *** // Wavefunction(s) for diagram number 1175 - FFV1_1( w_fp[2], w_fp[60], COUPs[1], cIPD[0], cIPD[1], w_fp[59] ); - FFV1_1( w_fp[2], w_fp[24], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); - FFV1_1( w_fp[2], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_1( w_fp[2], w_fp[60], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[59] ); + FFV1_1( w_fp[2], w_fp[24], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); + FFV1_1( w_fp[2], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 1175 - FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[59], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27957,7 +27957,7 @@ namespace mg5amcCpu jamp_sv[15] -= amp_sv[0]; jamp_sv[61] -= amp_sv[0]; jamp_sv[85] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[71], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[71], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27965,7 +27965,7 @@ namespace mg5amcCpu jamp_sv[51] += amp_sv[0]; jamp_sv[61] -= amp_sv[0]; jamp_sv[75] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[21], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[21], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27980,7 +27980,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1176 - FFV1_0( w_fp[52], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -27992,7 +27992,7 @@ namespace mg5amcCpu jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28004,7 +28004,7 @@ namespace mg5amcCpu jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28023,7 +28023,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1177 - FFV1_0( w_fp[52], w_fp[47], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28031,7 +28031,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28039,7 +28039,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[47], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[47], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28054,7 +28054,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1178 - FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[59], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28066,7 +28066,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[85] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[71], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[71], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28078,7 +28078,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[75] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[21], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[21], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28097,7 +28097,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1179 - FFV1_0( w_fp[16], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28109,7 +28109,7 @@ namespace mg5amcCpu jamp_sv[103] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[27], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[27], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28121,7 +28121,7 @@ namespace mg5amcCpu jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[105] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28140,7 +28140,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1180 - VVV1_0( w_fp[60], w_fp[72], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[60], w_fp[72], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28160,7 +28160,7 @@ namespace mg5amcCpu jamp_sv[103] += amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVV1_0( w_fp[24], w_fp[72], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[72], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28180,7 +28180,7 @@ namespace mg5amcCpu jamp_sv[104] -= amp_sv[0]; jamp_sv[105] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[20], w_fp[72], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[20], w_fp[72], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28207,7 +28207,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1181 - VVVV1_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28227,7 +28227,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVVV3_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28247,7 +28247,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - VVVV4_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[60], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28267,7 +28267,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV1_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28287,7 +28287,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV3_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28307,7 +28307,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - VVVV4_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[24], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28327,7 +28327,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV1_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28347,7 +28347,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[115] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVVV3_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28367,7 +28367,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[20], w_fp[1], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28391,12 +28391,12 @@ namespace mg5amcCpu // *** DIAGRAM 1182 OF 1240 *** // Wavefunction(s) for diagram number 1182 - VVV1P0_1( w_fp[60], w_fp[1], COUPs[0], 0., 0., w_fp[72] ); - VVV1P0_1( w_fp[24], w_fp[1], COUPs[0], 0., 0., w_fp[60] ); - VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 0., 0., w_fp[24] ); + VVV1P0_1( w_fp[60], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[72] ); + VVV1P0_1( w_fp[24], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 1182 - VVV1_0( w_fp[8], w_fp[6], w_fp[72], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[72], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28416,7 +28416,7 @@ namespace mg5amcCpu jamp_sv[107] += amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[118] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[60], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28436,7 +28436,7 @@ namespace mg5amcCpu jamp_sv[109] -= amp_sv[0]; jamp_sv[112] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[24], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28463,7 +28463,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1183 - VVV1_0( w_fp[1], w_fp[8], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28483,7 +28483,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[118] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28503,7 +28503,7 @@ namespace mg5amcCpu jamp_sv[109] += amp_sv[0]; jamp_sv[112] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[29], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[29], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28530,7 +28530,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1184 - FFV1_0( w_fp[3], w_fp[47], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28542,7 +28542,7 @@ namespace mg5amcCpu jamp_sv[107] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[118] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28554,7 +28554,7 @@ namespace mg5amcCpu jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[112] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28573,7 +28573,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1185 - FFV1_0( w_fp[16], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28581,7 +28581,7 @@ namespace mg5amcCpu jamp_sv[103] -= amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[107] += amp_sv[0]; - FFV1_0( w_fp[27], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[27], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28589,7 +28589,7 @@ namespace mg5amcCpu jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[98], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28604,7 +28604,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1186 - FFV1_0( w_fp[41], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28616,7 +28616,7 @@ namespace mg5amcCpu jamp_sv[38] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[84] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28628,7 +28628,7 @@ namespace mg5amcCpu jamp_sv[50] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[60] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[74] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28647,7 +28647,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1187 - FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[59], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28655,7 +28655,7 @@ namespace mg5amcCpu jamp_sv[14] -= amp_sv[0]; jamp_sv[60] -= amp_sv[0]; jamp_sv[84] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[71], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[71], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28663,7 +28663,7 @@ namespace mg5amcCpu jamp_sv[50] += amp_sv[0]; jamp_sv[60] -= amp_sv[0]; jamp_sv[74] += amp_sv[0]; - FFV1_0( w_fp[41], w_fp[21], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[21], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28675,15 +28675,15 @@ namespace mg5amcCpu // *** DIAGRAM 1188 OF 1240 *** // Wavefunction(s) for diagram number 1188 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[71] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 0., 0., w_fp[59] ); - FFV1_2( w_fp[3], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[24] ); - FFV1_2( w_fp[3], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[60] ); - FFV1_2( w_fp[3], w_fp[59], COUPs[1], cIPD[0], cIPD[1], w_fp[72] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[71] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[59] ); + FFV1_2( w_fp[3], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[24] ); + FFV1_2( w_fp[3], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[60] ); + FFV1_2( w_fp[3], w_fp[59], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[72] ); // Amplitude(s) for diagram number 1188 - FFV1_0( w_fp[24], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[24], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28691,7 +28691,7 @@ namespace mg5amcCpu jamp_sv[37] -= amp_sv[0]; jamp_sv[39] -= amp_sv[0]; jamp_sv[41] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28699,7 +28699,7 @@ namespace mg5amcCpu jamp_sv[38] += amp_sv[0]; jamp_sv[39] -= amp_sv[0]; jamp_sv[40] += amp_sv[0]; - FFV1_0( w_fp[72], w_fp[77], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[72], w_fp[77], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28711,12 +28711,12 @@ namespace mg5amcCpu // *** DIAGRAM 1189 OF 1240 *** // Wavefunction(s) for diagram number 1189 - VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 0., 0., w_fp[98] ); - VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 0., 0., w_fp[27] ); - VVV1P0_1( w_fp[59], w_fp[5], COUPs[0], 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[21], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[98] ); + VVV1P0_1( w_fp[71], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[27] ); + VVV1P0_1( w_fp[59], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[16] ); // Amplitude(s) for diagram number 1189 - FFV1_0( w_fp[3], w_fp[77], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28728,7 +28728,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[41] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28740,7 +28740,7 @@ namespace mg5amcCpu jamp_sv[39] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[42] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28759,7 +28759,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1190 - FFV1_0( w_fp[38], w_fp[77], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28767,7 +28767,7 @@ namespace mg5amcCpu jamp_sv[28] -= amp_sv[0]; jamp_sv[34] -= amp_sv[0]; jamp_sv[44] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[77], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28775,7 +28775,7 @@ namespace mg5amcCpu jamp_sv[31] += amp_sv[0]; jamp_sv[34] -= amp_sv[0]; jamp_sv[42] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[77], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[77], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28787,12 +28787,12 @@ namespace mg5amcCpu // *** DIAGRAM 1191 OF 1240 *** // Wavefunction(s) for diagram number 1191 - FFV1_1( w_fp[2], w_fp[21], COUPs[1], cIPD[0], cIPD[1], w_fp[29] ); - FFV1_1( w_fp[2], w_fp[71], COUPs[1], cIPD[0], cIPD[1], w_fp[68] ); - FFV1_1( w_fp[2], w_fp[59], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[21], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[29] ); + FFV1_1( w_fp[2], w_fp[71], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[68] ); + FFV1_1( w_fp[2], w_fp[59], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 1191 - FFV1_0( w_fp[52], w_fp[29], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[29], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28800,7 +28800,7 @@ namespace mg5amcCpu jamp_sv[21] -= amp_sv[0]; jamp_sv[67] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[68], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[68], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28808,7 +28808,7 @@ namespace mg5amcCpu jamp_sv[53] += amp_sv[0]; jamp_sv[67] -= amp_sv[0]; jamp_sv[99] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28823,7 +28823,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1192 - FFV1_0( w_fp[52], w_fp[2], w_fp[98], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[98], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28835,7 +28835,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28847,7 +28847,7 @@ namespace mg5amcCpu jamp_sv[88] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28866,7 +28866,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1193 - FFV1_0( w_fp[52], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28874,7 +28874,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28882,7 +28882,7 @@ namespace mg5amcCpu jamp_sv[85] += amp_sv[0]; jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[39], w_fp[59], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[39], w_fp[59], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28897,7 +28897,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1194 - FFV1_0( w_fp[3], w_fp[29], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[29], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28909,7 +28909,7 @@ namespace mg5amcCpu jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[109] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[68], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[68], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28921,7 +28921,7 @@ namespace mg5amcCpu jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[99] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[23], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28940,7 +28940,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1195 - FFV1_0( w_fp[24], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[24], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28952,7 +28952,7 @@ namespace mg5amcCpu jamp_sv[79] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[60], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28964,7 +28964,7 @@ namespace mg5amcCpu jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[81] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[72], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[72], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -28983,7 +28983,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1196 - VVV1_0( w_fp[21], w_fp[66], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[66], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29003,7 +29003,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVV1_0( w_fp[71], w_fp[66], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[71], w_fp[66], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29023,7 +29023,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[98] -= amp_sv[0]; jamp_sv[99] += amp_sv[0]; - VVV1_0( w_fp[59], w_fp[66], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[59], w_fp[66], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29050,7 +29050,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1197 - VVVV1_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29070,7 +29070,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - VVVV3_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29090,7 +29090,7 @@ namespace mg5amcCpu jamp_sv[83] += amp_sv[0]; jamp_sv[108] += amp_sv[0]; jamp_sv[109] -= amp_sv[0]; - VVVV4_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[21], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29110,7 +29110,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[109] -= amp_sv[0]; - VVVV1_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29130,7 +29130,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVVV3_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29150,7 +29150,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV4_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[71], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29170,7 +29170,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVVV1_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29190,7 +29190,7 @@ namespace mg5amcCpu jamp_sv[94] += amp_sv[0]; jamp_sv[98] += amp_sv[0]; jamp_sv[108] -= amp_sv[0]; - VVVV3_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29210,7 +29210,7 @@ namespace mg5amcCpu jamp_sv[99] -= amp_sv[0]; jamp_sv[108] -= amp_sv[0]; jamp_sv[109] += amp_sv[0]; - VVVV4_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[59], w_fp[1], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29234,12 +29234,12 @@ namespace mg5amcCpu // *** DIAGRAM 1198 OF 1240 *** // Wavefunction(s) for diagram number 1198 - VVV1P0_1( w_fp[21], w_fp[1], COUPs[0], 0., 0., w_fp[66] ); - VVV1P0_1( w_fp[71], w_fp[1], COUPs[0], 0., 0., w_fp[21] ); - VVV1P0_1( w_fp[59], w_fp[1], COUPs[0], 0., 0., w_fp[71] ); + VVV1P0_1( w_fp[21], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[66] ); + VVV1P0_1( w_fp[71], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[59], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[71] ); // Amplitude(s) for diagram number 1198 - VVV1_0( w_fp[8], w_fp[5], w_fp[66], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[66], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29259,7 +29259,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[94] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29279,7 +29279,7 @@ namespace mg5amcCpu jamp_sv[88] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[71], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[71], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29306,7 +29306,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1199 - VVV1_0( w_fp[1], w_fp[8], w_fp[98], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[98], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29326,7 +29326,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[94] += amp_sv[0]; jamp_sv[109] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[27], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29346,7 +29346,7 @@ namespace mg5amcCpu jamp_sv[88] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29373,7 +29373,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1200 - FFV1_0( w_fp[3], w_fp[39], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29385,7 +29385,7 @@ namespace mg5amcCpu jamp_sv[83] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[94] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29397,7 +29397,7 @@ namespace mg5amcCpu jamp_sv[85] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[88] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29416,7 +29416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1201 - FFV1_0( w_fp[24], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[24], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29424,7 +29424,7 @@ namespace mg5amcCpu jamp_sv[79] -= amp_sv[0]; jamp_sv[81] -= amp_sv[0]; jamp_sv[83] += amp_sv[0]; - FFV1_0( w_fp[60], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[60], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29432,7 +29432,7 @@ namespace mg5amcCpu jamp_sv[80] += amp_sv[0]; jamp_sv[81] -= amp_sv[0]; jamp_sv[82] += amp_sv[0]; - FFV1_0( w_fp[72], w_fp[39], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[72], w_fp[39], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29447,7 +29447,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1202 - FFV1_0( w_fp[38], w_fp[2], w_fp[66], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[66], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29459,7 +29459,7 @@ namespace mg5amcCpu jamp_sv[44] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[108] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29471,7 +29471,7 @@ namespace mg5amcCpu jamp_sv[52] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[66] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[98] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[71], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[71], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29490,7 +29490,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1203 - FFV1_0( w_fp[38], w_fp[29], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[29], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29498,7 +29498,7 @@ namespace mg5amcCpu jamp_sv[20] -= amp_sv[0]; jamp_sv[66] -= amp_sv[0]; jamp_sv[108] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[68], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[68], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29506,7 +29506,7 @@ namespace mg5amcCpu jamp_sv[52] += amp_sv[0]; jamp_sv[66] -= amp_sv[0]; jamp_sv[98] += amp_sv[0]; - FFV1_0( w_fp[38], w_fp[23], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[23], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29518,15 +29518,15 @@ namespace mg5amcCpu // *** DIAGRAM 1204 OF 1240 *** // Wavefunction(s) for diagram number 1204 - VVVV1P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[23] ); - VVVV3P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[68] ); - VVVV4P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 0., 0., w_fp[29] ); - FFV1_2( w_fp[3], w_fp[23], COUPs[1], cIPD[0], cIPD[1], w_fp[71] ); - FFV1_2( w_fp[3], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); - FFV1_2( w_fp[3], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[66] ); + VVVV1P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[23] ); + VVVV3P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[68] ); + VVVV4P0_1( w_fp[0], w_fp[5], w_fp[6], COUPs[2], 1.0, 0., 0., w_fp[29] ); + FFV1_2( w_fp[3], w_fp[23], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[71] ); + FFV1_2( w_fp[3], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[3], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[66] ); // Amplitude(s) for diagram number 1204 - FFV1_0( w_fp[71], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29534,7 +29534,7 @@ namespace mg5amcCpu jamp_sv[31] -= amp_sv[0]; jamp_sv[33] -= amp_sv[0]; jamp_sv[35] += amp_sv[0]; - FFV1_0( w_fp[21], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29542,7 +29542,7 @@ namespace mg5amcCpu jamp_sv[32] += amp_sv[0]; jamp_sv[33] -= amp_sv[0]; jamp_sv[34] += amp_sv[0]; - FFV1_0( w_fp[66], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[66], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29554,12 +29554,12 @@ namespace mg5amcCpu // *** DIAGRAM 1205 OF 1240 *** // Wavefunction(s) for diagram number 1205 - VVV1P0_1( w_fp[23], w_fp[4], COUPs[0], 0., 0., w_fp[72] ); - VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 0., 0., w_fp[60] ); - VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 0., 0., w_fp[24] ); + VVV1P0_1( w_fp[23], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[72] ); + VVV1P0_1( w_fp[68], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[60] ); + VVV1P0_1( w_fp[29], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 1205 - FFV1_0( w_fp[3], w_fp[77], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29571,7 +29571,7 @@ namespace mg5amcCpu jamp_sv[35] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29583,7 +29583,7 @@ namespace mg5amcCpu jamp_sv[37] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[40] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[43] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29602,7 +29602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1206 - FFV1_0( w_fp[46], w_fp[77], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29610,7 +29610,7 @@ namespace mg5amcCpu jamp_sv[29] -= amp_sv[0]; jamp_sv[40] -= amp_sv[0]; jamp_sv[46] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[77], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29618,7 +29618,7 @@ namespace mg5amcCpu jamp_sv[37] += amp_sv[0]; jamp_sv[40] -= amp_sv[0]; jamp_sv[43] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29630,12 +29630,12 @@ namespace mg5amcCpu // *** DIAGRAM 1207 OF 1240 *** // Wavefunction(s) for diagram number 1207 - FFV1_1( w_fp[2], w_fp[23], COUPs[1], cIPD[0], cIPD[1], w_fp[77] ); - FFV1_1( w_fp[2], w_fp[68], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_1( w_fp[2], w_fp[29], COUPs[1], cIPD[0], cIPD[1], w_fp[27] ); + FFV1_1( w_fp[2], w_fp[23], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[77] ); + FFV1_1( w_fp[2], w_fp[68], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[2], w_fp[29], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[27] ); // Amplitude(s) for diagram number 1207 - FFV1_0( w_fp[52], w_fp[77], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[77], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29643,7 +29643,7 @@ namespace mg5amcCpu jamp_sv[23] -= amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[16], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[16], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29651,7 +29651,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[91] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[27], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[27], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29666,7 +29666,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1208 - FFV1_0( w_fp[52], w_fp[2], w_fp[72], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[72], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29678,7 +29678,7 @@ namespace mg5amcCpu jamp_sv[70] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[60], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[60], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29690,7 +29690,7 @@ namespace mg5amcCpu jamp_sv[77] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[91] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[52], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29709,7 +29709,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1209 - FFV1_0( w_fp[52], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29717,7 +29717,7 @@ namespace mg5amcCpu jamp_sv[53] -= amp_sv[0]; jamp_sv[64] -= amp_sv[0]; jamp_sv[70] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[33], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29725,7 +29725,7 @@ namespace mg5amcCpu jamp_sv[61] += amp_sv[0]; jamp_sv[64] -= amp_sv[0]; jamp_sv[67] += amp_sv[0]; - FFV1_0( w_fp[52], w_fp[33], w_fp[29], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[52], w_fp[33], w_fp[29], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29740,7 +29740,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1210 - FFV1_0( w_fp[3], w_fp[77], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[77], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29752,7 +29752,7 @@ namespace mg5amcCpu jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[115] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[16], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[16], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29764,7 +29764,7 @@ namespace mg5amcCpu jamp_sv[91] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[101] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[27], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[27], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29783,7 +29783,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1211 - FFV1_0( w_fp[71], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29795,7 +29795,7 @@ namespace mg5amcCpu jamp_sv[55] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[59] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[21], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29807,7 +29807,7 @@ namespace mg5amcCpu jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[57] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[66], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[66], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29826,7 +29826,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1212 - VVV1_0( w_fp[23], w_fp[61], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[23], w_fp[61], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29846,7 +29846,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVV1_0( w_fp[68], w_fp[61], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[68], w_fp[61], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29866,7 +29866,7 @@ namespace mg5amcCpu jamp_sv[91] -= amp_sv[0]; jamp_sv[100] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVV1_0( w_fp[29], w_fp[61], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[29], w_fp[61], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29893,7 +29893,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1213 - VVVV1_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29913,7 +29913,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - VVVV3_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29933,7 +29933,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[114] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV4_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[23], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29953,7 +29953,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVVV1_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29973,7 +29973,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV3_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -29993,7 +29993,7 @@ namespace mg5amcCpu jamp_sv[91] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV4_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[68], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30013,7 +30013,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVVV1_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30033,7 +30033,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[100] += amp_sv[0]; jamp_sv[114] -= amp_sv[0]; - VVVV3_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30053,7 +30053,7 @@ namespace mg5amcCpu jamp_sv[101] -= amp_sv[0]; jamp_sv[114] -= amp_sv[0]; jamp_sv[115] += amp_sv[0]; - VVVV4_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[29], w_fp[1], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30077,12 +30077,12 @@ namespace mg5amcCpu // *** DIAGRAM 1214 OF 1240 *** // Wavefunction(s) for diagram number 1214 - VVV1P0_1( w_fp[23], w_fp[1], COUPs[0], 0., 0., w_fp[61] ); - VVV1P0_1( w_fp[68], w_fp[1], COUPs[0], 0., 0., w_fp[23] ); - VVV1P0_1( w_fp[29], w_fp[1], COUPs[0], 0., 0., w_fp[68] ); + VVV1P0_1( w_fp[23], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[61] ); + VVV1P0_1( w_fp[68], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[29], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[68] ); // Amplitude(s) for diagram number 1214 - VVV1_0( w_fp[8], w_fp[4], w_fp[61], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[61], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30102,7 +30102,7 @@ namespace mg5amcCpu jamp_sv[70] -= amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30122,7 +30122,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[68], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[68], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30149,7 +30149,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1215 - VVV1_0( w_fp[1], w_fp[8], w_fp[72], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[72], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30169,7 +30169,7 @@ namespace mg5amcCpu jamp_sv[70] += amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[115] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[60], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[60], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30189,7 +30189,7 @@ namespace mg5amcCpu jamp_sv[77] -= amp_sv[0]; jamp_sv[91] += amp_sv[0]; jamp_sv[101] -= amp_sv[0]; - VVV1_0( w_fp[1], w_fp[8], w_fp[24], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[24], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30216,7 +30216,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1216 - FFV1_0( w_fp[3], w_fp[33], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30228,7 +30228,7 @@ namespace mg5amcCpu jamp_sv[59] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[70] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30240,7 +30240,7 @@ namespace mg5amcCpu jamp_sv[61] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[64] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[67] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30259,7 +30259,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1217 - FFV1_0( w_fp[71], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[71], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30267,7 +30267,7 @@ namespace mg5amcCpu jamp_sv[55] -= amp_sv[0]; jamp_sv[57] -= amp_sv[0]; jamp_sv[59] += amp_sv[0]; - FFV1_0( w_fp[21], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30275,7 +30275,7 @@ namespace mg5amcCpu jamp_sv[56] += amp_sv[0]; jamp_sv[57] -= amp_sv[0]; jamp_sv[58] += amp_sv[0]; - FFV1_0( w_fp[66], w_fp[33], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[66], w_fp[33], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30290,7 +30290,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1218 - FFV1_0( w_fp[46], w_fp[2], w_fp[61], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[61], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30302,7 +30302,7 @@ namespace mg5amcCpu jamp_sv[46] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[114] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30314,7 +30314,7 @@ namespace mg5amcCpu jamp_sv[76] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[90] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[100] -= cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[68], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[68], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30333,7 +30333,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1219 - FFV1_0( w_fp[46], w_fp[77], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[77], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30341,7 +30341,7 @@ namespace mg5amcCpu jamp_sv[22] -= amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[114] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[16], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[16], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30349,7 +30349,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[90] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - FFV1_0( w_fp[46], w_fp[27], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[27], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30364,7 +30364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1220 - VVVV1_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30384,7 +30384,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30404,7 +30404,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[73], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30424,7 +30424,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30444,7 +30444,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30464,7 +30464,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[79], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30484,7 +30484,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30504,7 +30504,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30524,7 +30524,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[117] += amp_sv[0]; jamp_sv[119] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[80], w_fp[8], w_fp[6], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30548,12 +30548,12 @@ namespace mg5amcCpu // *** DIAGRAM 1221 OF 1240 *** // Wavefunction(s) for diagram number 1221 - VVV1P0_1( w_fp[0], w_fp[73], COUPs[0], 0., 0., w_fp[27] ); - VVV1P0_1( w_fp[0], w_fp[79], COUPs[0], 0., 0., w_fp[1] ); - VVV1P0_1( w_fp[0], w_fp[80], COUPs[0], 0., 0., w_fp[16] ); + VVV1P0_1( w_fp[0], w_fp[73], COUPs[0], 1.0, 0., 0., w_fp[27] ); + VVV1P0_1( w_fp[0], w_fp[79], COUPs[0], 1.0, 0., 0., w_fp[1] ); + VVV1P0_1( w_fp[0], w_fp[80], COUPs[0], 1.0, 0., 0., w_fp[16] ); // Amplitude(s) for diagram number 1221 - VVV1_0( w_fp[8], w_fp[6], w_fp[27], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[27], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30573,7 +30573,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[1], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[1], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30593,7 +30593,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[6], w_fp[16], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30620,7 +30620,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1222 - VVV1_0( w_fp[73], w_fp[6], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[73], w_fp[6], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30640,7 +30640,7 @@ namespace mg5amcCpu jamp_sv[107] -= amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[119] += amp_sv[0]; - VVV1_0( w_fp[79], w_fp[6], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[79], w_fp[6], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30660,7 +30660,7 @@ namespace mg5amcCpu jamp_sv[111] += amp_sv[0]; jamp_sv[113] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVV1_0( w_fp[80], w_fp[6], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[80], w_fp[6], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30687,7 +30687,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1223 - FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30699,7 +30699,7 @@ namespace mg5amcCpu jamp_sv[107] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[119] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30711,7 +30711,7 @@ namespace mg5amcCpu jamp_sv[111] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[113] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[117] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[47], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30730,7 +30730,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1224 - FFV1_0( w_fp[3], w_fp[113], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30738,7 +30738,7 @@ namespace mg5amcCpu jamp_sv[97] -= amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[101] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[113], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30746,7 +30746,7 @@ namespace mg5amcCpu jamp_sv[98] += amp_sv[0]; jamp_sv[99] -= amp_sv[0]; jamp_sv[100] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[113], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[113], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30761,7 +30761,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1225 - FFV1_0( w_fp[41], w_fp[2], w_fp[27], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[27], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30773,7 +30773,7 @@ namespace mg5amcCpu jamp_sv[38] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[86] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30785,7 +30785,7 @@ namespace mg5amcCpu jamp_sv[56] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[62] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[80] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[41], w_fp[2], w_fp[16], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30804,7 +30804,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1226 - FFV1_0( w_fp[62], w_fp[2], w_fp[73], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[73], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30812,7 +30812,7 @@ namespace mg5amcCpu jamp_sv[38] -= amp_sv[0]; jamp_sv[62] -= amp_sv[0]; jamp_sv[86] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30820,7 +30820,7 @@ namespace mg5amcCpu jamp_sv[56] += amp_sv[0]; jamp_sv[62] -= amp_sv[0]; jamp_sv[80] += amp_sv[0]; - FFV1_0( w_fp[62], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[62], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30835,7 +30835,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1227 - VVVV1_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30855,7 +30855,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30875,7 +30875,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[57], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30895,7 +30895,7 @@ namespace mg5amcCpu jamp_sv[77] += amp_sv[0]; jamp_sv[110] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30915,7 +30915,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30935,7 +30935,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[81], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30955,7 +30955,7 @@ namespace mg5amcCpu jamp_sv[76] += amp_sv[0]; jamp_sv[104] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30975,7 +30975,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[104] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -30995,7 +30995,7 @@ namespace mg5amcCpu jamp_sv[95] -= amp_sv[0]; jamp_sv[105] -= amp_sv[0]; jamp_sv[111] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[82], w_fp[8], w_fp[5], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31019,12 +31019,12 @@ namespace mg5amcCpu // *** DIAGRAM 1228 OF 1240 *** // Wavefunction(s) for diagram number 1228 - VVV1P0_1( w_fp[0], w_fp[57], COUPs[0], 0., 0., w_fp[62] ); - VVV1P0_1( w_fp[0], w_fp[81], COUPs[0], 0., 0., w_fp[80] ); - VVV1P0_1( w_fp[0], w_fp[82], COUPs[0], 0., 0., w_fp[79] ); + VVV1P0_1( w_fp[0], w_fp[57], COUPs[0], 1.0, 0., 0., w_fp[62] ); + VVV1P0_1( w_fp[0], w_fp[81], COUPs[0], 1.0, 0., 0., w_fp[80] ); + VVV1P0_1( w_fp[0], w_fp[82], COUPs[0], 1.0, 0., 0., w_fp[79] ); // Amplitude(s) for diagram number 1228 - VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[62], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31044,7 +31044,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[110] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[80], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[80], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31064,7 +31064,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[104] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[5], w_fp[79], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[5], w_fp[79], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31091,7 +31091,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1229 - VVV1_0( w_fp[57], w_fp[5], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[57], w_fp[5], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31111,7 +31111,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[95] += amp_sv[0]; jamp_sv[111] -= amp_sv[0]; - VVV1_0( w_fp[81], w_fp[5], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[81], w_fp[5], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31131,7 +31131,7 @@ namespace mg5amcCpu jamp_sv[89] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[105] -= amp_sv[0]; - VVV1_0( w_fp[82], w_fp[5], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[82], w_fp[5], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31158,7 +31158,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1230 - FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31170,7 +31170,7 @@ namespace mg5amcCpu jamp_sv[83] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[95] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31182,7 +31182,7 @@ namespace mg5amcCpu jamp_sv[87] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[89] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[93] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[39], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[39], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31201,7 +31201,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1231 - FFV1_0( w_fp[3], w_fp[102], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31209,7 +31209,7 @@ namespace mg5amcCpu jamp_sv[73] -= amp_sv[0]; jamp_sv[75] -= amp_sv[0]; jamp_sv[77] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31217,7 +31217,7 @@ namespace mg5amcCpu jamp_sv[74] += amp_sv[0]; jamp_sv[75] -= amp_sv[0]; jamp_sv[76] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[102], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[102], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31232,7 +31232,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1232 - FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[62], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31244,7 +31244,7 @@ namespace mg5amcCpu jamp_sv[44] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[110] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[80], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[80], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31256,7 +31256,7 @@ namespace mg5amcCpu jamp_sv[58] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[68] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[104] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[38], w_fp[2], w_fp[79], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[38], w_fp[2], w_fp[79], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31275,7 +31275,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1233 - FFV1_0( w_fp[104], w_fp[2], w_fp[57], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[57], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31283,7 +31283,7 @@ namespace mg5amcCpu jamp_sv[44] -= amp_sv[0]; jamp_sv[68] -= amp_sv[0]; jamp_sv[110] += amp_sv[0]; - FFV1_0( w_fp[104], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31291,7 +31291,7 @@ namespace mg5amcCpu jamp_sv[58] += amp_sv[0]; jamp_sv[68] -= amp_sv[0]; jamp_sv[104] += amp_sv[0]; - FFV1_0( w_fp[104], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[104], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31306,7 +31306,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1234 - VVVV1_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31326,7 +31326,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31346,7 +31346,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[55], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31366,7 +31366,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[116] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31386,7 +31386,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31406,7 +31406,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[83], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31426,7 +31426,7 @@ namespace mg5amcCpu jamp_sv[93] += amp_sv[0]; jamp_sv[106] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVVV1_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31446,7 +31446,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[106] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31466,7 +31466,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[107] -= amp_sv[0]; jamp_sv[117] += amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[84], w_fp[8], w_fp[4], COUPs[2], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31490,12 +31490,12 @@ namespace mg5amcCpu // *** DIAGRAM 1235 OF 1240 *** // Wavefunction(s) for diagram number 1235 - VVV1P0_1( w_fp[0], w_fp[55], COUPs[0], 0., 0., w_fp[104] ); - VVV1P0_1( w_fp[0], w_fp[83], COUPs[0], 0., 0., w_fp[82] ); - VVV1P0_1( w_fp[0], w_fp[84], COUPs[0], 0., 0., w_fp[81] ); + VVV1P0_1( w_fp[0], w_fp[55], COUPs[0], 1.0, 0., 0., w_fp[104] ); + VVV1P0_1( w_fp[0], w_fp[83], COUPs[0], 1.0, 0., 0., w_fp[82] ); + VVV1P0_1( w_fp[0], w_fp[84], COUPs[0], 1.0, 0., 0., w_fp[81] ); // Amplitude(s) for diagram number 1235 - VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[104], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31515,7 +31515,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[116] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[82], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[82], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31535,7 +31535,7 @@ namespace mg5amcCpu jamp_sv[82] -= amp_sv[0]; jamp_sv[92] += amp_sv[0]; jamp_sv[106] -= amp_sv[0]; - VVV1_0( w_fp[8], w_fp[4], w_fp[81], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[8], w_fp[4], w_fp[81], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31562,7 +31562,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1236 - VVV1_0( w_fp[55], w_fp[4], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[55], w_fp[4], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31582,7 +31582,7 @@ namespace mg5amcCpu jamp_sv[71] += amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[117] -= amp_sv[0]; - VVV1_0( w_fp[83], w_fp[4], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[83], w_fp[4], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31602,7 +31602,7 @@ namespace mg5amcCpu jamp_sv[83] -= amp_sv[0]; jamp_sv[93] += amp_sv[0]; jamp_sv[107] -= amp_sv[0]; - VVV1_0( w_fp[84], w_fp[4], w_fp[56], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[84], w_fp[4], w_fp[56], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31629,7 +31629,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1237 - FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31641,7 +31641,7 @@ namespace mg5amcCpu jamp_sv[59] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[71] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31653,7 +31653,7 @@ namespace mg5amcCpu jamp_sv[63] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[65] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[69] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[3], w_fp[33], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[33], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31672,7 +31672,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1238 - FFV1_0( w_fp[3], w_fp[114], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31680,7 +31680,7 @@ namespace mg5amcCpu jamp_sv[49] -= amp_sv[0]; jamp_sv[51] -= amp_sv[0]; jamp_sv[53] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[114], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31688,7 +31688,7 @@ namespace mg5amcCpu jamp_sv[50] += amp_sv[0]; jamp_sv[51] -= amp_sv[0]; jamp_sv[52] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[114], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[114], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31703,7 +31703,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1239 - FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[104], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31715,7 +31715,7 @@ namespace mg5amcCpu jamp_sv[46] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[116] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[82], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[82], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31727,7 +31727,7 @@ namespace mg5amcCpu jamp_sv[82] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[92] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[106] += cxtype( 0, 1 ) * amp_sv[0]; - FFV1_0( w_fp[46], w_fp[2], w_fp[81], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[46], w_fp[2], w_fp[81], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31746,7 +31746,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 1240 - FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[55], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31754,7 +31754,7 @@ namespace mg5amcCpu jamp_sv[46] -= amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[116] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[83], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -31762,7 +31762,7 @@ namespace mg5amcCpu jamp_sv[82] += amp_sv[0]; jamp_sv[92] -= amp_sv[0]; jamp_sv[106] += amp_sv[0]; - FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[99], w_fp[2], w_fp[84], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL // Here the code base generated with multichannel support updates numerators_sv and denominators_sv (#473) #endif @@ -32523,8 +32523,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: standalone_cudacpp static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gg_ttggg.sa/SubProcesses/cudacpp.mk b/epochX/cudacpp/gg_ttggg.sa/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gg_ttggg.sa/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gg_ttggg.sa/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gg_ttggg.sa/src/HelAmps_sm.h b/epochX/cudacpp/gg_ttggg.sa/src/HelAmps_sm.h index 9cea8bcbe7..9b946c21e1 100644 --- a/epochX/cudacpp/gg_ttggg.sa/src/HelAmps_sm.h +++ b/epochX/cudacpp/gg_ttggg.sa/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -908,6 +912,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -920,6 +925,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -934,6 +940,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -945,6 +952,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -959,6 +967,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -970,6 +979,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -984,6 +994,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -995,6 +1006,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -1008,6 +1020,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1042,6 +1055,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1080,6 +1094,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1103,6 +1118,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1134,6 +1150,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1165,6 +1182,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1197,6 +1215,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1225,6 +1244,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1260,6 +1280,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1288,6 +1309,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1323,6 +1345,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1351,6 +1374,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) diff --git a/epochX/cudacpp/gg_ttggg.sa/src/cudacpp_src.mk b/epochX/cudacpp/gg_ttggg.sa/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gg_ttggg.sa/src/cudacpp_src.mk +++ b/epochX/cudacpp/gg_ttggg.sa/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/gq_ttq.mad/Cards/delphes_trigger.dat b/epochX/cudacpp/gq_ttq.mad/Cards/delphes_trigger.dat new file mode 100644 index 0000000000..0aab0677aa --- /dev/null +++ b/epochX/cudacpp/gq_ttq.mad/Cards/delphes_trigger.dat @@ -0,0 +1,20 @@ +#TRIGGER CARD # DO NOT REMOVE THIS IS A TAG! + +# list of trigger algorithms +# trigger_name >> algorithm #comments +Inclusive electron >> ELEC1_PT: '29' +di-electron >> ELEC1_PT: '17' && ELEC2_PT: '17' +Inclusive Photon >> GAMMA1_PT: '80' +di-Photon >> GAMMA1_PT: '40' && GAMMA2_PT: '25' +Inclusive muon >> MUON1_PT: '19' +di-muon >> MUON1_PT: '7' && MUON2_PT: '7' +Taujet and ETmis >> TAU1_PT: '86' && ETMIS_PT: '65' +di-Taujets >> TAU1_PT: '59' && TAU2_PT: '59' +Jet and ETmis >> JET1_PT: '180' && ETMIS_PT: '123' +Taujet and electron >> TAU1_PT: '45' && ELEC1_PT: '19' +Taujet and muon >> TAU1_PT: '40' && ELEC1_PT: '15' +Inclusive b-jet >> Bjet1_PT: '237' +Inclusive 1 jet >> JET1_PT: '657' +Inclusive 3 jets >> JET1_PT: '247' && JET2_PT: '247' && JET3_PT: '247' +Inclusive 4 jets >> JET1_PT: '113' && JET2_PT: '113' && JET3_PT: '113' && JET4_PT: '113' + diff --git a/epochX/cudacpp/gq_ttq.mad/Cards/me5_configuration.txt b/epochX/cudacpp/gq_ttq.mad/Cards/me5_configuration.txt index 27acb12a1e..8a0c1e6345 100644 --- a/epochX/cudacpp/gq_ttq.mad/Cards/me5_configuration.txt +++ b/epochX/cudacpp/gq_ttq.mad/Cards/me5_configuration.txt @@ -234,7 +234,7 @@ # pineappl = pineappl -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo # MG5 MAIN DIRECTORY -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo diff --git a/epochX/cudacpp/gq_ttq.mad/Cards/plot_card.dat b/epochX/cudacpp/gq_ttq.mad/Cards/plot_card.dat new file mode 100644 index 0000000000..9abe1cc05e --- /dev/null +++ b/epochX/cudacpp/gq_ttq.mad/Cards/plot_card.dat @@ -0,0 +1,203 @@ +#************************************************************************** +# Card for MadAnalysis * +# * +# This file is used to set the classes and options for * +# the MadAnalysis program. * +# * +# * +# Some comments about the classes * +# 1. Plots are for classes of particles. * +# 2. Each particle is identified by its PDG code. * +# 3. Classes names are arbitrary (4 symbols max, no spaces allowed). * +# 4. Particles in the same class will be ordered with the 'ordering * +# function' in the file in_func.f. * +# 5. Classes can be added/edited/removed at will, and given a name * +# that will then appear in the plots. * +# 6. A particle can be put in one class only. Putting a particle in * +# two or more classes can lead to double counting of events. * +# 7. The class name mET is missing Energy and its name is reserved. * +# If used, it must be put last in the classes list below. * +# 8. If events contain particles not belonging to an existing class, * +# a new class will automatically be generated. * +# 9. For LHCO events the PDG code 21 is assigned to a jet (not * +# b-tagged), 5 to a b-tagged jet and 12 to missing ET. * +# * +# * +# Some comments about the cuts * +# 1. In the file kin_func.f the functions on which cuts can be applied * +# are given. * +# 2. The syntax is as follows. * +# etmin 1 3 30d0 * +# means that from the first class the Et of the first three particles * +# has to be greater than 30 GeV. * +# * +# etmissmin 20d0 * +# means that there must be at least 20 GeV of missing Et * +# * +# dRmin 2 1 4 3 3d0 * +# means that the distance between the first particle in the second * +# class and the first three particles in the fourth class has to be * +# greater than 3. * +# * +# ptmax 1 3 10d0 * +# ptmax 1 2 15d0 * +# means that the maximum pt of the third particle in the first class * +# has to smaller than 10 GeV, and the first two particles of this * +# class has to be smaller than 15 GeV * +# 3. The ordering of the particles within a class can be set with the * +# 'ordering function' in the file kin_func.f. * +# 4. For all the 'min' cuts, an event will be thrown away if the particle * +# does not exist. On the other hand, for all the 'max' cuts the cut * +# will be ignored if the particle does not exist * +# (Only dRij is an exception, for which it is the other way around) * +# * +# * +# * +# Some comments about the plotting options * +# 1. In the file kin_func.f the functions can be found that can be * +# plotted. (only for off-line usage) * +# 2. With the plotting options one can set the number of plots for each * +# of these functions. * +# 3. One has to specify for each variable which particles from which * +# class are used to set the plots. Syntax: * +# et 2 4 * +# means that the transverse energy of the first four particles in the * +# second class will be plotted. * +# mij 1 3 * +# mij 2 2 * +# means that for the invariant mass plots the first three particles * +# from the first class and the first two from the second class will be * +# used to plot the invariant mass of two particles. (10 plots) * +# 4. The ordering of the particles in a class can be set with the * +# 'ordering_function'. pt, e and et are valid functions. (For off-line * +# users X1, X2 and X3 can also be used, if defined in kin_func.f.) * +# 5. Max number of plots is 200. * +# * +# * +#************************************************************************** +# Put here your list of classes +#************************************************************************** +# Do NOT put spaces before class names! +# Begin Classes # This is TAG. Do not modify this line +jet 1 -1 2 -2 3 -3 4 -4 21 # Class number 1 +b 5 -5 # Class number 2 +mET 12 -12 14 -14 16 -16 1000022 # Missing ET class, name is reserved +# End Classes # This is TAG. Do not modify this line +#************************************************************************** +ordering_function pt # orders particles in classes according to their pt +normalization xsec # histogram normalization, xsec or number (e.g. 1) +#************************************************************************** +# Put here list of minimum pt for the classes +#************************************************************************** +# Begin Minpts # This is TAG. Do not modify this line +#1 30 +#2 40 +#3 10 +# End Minpts # This is TAG. Do not modify this line +#************************************************************************** +# Cuts on plotted events +#************************************************************************** +# Modify the cuts and remove the pounds/hashes to apply those cuts +# Do NOT put spaces at the beginning of the following lines! +# Begin Cuts # This is TAG. Do not modify this line +#etmin 2 2 40d0 +#etmin 2 1 80d0 +#etmin 1 3 20d0 +#etmax 2 1 200d0 +#ptmin 3 1 0d0 +#etmissmin 20d0 +#etmissmax 80d0 +#etamax 1 1 1d0 +#etamax 2 1 2d0 +#etamin 2 2 1.5d0 +#etamin 2 1 2d0 +#mijmax 2 1 2 2 200d0 +#mijmin 2 1 2 2 100d0 +#X1min 2 1 40d0 +#X1max 2 2 50d0 +#dRijmin 2 1 2 2 0.7d0 +#dRijmax 1 3 2 2 0.7d0 +#XY1min 2 2 2 2 20d0 +#XYZA2max 2 2 2 2 4 1 5 1 40d0 +# End Cuts # This is TAG. Do not modify this line +#************************************************************************** +# Put here the required plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotDefs # This is TAG. Do not modify this line +pt 1 4 # plot pt for the first four particles in class 1 +pt 2 4 # plot pt for the first four particles in class 2 +pt 3 4 # plot pt for the first four particles in class 3 +pt 4 4 # plot pt for the first four particles in class 4 +pt 5 4 # etc. +pt 6 4 +pt 7 4 +#e 2 2 +y 1 4 # plot rapidity for the first four particles in class 1 +y 2 4 +y 3 4 +y 4 4 +y 5 4 +y 6 4 +y 7 4 +#eta 2 2 # plot pseudo-rapidity for the first two part in the 2nd class +#mom 4 1 +#costh 5 1 +#phi 2 2 +#delta_eta 2 2 +#delta_eta 4 1 +mij 1 4 # use the first four particles in the 1st class to plot inv. mass +mij 2 2 # use the first two particles from the second class as well +mij 3 1 # etc. +mij 4 1 +mij 5 1 +mij 6 1 +mij 7 1 +#cosij 1 2 +#cosij 2 2 +#cosij 3 1 +#cosij 4 1 +dRij 1 4 +dRij 2 2 +dRij 3 1 +dRij 4 1 +dRij 5 1 +dRij 6 1 +dRij 7 1 +#delta_phi 2 2 +#delta_phi 4 1 +#delta_phi 5 1 +#X1 2 2 # plot X1 (defined in kin_func.f) +#XYZA1 2 2 +#XYZA1 4 1 +#XYZA1 5 1 +# End PlotDefs # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Put here the plot ranges +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotRange # This is TAG. Do not modify this line +pt 10 0 500 # bin size, min value, max value +et 10 0 500 # bin size, min value, max value +etmiss 10 0 500 # bin size, min value, max value +ht 20 0 1500 +y 0.2 -5 5 # etc. +mij 20 0 1500 +dRij 0.1 0 5 +#delta_phi 0.1 0 3.1 +#X1 1 0 100 +#XYZA1 1 0 100 +# End PlotRange # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Output for plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotOutput # This is TAG. Do not modify this line +output topdrawer # set to topdrawer or gnuplot +plot_decayed no # plot (and cut) dec. res.? (Only for LHE events) +# End PlotOutput # This is TAG. Do not modify this line +#************************************************************************** +# +# diff --git a/epochX/cudacpp/gq_ttq.mad/Cards/run_card.dat b/epochX/cudacpp/gq_ttq.mad/Cards/run_card.dat index 69e6fa2bf2..4c99f39248 100644 --- a/epochX/cudacpp/gq_ttq.mad/Cards/run_card.dat +++ b/epochX/cudacpp/gq_ttq.mad/Cards/run_card.dat @@ -144,13 +144,3 @@ # systematics = systematics_program ! none, systematics [python], SysCalc [depreceted, C++] ['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule - -#********************************************************************* -# Options for the cudacpp plugin -#********************************************************************* - -# Set cudacpp-specific values of non-cudacpp-specific options --O3 -ffast-math -fbounds-check = global_flag ! build flags for Fortran code (for a fair comparison to cudacpp) - -# New cudacpp-specific options (default values are defined in banner.py) -CPP = cudacpp_backend ! valid backends are FORTRAN, CPP, CUDA diff --git a/epochX/cudacpp/gq_ttq.mad/Source/DHELAS/aloha_file.inc b/epochX/cudacpp/gq_ttq.mad/Source/DHELAS/aloha_file.inc index dccc9da9d2..17f6a8b497 100644 --- a/epochX/cudacpp/gq_ttq.mad/Source/DHELAS/aloha_file.inc +++ b/epochX/cudacpp/gq_ttq.mad/Source/DHELAS/aloha_file.inc @@ -1 +1 @@ -ALOHARoutine = FFV1P0_3.o FFV1_0.o FFV1_1.o FFV1_2.o VVV1_0.o +ALOHARoutine = FFV1_0.o FFV1_1.o FFV1_2.o FFV1P0_3.o VVV1_0.o diff --git a/epochX/cudacpp/gq_ttq.mad/Source/PDF/pdfwrap_lhapdf.f b/epochX/cudacpp/gq_ttq.mad/Source/PDF/pdfwrap_lhapdf.f index 0be926e6cd..3f36905346 100644 --- a/epochX/cudacpp/gq_ttq.mad/Source/PDF/pdfwrap_lhapdf.f +++ b/epochX/cudacpp/gq_ttq.mad/Source/PDF/pdfwrap_lhapdf.f @@ -5,6 +5,7 @@ SUBROUTINE PDFWRAP C INCLUDE 'pdf.inc' INCLUDE '../alfas.inc' + INCLUDE '../vector.inc' INCLUDE '../coupl.inc' REAL*8 ZMASS DATA ZMASS/91.188D0/ diff --git a/epochX/cudacpp/gq_ttq.mad/Source/make_opts b/epochX/cudacpp/gq_ttq.mad/Source/make_opts index bd3c24228d..2607530b78 100644 --- a/epochX/cudacpp/gq_ttq.mad/Source/make_opts +++ b/epochX/cudacpp/gq_ttq.mad/Source/make_opts @@ -1,17 +1,11 @@ -pdlabel1= -pdlabel2= -lhapdf= -PYTHIA8_PATH=NotInstalled -MG5AMC_VERSION=3.5.0_lo_vect -GLOBAL_FLAG=-O3 -ffast-math -fbounds-check -ALOHA_FLAG= -MATRIX_FLAG= DEFAULT_CPP_COMPILER=g++ MACFLAG= STDLIB=-lstdc++ STDLIB_FLAG= DEFAULT_F_COMPILER=gfortran -DEFAULT_F2PY_COMPILER=f2py3 +DEFAULT_F2PY_COMPILER=f2py3.9 +MG5AMC_VERSION=SpecifiedByMG5aMCAtRunTime +PYTHIA8_PATH=NotInstalled #end_of_make_opts_variables BIASLIBDIR=../../../lib/ diff --git a/epochX/cudacpp/gq_ttq.mad/Source/makefile b/epochX/cudacpp/gq_ttq.mad/Source/makefile index dbe08b846e..00c73099a0 100644 --- a/epochX/cudacpp/gq_ttq.mad/Source/makefile +++ b/epochX/cudacpp/gq_ttq.mad/Source/makefile @@ -136,5 +136,7 @@ cleanSource: clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; -cleanall: cleanSource +cleanavx: + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; +cleanall: cleanSource # THIS IS THE ONE for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/gq_ttq.mad/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc index 47666e308a..641d230037 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc @@ -243,26 +243,19 @@ namespace mg5amcCpu // Wavefunction(s) for diagram number 1 vxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); -#if not( defined __CUDACC__ and defined MGONGPU_TEST_DIVERGENCE ) - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz -#else - if( ( blockDim.x * blockIdx.x + threadIdx.x ) % 2 == 0 ) - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz - else - ixxxxx( momenta, 0, cHel[ihel][1], +1, w_fp[1], 1 ); -#endif + ixxxxx( momenta, 0., cHel[ihel][1], +1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - FFV1_2( w_fp[1], w_fp[0], COUPs[0], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[0], 0., 0., w_fp[6] ); + FFV1_2( w_fp[1], w_fp[0], COUPs[0], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[5], w_fp[4], w_fp[6], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[4], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -273,11 +266,11 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 5 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[0], COUPs[0], cIPD[0], cIPD[1], w_fp[5] ); - FFV1P0_3( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[0], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1P0_3( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -288,10 +281,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 5 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[0], COUPs[0], cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[0], 1.0, cIPD[0], cIPD[1], w_fp[5] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -302,10 +295,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 5 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[4], w_fp[0], COUPs[0], 0., 0., w_fp[5] ); + FFV1_1( w_fp[4], w_fp[0], COUPs[0], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[1], w_fp[5], w_fp[6], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[5], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -319,7 +312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 5 - VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[1], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -863,8 +856,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f index ca1b7c1dc5..81ab70f6d1 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION D2,U2,S2,C2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,14 +130,27 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)), QSCALE) + U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)), QSCALE) + S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)), QSCALE) + C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc index 04a5cc423c..97f543efe3 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc @@ -243,19 +243,19 @@ namespace mg5amcCpu // Wavefunction(s) for diagram number 1 vxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - ixzxxx( momenta, cHel[ihel][4], -1, w_fp[4], 4 ); + ixxxxx( momenta, 0., cHel[ihel][4], -1, w_fp[4], 4 ); - FFV1_2( w_fp[4], w_fp[0], COUPs[0], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[0], 0., 0., w_fp[6] ); + FFV1_2( w_fp[4], w_fp[0], COUPs[0], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -266,11 +266,11 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 5 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[0], COUPs[0], cIPD[0], cIPD[1], w_fp[5] ); - FFV1P0_3( w_fp[4], w_fp[1], COUPs[0], 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[0], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1P0_3( w_fp[4], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -281,10 +281,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 5 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[0], COUPs[0], cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[0], 1.0, cIPD[0], cIPD[1], w_fp[5] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -295,10 +295,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 5 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[1], w_fp[0], COUPs[0], 0., 0., w_fp[5] ); + FFV1_1( w_fp[1], w_fp[0], COUPs[0], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[4], w_fp[5], w_fp[6], COUPs[0], &_fp[0] ); + FFV1_0( w_fp[4], w_fp[5], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -312,7 +312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 5 - VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[1], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -856,8 +856,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f index 33e638e237..b58c5d70bd 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,18 +130,27 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/gq_ttq.mad/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/dummy_fct.f b/epochX/cudacpp/gq_ttq.mad/SubProcesses/dummy_fct.f index 076cf29d67..4f7a204b8f 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/dummy_fct.f +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/dummy_fct.f @@ -32,7 +32,7 @@ logical FUNCTION dummy_cuts(P) LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL) logical do_cuts(nexternal) COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY, - . IS_A_ONIUM, do_cuts + & IS_A_ONIUM, do_cuts dummy_cuts=.true. @@ -118,15 +118,16 @@ double precision function user_dynamical_scale(P) C ************************************************************ -C default for the library implementing a dummt bias function +C default for the library implementing a dummy bias function C ************************************************************ subroutine bias_wgt_custom(p, original_weight, bias_weight) - implicit none + implicit none C C Parameters C include 'nexternal.inc' -C + +C C Arguments C double precision p(0:3, nexternal) @@ -161,3 +162,4 @@ subroutine bias_wgt_custom(p, original_weight, bias_weight) return end subroutine bias_wgt_custom + diff --git a/epochX/cudacpp/gq_ttq.mad/SubProcesses/makefile b/epochX/cudacpp/gq_ttq.mad/SubProcesses/makefile index 74db44d848..093bc84271 100644 --- a/epochX/cudacpp/gq_ttq.mad/SubProcesses/makefile +++ b/epochX/cudacpp/gq_ttq.mad/SubProcesses/makefile @@ -9,6 +9,33 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra +# Sets correct target based on MAKECMDGOALS +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) + else + TARGET := $(MAKECMDGOALS) + endif +endif + +# Sets correct cppavx target as dependency when compiling Fortran +ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) + ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) + endif +endif + +# Default goal +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -48,10 +75,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -89,7 +116,7 @@ SYMMETRY = symmetry.o idenparts.o # Binaries -LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 +#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) @@ -115,10 +142,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.cudacpplibs: - $(MAKE) -f $(CUDACPP_MAKEFILE) - touch $@ - # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary @@ -130,26 +153,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +# Only used for testing, should be removed in the future madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -215,49 +259,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else ifeq ($(UNAME_P),arm) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z endif -avxnone: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=none +ALL: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z + $(MAKE) USEBUILDDIR=1 cuda -avxsse4: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 +cppnone: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -avxavx2: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 +cppsse4: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -avx512y: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y +cppavx2: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -avx512z: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z +cpp512y: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -###endif +cpp512z: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z + +cuda: + $(MAKE) -f $(CUDACPP_MAKEFILE) cuda # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +BUILD_DIRS := $(wildcard build.*) +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + +clean: +ifeq ($(USEBUILDDIR),1) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only cleaning build dir.) + $(RM) -r $(BUILD_DIRS) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + $(info USEBUILDDIR=0 only cleaning build with no dir.) + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* + $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir + $(RM) $(CUDACPP_BUILDDIR)/.*libs +endif + +cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone + +cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 + +cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 + +clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y + +clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z + +cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda + $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs - rm -f .libs + $(RM) $(CUDACPP_BUILDDIR)/.*libs + $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall - rm -rf $(LIBDIR)libbias.$(libext) - rm -f ../../Source/*.mod ../../Source/*/*.mod + $(RM) -r $(LIBDIR)libbias.$(libext) + $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git a/epochX/cudacpp/gq_ttq.mad/bin/generate_events b/epochX/cudacpp/gq_ttq.mad/bin/generate_events index 107313b25d..5577cc66a0 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/generate_events +++ b/epochX/cudacpp/gq_ttq.mad/bin/generate_events @@ -46,7 +46,7 @@ if __debug__ and (not os.path.exists(pjoin(root_path,'../..', 'bin','create_rele sys.path.append(pjoin(root_path,'bin','internal')) import madevent_interface as ME - +import misc as misc import logging import logging.config @@ -160,17 +160,31 @@ if '__main__' == __name__: # Check that python version is valid set_configuration() - argument = sys.argv + argument = sys.argv + + # check for plugin customization of the launch command + launch_interface = ME.MadEventCmdShell + if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + + try: if '-h' in argument or '--help' in argument: - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.exec_cmd('help generate_events') sys.exit() elif len(argument) > 1 and argument[1] in ['0', '1', '2']: argument = treat_old_argument(argument) with ME.MadEventCmdShell.RunWebHandling(root_path, ): - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.run_cmd('generate_events %s' % ' '.join(argument[1:])) launch.run_cmd('quit') except ME.MadEventAlreadyRunning as message: diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/banner.py b/epochX/cudacpp/gq_ttq.mad/bin/internal/banner.py index 7624b9f557..824815f47b 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/internal/banner.py +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/banner.py @@ -537,7 +537,7 @@ def charge_card(self, tag): self.param_card = param_card_reader.ParamCard(param_card) return self.param_card elif tag == 'mgruncard': - self.run_card = RunCard(self[tag]) + self.run_card = RunCard(self[tag], unknown_warning=False) return self.run_card elif tag == 'mg5proccard': proc_card = self[tag].split('\n') @@ -1002,13 +1002,14 @@ def __init__(self, finput=None, **opt): self.allowed_value = {} self.default_setup() + self.plugin_input(finput) # if input is define read that input if isinstance(finput, (file, str, StringIO.StringIO)): self.read(finput, **opt) - self.plugin_input(finput) + def plugin_input(self, finput=None): @@ -2624,6 +2625,7 @@ class RunCard(ConfigFile): default_include_file = 'run_card.inc' default_autodef_file = 'run.inc' donewarning = [] + include_as_parameter = [] def plugin_input(self, finput): @@ -2670,18 +2672,40 @@ def __new__(cls, finput=None, **opt): elif isinstance(finput, cls): target_class = finput.__class__ elif isinstance(finput, str): + path = finput if '\n' not in finput: finput = open(finput).read() if 'req_acc_FO' in finput: target_class = RunCardNLO else: target_class = RunCardLO + if MADEVENT and os.path.exists(pjoin(MEDIR, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(MEDIR, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + elif not MADEVENT and os.path.exists(path.replace('run_card.dat', '../bin/internal/launch_plugin.py')): + misc.sprint('try to use plugin class') + pydir = path.replace('run_card.dat', '../bin/internal/') + with misc.TMP_variable(sys, 'path', sys.path + [pydir]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + else: return None target_class.fill_post_set_from_blocks() - - return super(RunCard, cls).__new__(target_class, finput, **opt) + out = super(RunCard, cls).__new__(target_class, finput, **opt) + if not isinstance(out, RunCard): #should not happen but in presence of missmatch of library loaded. + out.__init__(finput, **opt) + return out else: return super(RunCard, cls).__new__(cls, finput, **opt) @@ -2709,7 +2733,7 @@ def __init__(self, *args, **opts): self.system_default = {} self.display_block = [] # set some block to be displayed - + self.fct_mod = {} # {param: (fct_pointer, *argument, **opts)} self.cut_class = {} self.warned=False @@ -2746,7 +2770,7 @@ def get_lepton_densities(cls): def add_param(self, name, value, fortran_name=None, include=True, hidden=False, legacy=False, cut=False, system=False, sys_default=None, - autodef=False, + autodef=False, fct_mod=None, **opts): """ add a parameter to the card. value is the default value and defines the type (int/float/bool/str) of the input. @@ -2760,6 +2784,7 @@ def add_param(self, name, value, fortran_name=None, include=True, If a path (Source/PDF/pdf.inc) the definition will be added within that file Default is False (does not add the definition) entry added in the run_card will automatically have this on True. + fct_mod: defines a function to run if the parameter is modify in the include file options of **opts: - allowed: list of valid options. '*' means anything else should be allowed. empty list means anything possible as well. @@ -2784,8 +2809,12 @@ def add_param(self, name, value, fortran_name=None, include=True, if autodef: self.definition_path[autodef].append(name) self.user_set.add(name) + # function to trigger if a value is modified in the include file + # main target is action to force correct recompilation (like for compilation flag/...) + if fct_mod: + self.fct_mod[name] = fct_mod - def read(self, finput, consistency=True): + def read(self, finput, consistency=True, unknown_warning=True): """Read the input file, this can be a path to a file, a file object, a str with the content of the file.""" @@ -2793,6 +2822,7 @@ def read(self, finput, consistency=True): if "\n" in finput: finput = finput.split('\n') elif os.path.isfile(finput): + self.path = finput finput = open(finput) else: raise Exception("No such file %s" % finput) @@ -2807,7 +2837,7 @@ def read(self, finput, consistency=True): name = name.lower().strip() if name not in self: #looks like an entry added by a user -> add it nicely - self.add_unknown_entry(name, value) + self.add_unknown_entry(name, value, unknown_warning) else: self.set( name, value, user=True) # parameter not set in the run_card can be set to compatiblity value @@ -2819,7 +2849,7 @@ def read(self, finput, consistency=True): logger.warning(str(error)) else: raise - def add_unknown_entry(self, name, value): + def add_unknown_entry(self, name, value, unknow_warning): """function to add an entry to the run_card when the associated parameter does not exists. This is based on the guess_entry_fromname for the various syntax providing input. This then call add_param accordingly. @@ -2858,7 +2888,7 @@ def add_unknown_entry(self, name, value): raise Exception("dictionary need to have at least one entry") default['dict']['__type__'] = default[self.guess_type_from_value(default_value[0])] - if name not in RunCard.donewarning: + if name not in RunCard.donewarning and unknow_warning: logger.warning("Found unexpected entry in run_card: \"%s\" with value \"%s\".\n"+\ " The type was assigned to %s. \n"+\ " The definition of that variable will %sbe automatically added to fortran file %s\n"+\ @@ -2896,7 +2926,16 @@ def valid_line(self, line, tmp): return False else: return True - + + + def reset_simd(self, old_value, new_value, name, *args, **opts): + raise Exception('pass in reset simd') + + def make_clean(self,old_value, new_value, name, dir): + raise Exception('pass make clean for ', dir) + + def make_Ptouch(self,old_value, new_value, name, reset): + raise Exception('pass Ptouch for ', reset) def write(self, output_file, template=None, python_template=False, write_hidden=False, template_options=None, **opt): @@ -3071,6 +3110,77 @@ def write(self, output_file, template=None, python_template=False, else: output_file.write(text) + def get_last_value_include(self, output_dir): + """For paraeter in self.fct_mod + parse the associate inc file to get the value of the previous run. + We return a dictionary {name: old_value} + if inc file does not exist we will return the current value (i.e. set has no change) + """ + + #remember that + # default_include_file is a class variable + # self.includepath is on the form include_path : [list of param ] + out = {} + + # setup inc_to_parse to be like self.includepath (include_path : [list of param ]) + # BUT only containing the parameter that need to be tracked for the fct_mod option + inc_to_parse = {} + for inc_file, params in self.includepath.items(): + if not inc_file: + continue + if any(p in params for p in self.fct_mod): + inc_to_parse[inc_file] = [name for name in self.includepath[inc_file] if name in self.fct_mod] + + # now loop over the files and ask the associate function + for inc_file, params in inc_to_parse.items(): + if inc_file is True: + inc_file = self.default_include_file + out.update(self.get_value_from_include(inc_file, params, output_dir)) + + return out + + def get_value_from_include(self, path, list_of_params, output_dir): + """for a given include file return the current value of the requested parameter + return a dictionary {name: value} + if path does not exists return the current value in self for all parameter""" + + #WARNING DOES NOT HANDLE LIST/DICT so far + + # handle case where file is missing + if not os.path.exists(pjoin(output_dir,path)): + misc.sprint("include file not existing", pjoin(output_dir,path)) + out = {name: self[name] for name in list_of_params} + + with open(pjoin(output_dir,path), 'r') as fsock: + text = fsock.read() + + for name in list_of_params: + misc.sprint(name, name in self.fortran_name) + misc.sprint(self.fortran_name[name] if name in self.fortran_name[name] else name) + to_track = [self.fortran_name[name] if name in self.fortran_name else name for name in list_of_params] + pattern = re.compile(r"\(?(%(names)s)\s?=\s?([^)]*)\)?" % {'names':'|'.join(to_track)}, re.I) + out = dict(pattern.findall(text)) + misc.sprint(out) + for name in list_of_params: + if name in self.fortran_name: + value = out[self.fortran_name[name]] + del out[self.fortran_name[name]] + out[name] = value + + for name, value in out.items(): + try: + out[name] = self.format_variable(value, type(self[name])) + except Exception: + continue + + if len(out) != len(list_of_params): + misc.sprint(list_of_params) + misc.sprint(to_track) + misc.sprint(self.fortran_name) + misc.sprint(text) + raise Exception + return out + def get_default(self, name, default=None, log_level=None): """return self[name] if exist otherwise default. log control if we @@ -3361,71 +3471,93 @@ def write_include_file(self, output_dir, output_file=None): #ensusre that system only parameter are correctly set self.update_system_parameter_for_include() + value_in_old_include = self.get_last_value_include(output_dir) + + if output_dir: self.write_autodef(output_dir, output_file=None) # check/fix status of customised functions self.edit_dummy_fct_from_file(self["custom_fcts"], os.path.dirname(output_dir)) for incname in self.includepath: - if incname is True: - pathinc = self.default_include_file - elif incname is False: - continue - else: - pathinc = incname + self.write_one_include_file(output_dir, incname, output_file) + + for name,value in value_in_old_include.items(): + if value != self[name]: + self.fct_mod[name][0](value, self[name], name, *self.fct_mod[name][1],**self.fct_mod[name][2]) - if output_file: - fsock = output_file + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + misc.sprint(incname) + if incname is True: + pathinc = self.default_include_file + elif incname is False: + return + else: + pathinc = incname + + if output_file: + fsock = output_file + else: + fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) + + + for key in self.includepath[incname]: + #define the fortran name + if key in self.fortran_name: + fortran_name = self.fortran_name[key] else: - fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) - for key in self.includepath[incname]: - #define the fortran name - if key in self.fortran_name: - fortran_name = self.fortran_name[key] + fortran_name = key + + if incname in self.include_as_parameter: + fsock.writelines('INTEGER %s\n' % fortran_name) + #get the value with warning if the user didn't set it + value = self.get_default(key) + if hasattr(self, 'mod_inc_%s' % key): + value = getattr(self, 'mod_inc_%s' % key)(value) + # Special treatment for strings containing a list of + # strings. Convert it to a list of strings + if isinstance(value, list): + # in case of a list, add the length of the list as 0th + # element in fortran. Only in case of integer or float + # list (not for bool nor string) + targettype = self.list_parameter[key] + if targettype is bool: + pass + elif targettype is int: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) + fsock.writelines(line) + elif targettype is float: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) + fsock.writelines(line) + # output the rest of the list in fortran + for i,v in enumerate(value): + line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) + fsock.writelines(line) + elif isinstance(value, dict): + for fortran_name, onevalue in value.items(): + line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) + fsock.writelines(line) + elif isinstance(incname,str) and 'compile' in incname: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, value) else: - fortran_name = key - - #get the value with warning if the user didn't set it - value = self.get_default(key) - if hasattr(self, 'mod_inc_%s' % key): - value = getattr(self, 'mod_inc_%s' % key)(value) - # Special treatment for strings containing a list of - # strings. Convert it to a list of strings - if isinstance(value, list): - # in case of a list, add the length of the list as 0th - # element in fortran. Only in case of integer or float - # list (not for bool nor string) - targettype = self.list_parameter[key] - if targettype is bool: - pass - elif targettype is int: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) - fsock.writelines(line) - elif targettype is float: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) - fsock.writelines(line) - # output the rest of the list in fortran - for i,v in enumerate(value): - line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) - fsock.writelines(line) - elif isinstance(value, dict): - for fortran_name, onevalue in value.items(): - line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) - fsock.writelines(line) - elif isinstance(incname,str) and 'compile' in incname: line = '%s = %s \n' % (fortran_name, value) - fsock.write(line) + fsock.write(line) + else: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, self.f77_formatting(value)) else: line = '%s = %s \n' % (fortran_name, self.f77_formatting(value)) - fsock.writelines(line) - if not output_file: - fsock.close() - path = pjoin(output_dir,pathinc) - if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): - files.mv(path+'.tmp', path) - else: - os.remove(path+'.tmp') - + fsock.writelines(line) + if not output_file: + fsock.close() + path = pjoin(output_dir,pathinc) + if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): + files.mv(path+'.tmp', path) + else: + os.remove(path+'.tmp') def write_autodef(self, output_dir, output_file=None): """ Add the definition of variable to run.inc if the variable is set with autodef. @@ -3764,13 +3896,14 @@ def remove_all_cut(self): %(tmin_for_channel)s = tmin_for_channel ! limit the non-singular reach of --some-- channel of integration related to T-channel diagram (value between -1 and 0), -1 is no impact %(survey_splitting)s = survey_splitting ! for loop-induced control how many core are used at survey for the computation of a single iteration. %(survey_nchannel_per_job)s = survey_nchannel_per_job ! control how many Channel are integrated inside a single job on cluster/multicore - %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) + %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) #********************************************************************* -# Compilation flag. No automatic re-compilation (need manual "make clean" in Source) +# Compilation flag. #********************************************************************* %(global_flag)s = global_flag ! fortran optimization flag use for the all code. %(aloha_flag)s = aloha_flag ! fortran optimization flag for aloha function. Suggestions: '-ffast-math' %(matrix_flag)s = matrix_flag ! fortran optimization flag for matrix.f function. Suggestions: '-O3' + %(vector_size)s = vector_size ! size designed for SIMD/OpenMP/GPU (number of events in lockstep) """ template_off = '# To see advanced option for Phase-Space optimization: type "update psoptim"' @@ -3926,9 +4059,12 @@ class RunCardLO(RunCard): "get_dummy_x1_x2": pjoin("SubProcesses","dummy_fct.f"), "dummy_boostframe": pjoin("SubProcesses","dummy_fct.f"), "user_dynamical_scale": pjoin("SubProcesses","dummy_fct.f"), + "bias_wgt_custom": pjoin("SubProcesses","dummy_fct.f"), "user_": pjoin("SubProcesses","dummy_fct.f") # all function starting by user will be added to that file } + include_as_parameter = ['vector.inc'] + if MG5DIR: default_run_card = pjoin(MG5DIR, "internal", "default_run_card_lo.dat") @@ -4162,10 +4298,15 @@ def default_setup(self): self.add_param('hel_splitamp', True, hidden=True, include=False, comment='decide if amplitude aloha call can be splitted in two or not when doing helicity per helicity optimization.') self.add_param('hel_zeroamp', True, hidden=True, include=False, comment='decide if zero amplitude can be removed from the computation when doing helicity per helicity optimization.') self.add_param('SDE_strategy', 1, allowed=[1,2], fortran_name="sde_strat", comment="decide how Multi-channel should behaves \"1\" means full single diagram enhanced (hep-ph/0208156), \"2\" use the product of the denominator") - self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check') - self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math') - self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3') - + self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check', + fct_mod=(self.make_clean, ('Source'),{})) + self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math', + fct_mod=(self.make_clean, ('Source/DHELAS'),{})) + self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3', + fct_mod=(self.make_Ptouch, ('matrix'),{})) + self.add_param('vector_size', 1, include='vector.inc', hidden=True, comment='lockstep size for parralelism run', + fortran_name='VECSIZE_MEMMAX', fct_mod=(self.reset_simd,(),{})) + # parameter allowing to define simple cut via the pdg # Special syntax are related to those. (can not be edit directly) self.add_param('pt_min_pdg',{'__type__':0.}, include=False, cut=True) @@ -4187,8 +4328,7 @@ def default_setup(self): self.add_param('mxxmin4pdg',[-1.], system=True) self.add_param('mxxpart_antipart', [False], system=True) - # CUDACPP parameters - self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + def check_validity(self): """ """ diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/check_param_card.py b/epochX/cudacpp/gq_ttq.mad/bin/internal/check_param_card.py index fe874a06a4..71089d7480 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/internal/check_param_card.py +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/check_param_card.py @@ -85,7 +85,7 @@ def load_str(self, text): self.value= ' '.join(data[len(self.lhacode):]) # check that lhacode are the first entry otherwise return invalid param. if ' '.join([str(i) for i in self.lhacode]) != ' '.join(data[:len(self.lhacode)]): - raise InvalidParam + raise InvalidParam("line was %s" % str(data)) else: self.value = data[-1] diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/common_run_interface.py b/epochX/cudacpp/gq_ttq.mad/bin/internal/common_run_interface.py index 5d0187e3fa..14c7f310dc 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/internal/common_run_interface.py +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/common_run_interface.py @@ -749,13 +749,15 @@ def writeRunWeb(me_dir): class RunWebHandling(object): - def __init__(self, me_dir, crashifpresent=True, warnifpresent=True): + def __init__(self, me_dir, crashifpresent=True, warnifpresent=True, force_run=False): """raise error if RunWeb already exists me_dir is the directory where the write RunWeb""" self.remove_run_web = True self.me_dir = me_dir - + if force_run: + self.remove_run_web = False + return if crashifpresent or warnifpresent: if os.path.exists(pjoin(me_dir, 'RunWeb')): pid = open(pjoin(me_dir, 'RunWeb')).read() @@ -6574,7 +6576,7 @@ def reask(self, *args, **opt): fail_due_to_format = 0 #parameter to avoid infinite loop def postcmd(self, stop, line): - if line not in [None, '0', 'done', '']: + if line not in [None, '0', 'done', '',0]: ending_question = cmd.OneLinePathCompletion.postcmd(self,stop,line) else: ending_question = True @@ -7533,7 +7535,8 @@ def open_file(self, answer): else: raise if time.time() - start < .5: - self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y') + self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y', + timeout=False) self.reload_card(path) def reload_card(self, path): diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/extended_cmd.py b/epochX/cudacpp/gq_ttq.mad/bin/internal/extended_cmd.py index a6a8609dce..2f37070580 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/internal/extended_cmd.py +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/extended_cmd.py @@ -1108,9 +1108,12 @@ def ask(self, question, default, choices=[], path_msg=None, if alias: choices += list(alias.keys()) + + question_instance = obj(question, allow_arg=choices, default=default, mother_interface=self, **opt) - + if fct_timeout is None: + fct_timeout = lambda x: question_instance.postcmd(x, default) if x and default else False if first_cmd: if isinstance(first_cmd, str): question_instance.onecmd(first_cmd) @@ -2271,6 +2274,9 @@ def postcmd(self, stop, line): if n: self.default(line) return self.postcmd(stop, line) + elif self.value is None and line: + self.default(line) + return self.postcmd(stop, line) if not self.casesensitive: for ans in self.allow_arg: if ans.lower() == self.value.lower(): diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/gen_ximprove.py b/epochX/cudacpp/gq_ttq.mad/bin/internal/gen_ximprove.py index 3b8ec31215..a88d60b282 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/internal/gen_ximprove.py +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/gen_ximprove.py @@ -154,10 +154,15 @@ def get_helicity(self, to_submit=True, clean=True): p = misc.Popen(['./gensym'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=Pdir) #sym_input = "%(points)d %(iterations)d %(accuracy)f \n" % self.opts + (stdout, _) = p.communicate(''.encode()) stdout = stdout.decode('ascii',errors='ignore') - nb_channel = max([math.floor(float(d)) for d in stdout.split()]) - + try: + nb_channel = max([math.floor(float(d)) for d in stdout.split()]) + except Exception as error: + misc.sprint(stdout, 'no channel or error for %s' % Pdir) + continue + self.cmd.compile(['madevent_forhel'], cwd=Pdir) if not os.path.exists(pjoin(Pdir, 'madevent_forhel')): raise Exception('Error make madevent_forhel not successful') diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/launch_plugin.py b/epochX/cudacpp/gq_ttq.mad/bin/internal/launch_plugin.py new file mode 100644 index 0000000000..23271b846e --- /dev/null +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/launch_plugin.py @@ -0,0 +1,100 @@ + +import logging +import os +import subprocess +pjoin = os.path.join +logger = logging.getLogger('cmdprint') # for stdout + +try: + import madgraph +except ImportError: + import internal.madevent_interface as madevent_interface + import internal.misc as misc + import internal.extended_cmd as extended_cmd + import internal.banner as banner_mod +else: + import madgraph.interface.madevent_interface as madevent_interface + import madgraph.various.misc as misc + import madgraph.interface.extended_cmd as extended_cmd + import madgraph.various.banner as banner_mod + +class CPPMEInterface(madevent_interface.MadEventCmdShell): + + def compile(self, *args, **opts): + """ """ + + import multiprocessing + if not self.options['nb_core'] or self.options['nb_core'] == 'None': + self.options['nb_core'] = multiprocessing.cpu_count() + + if args and args[0][0] == 'madevent' and hasattr(self, 'run_card'): + import pathlib + import os + pjoin = os.path.join + + + + + cudacpp_backend = self.run_card['cudacpp_backend'].upper() # the default value is defined in banner.py + logger.info("Building madevent in madevent_interface.py with '%s' matrix elements"%cudacpp_backend) + if cudacpp_backend == 'FORTRAN': + args[0][0] = 'madevent_fortran_link' + elif cudacpp_backend == 'CPP': + args[0][0] = 'madevent_cpp_link' + elif cudacpp_backend == 'CUDA': + args[0][0] = 'madevent_cuda_link' + else: + raise Exception("Invalid cudacpp_backend='%s': only 'FORTRAN', 'CPP', 'CUDA' are supported") + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + else: + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + +class CPPRunCard(banner_mod.RunCardLO): + + def reset_simd(self, old_value, new_value, name): + if not hasattr(self, 'path'): + raise Exception + + if name == "vector_size" and new_value <= int(old_value): + # code can handle the new size -> do not recompile + return + + Sourcedir = pjoin(os.path.dirname(os.path.dirname(self.path)), 'Source') + subprocess.call(['make', 'cleanavx'], cwd=Sourcedir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + def plugin_input(self, finput): + return + + def default_setup(self): + super().default_setup() + self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + + + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + if incname == "vector.inc" and 'vector_size' not in self.user_set: + return + super().write_one_include_file(output_dir, incname, output_file) + + + def check_validity(self): + """ensure that PLUGIN information are consistent""" + + super().check_validity() + + if self['SDE_strategy'] != 1: + logger.warning('SDE_strategy different of 1 is not supported with SMD/GPU mode') + self['sde_strategy'] = 1 + + if self['hel_recycling']: + self['hel_recycling'] = False + +class GPURunCard(CPPRunCard): + + def default_setup(self): + super(CPPRunCard, self).default_setup() + self.add_param('cudacpp_backend', 'CUDA', include=False, hidden=False) + +MEINTERFACE = CPPMEInterface +RunCard = CPPRunCard diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/madevent_interface.py b/epochX/cudacpp/gq_ttq.mad/bin/internal/madevent_interface.py index 920e07a926..d722702891 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/internal/madevent_interface.py +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/madevent_interface.py @@ -3796,9 +3796,11 @@ def do_combine_events(self, line): if self.run_card['bias_module'].lower() not in ['dummy', 'none'] and nb_event: self.correct_bias() - + elif self.run_card['custom_fcts']: + self.correct_bias() + logger.info("combine events done in %s", time.time()-start) - + self.to_store.append('event') diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot new file mode 100755 index 0000000000..7deee7ac88 --- /dev/null +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_unweighted_events.lhe.gz ]];then + gunzip -c ${run}_unweighted_events.lhe.gz > unweighted_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e unweighted_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir $run + cd $run + echo "../unweighted_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl $run parton + mv plots.html ${run}_plots.html +fi + diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_delphes b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_delphes new file mode 100755 index 0000000000..975f410d0e --- /dev/null +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_delphes @@ -0,0 +1,46 @@ +#!/bin/bash +# +# This runs MadAnalysis on the delphes_events.lhco +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_delphes_events.lhco.gz ]];then + gunzip -c ${run}_delphes_events.lhco.gz > delphes_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e delphes_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_delphes + cd ${run}_delphes + echo "../delphes_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_delphes Delphes + mv plots.html ${run}_plots_delphes.html +fi diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pgs b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pgs new file mode 100755 index 0000000000..e7a36ef344 --- /dev/null +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pgs @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_pgs_events.lhco.gz ]];then + gunzip -c ${run}_pgs_events.lhco.gz > pgs_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e pgs_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pgs + cd ${run}_pgs + echo "../pgs_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pgs PGS + mv plots.html ${run}_plots_pgs.html +fi + diff --git a/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pythia b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pythia new file mode 100755 index 0000000000..532bfb4b7b --- /dev/null +++ b/epochX/cudacpp/gq_ttq.mad/bin/internal/run_plot_pythia @@ -0,0 +1,50 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin/internal + +if [[ $run != "" && -e ${run}_pythia_events.lhe.gz ]];then + gunzip -c ${run}_pythia_events.lhe.gz > pythia_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e pythia_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pythia + cd ${run}_pythia + echo "../pythia_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pythia Pythia + mv plots.html ${run}_plots_pythia.html + $dirbin/gen_crossxhtml-pl $run +else + echo "Not creating plots" +fi + diff --git a/epochX/cudacpp/gq_ttq.mad/bin/madevent b/epochX/cudacpp/gq_ttq.mad/bin/madevent index c944aa1faf..dff9711b73 100755 --- a/epochX/cudacpp/gq_ttq.mad/bin/madevent +++ b/epochX/cudacpp/gq_ttq.mad/bin/madevent @@ -32,6 +32,7 @@ except ImportError: import os +pjoin = os.path.join import optparse # Get the directory of the script real path (bin) @@ -160,13 +161,30 @@ except: pass import internal.madevent_interface as cmd_interface +# check for plugin customization of the launch command +launch_interface = cmd_interface.MadEventCmdShell +if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + +#Source use this executable for compilation always allow it +force_run = False +if (args and args[0] == 'treatcards'): + force_run=True + # Call the cmd interface main loop try: if '-h' in args or '--help' in args: - launch = ME.MadEventCmdShell(me_dir=os.path.dirname(root_path), force_run=True) + launch = launch_interface(me_dir=os.path.dirname(root_path), force_run=True) launch.exec_cmd('help generate_events') sys.exit(0) - with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), ): + with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), force_run=force_run): if (args and os.path.isfile(args[0])): # They are an input file input_file = args[0] @@ -178,7 +196,7 @@ try: cmd_line.run_cmd('import command ' + input_file) cmd_line.run_cmd('quit') else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) cmd_line.use_rawinput = False cmd_line.haspiping = False cmd_line.run_cmd('import command ' + input_file) @@ -188,7 +206,7 @@ try: if options.web: cmd_line = cmd_interface.MadEventCmd(force_run=True) else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) if not hasattr(cmd_line, 'do_%s' % args[0]): if parser_error: print( parser_error) diff --git a/epochX/cudacpp/gq_ttq.mad/src/HelAmps_sm.h b/epochX/cudacpp/gq_ttq.mad/src/HelAmps_sm.h index 901400d447..0dd5f20f71 100644 --- a/epochX/cudacpp/gq_ttq.mad/src/HelAmps_sm.h +++ b/epochX/cudacpp/gq_ttq.mad/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -885,6 +887,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -897,6 +900,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -910,6 +914,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //========================================================================== @@ -921,6 +926,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -944,6 +950,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -975,6 +982,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1006,6 +1014,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1037,6 +1046,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); diff --git a/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.cc b/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.cc index d5eda63ee0..3452d1e8da 100644 --- a/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.cc +++ b/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.cc @@ -111,8 +111,8 @@ Parameters_sm::setDependentParameters() // now computed event-by-event (running void Parameters_sm::setDependentCouplings() // now computed event-by-event (running alphas #373) { - GC_11 = mdl_complexi * G; GC_10 = -G; + GC_11 = mdl_complexi * G; } */ @@ -195,7 +195,7 @@ void Parameters_sm::printDependentCouplings() // now computed event-by-event (running alphas #373) { std::cout << "sm model couplings dependent on event kinematics:" << std::endl; - std::cout << std::setw( 20 ) << "GC_11 = " << std::setiosflags( std::ios::scientific ) << std::setw( 10 ) << GC_11 << std::endl; std::cout << std::setw( 20 ) << "GC_10 = " << std::setiosflags( std::ios::scientific ) << std::setw( 10 ) << GC_10 << std::endl; + std::cout << std::setw( 20 ) << "GC_11 = " << std::setiosflags( std::ios::scientific ) << std::setw( 10 ) << GC_11 << std::endl; } */ diff --git a/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.h b/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.h index 0c77cf58f0..4f6f322ed9 100644 --- a/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.h +++ b/epochX/cudacpp/gq_ttq.mad/src/Parameters_sm.h @@ -54,7 +54,7 @@ namespace mg5amcCpu //double mdl_sqrt__aS, G, mdl_G__exp__2; // now computed event-by-event (running alphas #373) // Model couplings dependent on aS - //cxsmpl GC_11, GC_10; // now computed event-by-event (running alphas #373) + //cxsmpl GC_10, GC_11; // now computed event-by-event (running alphas #373) // Set parameters that are unchanged during the run void setIndependentParameters( SLHAReader& slha ); @@ -194,8 +194,8 @@ namespace mg5amcCpu //constexpr double mdl_G__exp__2 = ( ( G ) * ( G ) ); // now computed event-by-event (running alphas #373) // Model couplings dependent on aS - //constexpr cxsmpl GC_11 = mdl_complexi * G; // now computed event-by-event (running alphas #373) //constexpr cxsmpl GC_10 = -G; // now computed event-by-event (running alphas #373) + //constexpr cxsmpl GC_11 = mdl_complexi * G; // now computed event-by-event (running alphas #373) // Print parameters that are unchanged during the run void printIndependentParameters(); @@ -226,12 +226,12 @@ namespace mg5amcCpu namespace Parameters_sm_dependentCouplings { constexpr size_t ndcoup = 2; // #couplings that vary event by event because they depend on the running alphas QCD - constexpr size_t idcoup_GC_11 = 0; - constexpr size_t idcoup_GC_10 = 1; + constexpr size_t idcoup_GC_10 = 0; + constexpr size_t idcoup_GC_11 = 1; struct DependentCouplings_sv { - cxtype_sv GC_11; cxtype_sv GC_10; + cxtype_sv GC_11; }; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-variable" // e.g. <> @@ -257,8 +257,8 @@ namespace mg5amcCpu //const fptype_sv G = 2. * mdl_sqrt__aS * constexpr_sqrt( M_PI ); const fptype_sv mdl_G__exp__2 = ( ( G ) * ( G ) ); // Model couplings dependent on aS - out.GC_11 = cI * G; out.GC_10 = -G; + out.GC_11 = cI * G; } // End SM implementation - no special handling of vectors of floats as in EFT (#439) return out; @@ -293,12 +293,12 @@ namespace mg5amcCpu using namespace Parameters_sm_dependentCouplings; const fptype_sv& gs_sv = G_ACCESS::kernelAccessConst( gs ); DependentCouplings_sv couplings_sv = computeDependentCouplings_fromG( gs_sv ); - fptype* GC_11s = C_ACCESS::idcoupAccessBuffer( couplings, idcoup_GC_11 ); fptype* GC_10s = C_ACCESS::idcoupAccessBuffer( couplings, idcoup_GC_10 ); - cxtype_sv_ref GC_11s_sv = C_ACCESS::kernelAccess( GC_11s ); + fptype* GC_11s = C_ACCESS::idcoupAccessBuffer( couplings, idcoup_GC_11 ); cxtype_sv_ref GC_10s_sv = C_ACCESS::kernelAccess( GC_10s ); - GC_11s_sv = couplings_sv.GC_11; + cxtype_sv_ref GC_11s_sv = C_ACCESS::kernelAccess( GC_11s ); GC_10s_sv = couplings_sv.GC_10; + GC_11s_sv = couplings_sv.GC_11; mgDebug( 1, __FUNCTION__ ); return; } diff --git a/epochX/cudacpp/gq_ttq.mad/src/cudacpp_src.mk b/epochX/cudacpp/gq_ttq.mad/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/gq_ttq.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/gq_ttq.mad/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #------------------------------------------------------------------------------- diff --git a/epochX/cudacpp/pp_tt012j.mad/Cards/delphes_trigger.dat b/epochX/cudacpp/pp_tt012j.mad/Cards/delphes_trigger.dat new file mode 100644 index 0000000000..0aab0677aa --- /dev/null +++ b/epochX/cudacpp/pp_tt012j.mad/Cards/delphes_trigger.dat @@ -0,0 +1,20 @@ +#TRIGGER CARD # DO NOT REMOVE THIS IS A TAG! + +# list of trigger algorithms +# trigger_name >> algorithm #comments +Inclusive electron >> ELEC1_PT: '29' +di-electron >> ELEC1_PT: '17' && ELEC2_PT: '17' +Inclusive Photon >> GAMMA1_PT: '80' +di-Photon >> GAMMA1_PT: '40' && GAMMA2_PT: '25' +Inclusive muon >> MUON1_PT: '19' +di-muon >> MUON1_PT: '7' && MUON2_PT: '7' +Taujet and ETmis >> TAU1_PT: '86' && ETMIS_PT: '65' +di-Taujets >> TAU1_PT: '59' && TAU2_PT: '59' +Jet and ETmis >> JET1_PT: '180' && ETMIS_PT: '123' +Taujet and electron >> TAU1_PT: '45' && ELEC1_PT: '19' +Taujet and muon >> TAU1_PT: '40' && ELEC1_PT: '15' +Inclusive b-jet >> Bjet1_PT: '237' +Inclusive 1 jet >> JET1_PT: '657' +Inclusive 3 jets >> JET1_PT: '247' && JET2_PT: '247' && JET3_PT: '247' +Inclusive 4 jets >> JET1_PT: '113' && JET2_PT: '113' && JET3_PT: '113' && JET4_PT: '113' + diff --git a/epochX/cudacpp/pp_tt012j.mad/Cards/me5_configuration.txt b/epochX/cudacpp/pp_tt012j.mad/Cards/me5_configuration.txt index 27acb12a1e..8a0c1e6345 100644 --- a/epochX/cudacpp/pp_tt012j.mad/Cards/me5_configuration.txt +++ b/epochX/cudacpp/pp_tt012j.mad/Cards/me5_configuration.txt @@ -234,7 +234,7 @@ # pineappl = pineappl -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo # MG5 MAIN DIRECTORY -mg5_path = /data/stephan/madgraph4gpu/MG5aMC/mg5amcnlo +mg5_path = /afs/cern.ch/work/j/jteig/madgraph4gpu/MG5aMC/mg5amcnlo diff --git a/epochX/cudacpp/pp_tt012j.mad/Cards/plot_card.dat b/epochX/cudacpp/pp_tt012j.mad/Cards/plot_card.dat new file mode 100644 index 0000000000..9abe1cc05e --- /dev/null +++ b/epochX/cudacpp/pp_tt012j.mad/Cards/plot_card.dat @@ -0,0 +1,203 @@ +#************************************************************************** +# Card for MadAnalysis * +# * +# This file is used to set the classes and options for * +# the MadAnalysis program. * +# * +# * +# Some comments about the classes * +# 1. Plots are for classes of particles. * +# 2. Each particle is identified by its PDG code. * +# 3. Classes names are arbitrary (4 symbols max, no spaces allowed). * +# 4. Particles in the same class will be ordered with the 'ordering * +# function' in the file in_func.f. * +# 5. Classes can be added/edited/removed at will, and given a name * +# that will then appear in the plots. * +# 6. A particle can be put in one class only. Putting a particle in * +# two or more classes can lead to double counting of events. * +# 7. The class name mET is missing Energy and its name is reserved. * +# If used, it must be put last in the classes list below. * +# 8. If events contain particles not belonging to an existing class, * +# a new class will automatically be generated. * +# 9. For LHCO events the PDG code 21 is assigned to a jet (not * +# b-tagged), 5 to a b-tagged jet and 12 to missing ET. * +# * +# * +# Some comments about the cuts * +# 1. In the file kin_func.f the functions on which cuts can be applied * +# are given. * +# 2. The syntax is as follows. * +# etmin 1 3 30d0 * +# means that from the first class the Et of the first three particles * +# has to be greater than 30 GeV. * +# * +# etmissmin 20d0 * +# means that there must be at least 20 GeV of missing Et * +# * +# dRmin 2 1 4 3 3d0 * +# means that the distance between the first particle in the second * +# class and the first three particles in the fourth class has to be * +# greater than 3. * +# * +# ptmax 1 3 10d0 * +# ptmax 1 2 15d0 * +# means that the maximum pt of the third particle in the first class * +# has to smaller than 10 GeV, and the first two particles of this * +# class has to be smaller than 15 GeV * +# 3. The ordering of the particles within a class can be set with the * +# 'ordering function' in the file kin_func.f. * +# 4. For all the 'min' cuts, an event will be thrown away if the particle * +# does not exist. On the other hand, for all the 'max' cuts the cut * +# will be ignored if the particle does not exist * +# (Only dRij is an exception, for which it is the other way around) * +# * +# * +# * +# Some comments about the plotting options * +# 1. In the file kin_func.f the functions can be found that can be * +# plotted. (only for off-line usage) * +# 2. With the plotting options one can set the number of plots for each * +# of these functions. * +# 3. One has to specify for each variable which particles from which * +# class are used to set the plots. Syntax: * +# et 2 4 * +# means that the transverse energy of the first four particles in the * +# second class will be plotted. * +# mij 1 3 * +# mij 2 2 * +# means that for the invariant mass plots the first three particles * +# from the first class and the first two from the second class will be * +# used to plot the invariant mass of two particles. (10 plots) * +# 4. The ordering of the particles in a class can be set with the * +# 'ordering_function'. pt, e and et are valid functions. (For off-line * +# users X1, X2 and X3 can also be used, if defined in kin_func.f.) * +# 5. Max number of plots is 200. * +# * +# * +#************************************************************************** +# Put here your list of classes +#************************************************************************** +# Do NOT put spaces before class names! +# Begin Classes # This is TAG. Do not modify this line +jet 1 -1 2 -2 3 -3 4 -4 21 # Class number 1 +b 5 -5 # Class number 2 +mET 12 -12 14 -14 16 -16 1000022 # Missing ET class, name is reserved +# End Classes # This is TAG. Do not modify this line +#************************************************************************** +ordering_function pt # orders particles in classes according to their pt +normalization xsec # histogram normalization, xsec or number (e.g. 1) +#************************************************************************** +# Put here list of minimum pt for the classes +#************************************************************************** +# Begin Minpts # This is TAG. Do not modify this line +#1 30 +#2 40 +#3 10 +# End Minpts # This is TAG. Do not modify this line +#************************************************************************** +# Cuts on plotted events +#************************************************************************** +# Modify the cuts and remove the pounds/hashes to apply those cuts +# Do NOT put spaces at the beginning of the following lines! +# Begin Cuts # This is TAG. Do not modify this line +#etmin 2 2 40d0 +#etmin 2 1 80d0 +#etmin 1 3 20d0 +#etmax 2 1 200d0 +#ptmin 3 1 0d0 +#etmissmin 20d0 +#etmissmax 80d0 +#etamax 1 1 1d0 +#etamax 2 1 2d0 +#etamin 2 2 1.5d0 +#etamin 2 1 2d0 +#mijmax 2 1 2 2 200d0 +#mijmin 2 1 2 2 100d0 +#X1min 2 1 40d0 +#X1max 2 2 50d0 +#dRijmin 2 1 2 2 0.7d0 +#dRijmax 1 3 2 2 0.7d0 +#XY1min 2 2 2 2 20d0 +#XYZA2max 2 2 2 2 4 1 5 1 40d0 +# End Cuts # This is TAG. Do not modify this line +#************************************************************************** +# Put here the required plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotDefs # This is TAG. Do not modify this line +pt 1 4 # plot pt for the first four particles in class 1 +pt 2 4 # plot pt for the first four particles in class 2 +pt 3 4 # plot pt for the first four particles in class 3 +pt 4 4 # plot pt for the first four particles in class 4 +pt 5 4 # etc. +pt 6 4 +pt 7 4 +#e 2 2 +y 1 4 # plot rapidity for the first four particles in class 1 +y 2 4 +y 3 4 +y 4 4 +y 5 4 +y 6 4 +y 7 4 +#eta 2 2 # plot pseudo-rapidity for the first two part in the 2nd class +#mom 4 1 +#costh 5 1 +#phi 2 2 +#delta_eta 2 2 +#delta_eta 4 1 +mij 1 4 # use the first four particles in the 1st class to plot inv. mass +mij 2 2 # use the first two particles from the second class as well +mij 3 1 # etc. +mij 4 1 +mij 5 1 +mij 6 1 +mij 7 1 +#cosij 1 2 +#cosij 2 2 +#cosij 3 1 +#cosij 4 1 +dRij 1 4 +dRij 2 2 +dRij 3 1 +dRij 4 1 +dRij 5 1 +dRij 6 1 +dRij 7 1 +#delta_phi 2 2 +#delta_phi 4 1 +#delta_phi 5 1 +#X1 2 2 # plot X1 (defined in kin_func.f) +#XYZA1 2 2 +#XYZA1 4 1 +#XYZA1 5 1 +# End PlotDefs # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Put here the plot ranges +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotRange # This is TAG. Do not modify this line +pt 10 0 500 # bin size, min value, max value +et 10 0 500 # bin size, min value, max value +etmiss 10 0 500 # bin size, min value, max value +ht 20 0 1500 +y 0.2 -5 5 # etc. +mij 20 0 1500 +dRij 0.1 0 5 +#delta_phi 0.1 0 3.1 +#X1 1 0 100 +#XYZA1 1 0 100 +# End PlotRange # This is TAG. Do not modify this line +#************************************************************************** +#************************************************************************** +# Output for plots +#************************************************************************** +# Do NOT put spaces at the beginning of the following lines! +# Begin PlotOutput # This is TAG. Do not modify this line +output topdrawer # set to topdrawer or gnuplot +plot_decayed no # plot (and cut) dec. res.? (Only for LHE events) +# End PlotOutput # This is TAG. Do not modify this line +#************************************************************************** +# +# diff --git a/epochX/cudacpp/pp_tt012j.mad/Cards/run_card.dat b/epochX/cudacpp/pp_tt012j.mad/Cards/run_card.dat index f4ca7c0b5d..58e12c11d7 100644 --- a/epochX/cudacpp/pp_tt012j.mad/Cards/run_card.dat +++ b/epochX/cudacpp/pp_tt012j.mad/Cards/run_card.dat @@ -185,13 +185,3 @@ # systematics = systematics_program ! none, systematics [python], SysCalc [depreceted, C++] ['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset', '--alps=0.5,1,2'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule - -#********************************************************************* -# Options for the cudacpp plugin -#********************************************************************* - -# Set cudacpp-specific values of non-cudacpp-specific options --O3 -ffast-math -fbounds-check = global_flag ! build flags for Fortran code (for a fair comparison to cudacpp) - -# New cudacpp-specific options (default values are defined in banner.py) -CPP = cudacpp_backend ! valid backends are FORTRAN, CPP, CUDA diff --git a/epochX/cudacpp/pp_tt012j.mad/Source/DHELAS/aloha_file.inc b/epochX/cudacpp/pp_tt012j.mad/Source/DHELAS/aloha_file.inc index fa0f3d86f5..1b5bf6ec54 100644 --- a/epochX/cudacpp/pp_tt012j.mad/Source/DHELAS/aloha_file.inc +++ b/epochX/cudacpp/pp_tt012j.mad/Source/DHELAS/aloha_file.inc @@ -1 +1 @@ -ALOHARoutine = FFV1P0_3.o FFV1_0.o FFV1_1.o FFV1_2.o VVV1P0_1.o VVV1_0.o VVVV1P0_1.o VVVV1_0.o VVVV3P0_1.o VVVV3_0.o VVVV4P0_1.o VVVV4_0.o +ALOHARoutine = VVV1_0.o VVV1P0_1.o FFV1_0.o FFV1_1.o FFV1_2.o FFV1P0_3.o VVVV1_0.o VVVV1P0_1.o VVVV3_0.o VVVV3P0_1.o VVVV4_0.o VVVV4P0_1.o diff --git a/epochX/cudacpp/pp_tt012j.mad/Source/PDF/pdfwrap_lhapdf.f b/epochX/cudacpp/pp_tt012j.mad/Source/PDF/pdfwrap_lhapdf.f index 0be926e6cd..3f36905346 100644 --- a/epochX/cudacpp/pp_tt012j.mad/Source/PDF/pdfwrap_lhapdf.f +++ b/epochX/cudacpp/pp_tt012j.mad/Source/PDF/pdfwrap_lhapdf.f @@ -5,6 +5,7 @@ SUBROUTINE PDFWRAP C INCLUDE 'pdf.inc' INCLUDE '../alfas.inc' + INCLUDE '../vector.inc' INCLUDE '../coupl.inc' REAL*8 ZMASS DATA ZMASS/91.188D0/ diff --git a/epochX/cudacpp/pp_tt012j.mad/Source/make_opts b/epochX/cudacpp/pp_tt012j.mad/Source/make_opts index bd3c24228d..2607530b78 100644 --- a/epochX/cudacpp/pp_tt012j.mad/Source/make_opts +++ b/epochX/cudacpp/pp_tt012j.mad/Source/make_opts @@ -1,17 +1,11 @@ -pdlabel1= -pdlabel2= -lhapdf= -PYTHIA8_PATH=NotInstalled -MG5AMC_VERSION=3.5.0_lo_vect -GLOBAL_FLAG=-O3 -ffast-math -fbounds-check -ALOHA_FLAG= -MATRIX_FLAG= DEFAULT_CPP_COMPILER=g++ MACFLAG= STDLIB=-lstdc++ STDLIB_FLAG= DEFAULT_F_COMPILER=gfortran -DEFAULT_F2PY_COMPILER=f2py3 +DEFAULT_F2PY_COMPILER=f2py3.9 +MG5AMC_VERSION=SpecifiedByMG5aMCAtRunTime +PYTHIA8_PATH=NotInstalled #end_of_make_opts_variables BIASLIBDIR=../../../lib/ diff --git a/epochX/cudacpp/pp_tt012j.mad/Source/makefile b/epochX/cudacpp/pp_tt012j.mad/Source/makefile index dbe08b846e..00c73099a0 100644 --- a/epochX/cudacpp/pp_tt012j.mad/Source/makefile +++ b/epochX/cudacpp/pp_tt012j.mad/Source/makefile @@ -136,5 +136,7 @@ cleanSource: clean: cleanSource for i in `ls -d ../SubProcesses/P*`; do cd $$i; make clean; cd -; done; -cleanall: cleanSource +cleanavx: + for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; +cleanall: cleanSource # THIS IS THE ONE for i in `ls -d ../SubProcesses/P*`; do cd $$i; make cleanavxs; cd -; done; diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/MatrixElementKernels.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/MatrixElementKernels.cc index 30257195b6..cfed7d2af5 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/MatrixElementKernels.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/MatrixElementKernels.cc @@ -112,10 +112,17 @@ namespace mg5amcCpu // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu bool ok = true; // this is just an assumption! const std::string tag = "arm neon (128bit as in SSE4.2)"; -#else +#elif defined(__x86_64__) || defined(__i386__) bool known = true; bool ok = __builtin_cpu_supports( "sse4.2" ); const std::string tag = "nehalem (SSE4.2)"; +#else + bool known = false; // __builtin_cpu_supports is not supported + // See https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-all-Configurations.html + // See https://stackoverflow.com/q/62783908 + // See https://community.arm.com/arm-community-blogs/b/operating-systems-blog/posts/runtime-detection-of-cpu-features-on-an-armv8-a-cpu + bool ok = true; // this is just an assumption! + const std::string tag = "arm neon (128bit as in SSE4.2)"; #endif #else bool known = true; diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/CPPProcess.cc index 44f313bf0a..7717d11f6b 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/CPPProcess.cc @@ -246,10 +246,10 @@ namespace mg5amcCpu ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[4] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[4] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -260,10 +260,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 3 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[4] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[4], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -273,10 +273,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 3 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[4] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[4] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[4], w_fp[2], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[4], w_fp[2], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -799,8 +799,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/auto_dsig1.f index b68450743c..ee723193db 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_gg_ttx/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -126,11 +127,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/CPPProcess.cc index 89ce64642c..5d1e4fd6b3 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/CPPProcess.cc @@ -241,18 +241,18 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 1 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 0., 0., w_fp[4] ); + FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[4] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -776,14 +776,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 36,36 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 36 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/auto_dsig1.f index 8310241f21..f205954b28 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P0_uux_ttx/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,S1,C1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,21 +130,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc index 8cc007dff8..8d5864c1d8 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/CPPProcess.cc @@ -248,11 +248,11 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - VVV1_0( w_fp[5], w_fp[6], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[6], w_fp[4], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -265,10 +265,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 16 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[7] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[7], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[7], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -279,10 +279,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 16 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[8], w_fp[2], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -293,11 +293,11 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 16 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[9], w_fp[5], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[5], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -307,10 +307,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 16 *** // Wavefunction(s) for diagram number 5 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[3], w_fp[5], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -324,7 +324,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[8], w_fp[5], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[5], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -334,11 +334,11 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 16 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[5], w_fp[11], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[11], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -351,7 +351,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[5], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -365,7 +365,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[5], w_fp[7], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[7], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -375,10 +375,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 16 *** // Wavefunction(s) for diagram number 10 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[5] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[3], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -392,7 +392,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[9], w_fp[2], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[2], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -406,7 +406,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 12 - VVV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -422,7 +422,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[8], w_fp[11], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[11], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -435,7 +435,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[9], w_fp[7], w_fp[0], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[7], w_fp[0], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -448,7 +448,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -461,22 +461,22 @@ namespace mg5amcCpu // *** DIAGRAM 16 OF 16 *** // Wavefunction(s) for diagram number 16 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[10] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[6] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[9] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[10] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[6] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[3], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -1020,8 +1020,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f index 668cc26192..b8615bc68f 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -126,11 +127,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/matrix1.f index 7188daef76..2fc7bcdb89 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gg_ttxg/matrix1.f @@ -359,7 +359,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(10) + COMPLEX*16 ZTEMP, TMP_JAMP(9) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -508,33 +508,30 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(15) + AMP(16) ! used 4 times TMP_JAMP(2) = AMP(1) + AMP(18) ! used 4 times TMP_JAMP(1) = AMP(12) - AMP(17) ! used 4 times - TMP_JAMP(10) = TMP_JAMP(3) - TMP_JAMP(2) ! used 2 times - TMP_JAMP(9) = TMP_JAMP(1) + ((-0.000000000000000D+00 + TMP_JAMP(9) = TMP_JAMP(3) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(8) ! used 2 times + TMP_JAMP(8) = TMP_JAMP(3) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(5) ! used 2 times + TMP_JAMP(7) = TMP_JAMP(2) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(2) ! used 2 times + TMP_JAMP(6) = TMP_JAMP(2) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(3) ! used 2 times + TMP_JAMP(5) = TMP_JAMP(1) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(11) ! used 2 times - TMP_JAMP(8) = TMP_JAMP(2) - TMP_JAMP(1) ! used 2 times - TMP_JAMP(7) = TMP_JAMP(1) + ((0.000000000000000D+00, + TMP_JAMP(4) = TMP_JAMP(1) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(10) ! used 2 times - TMP_JAMP(6) = TMP_JAMP(3) - TMP_JAMP(1) ! used 2 times - TMP_JAMP(5) = TMP_JAMP(2) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(3) ! used 2 times - TMP_JAMP(4) = TMP_JAMP(3) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(5) ! used 2 times - JAMP(1,1) = (-1.000000000000000D+00)*AMP(6)+TMP_JAMP(4)+( - $ -1.000000000000000D+00)*TMP_JAMP(5) - JAMP(2,1) = (-1.000000000000000D+00)*AMP(4)+(-1.000000000000000D - $ +00)*TMP_JAMP(4)+TMP_JAMP(9) - JAMP(3,1) = (-1.000000000000000D+00)*AMP(13)+TMP_JAMP(5)+( - $ -1.000000000000000D+00)*TMP_JAMP(7) - JAMP(4,1) = (-1.000000000000000D+00)*AMP(7)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(8)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(10)+(-1.000000000000000D+00) - $ *TMP_JAMP(6) - JAMP(5,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(2)+((0.000000000000000D+00,-1.000000000000000D+00))*AMP(11) - $ +(-1.000000000000000D+00)*AMP(14)+TMP_JAMP(8) - JAMP(6,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(2)+((0.000000000000000D+00,-1.000000000000000D+00))*AMP(8) - $ +(-1.000000000000000D+00)*AMP(9)+TMP_JAMP(10) + JAMP(1,1) = (-1.000000000000000D+00)*AMP(6)+(-1.000000000000000D + $ +00)*TMP_JAMP(6)+TMP_JAMP(8) + JAMP(2,1) = (-1.000000000000000D+00)*AMP(4)+TMP_JAMP(5)+( + $ -1.000000000000000D+00)*TMP_JAMP(8) + JAMP(3,1) = (-1.000000000000000D+00)*AMP(13)+( + $ -1.000000000000000D+00)*TMP_JAMP(4)+TMP_JAMP(6) + JAMP(4,1) = (-1.000000000000000D+00)*AMP(7)+TMP_JAMP(4)+( + $ -1.000000000000000D+00)*TMP_JAMP(9) + JAMP(5,1) = (-1.000000000000000D+00)*AMP(14)+( + $ -1.000000000000000D+00)*TMP_JAMP(5)+TMP_JAMP(7) + JAMP(6,1) = (-1.000000000000000D+00)*AMP(9)+(-1.000000000000000D + $ +00)*TMP_JAMP(7)+TMP_JAMP(9) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc index 2d43c24604..631f5dc2bd 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/CPPProcess.cc @@ -243,19 +243,19 @@ namespace mg5amcCpu // Wavefunction(s) for diagram number 1 vxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][1], +1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - FFV1_2( w_fp[1], w_fp[0], COUPs[1], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[6] ); + FFV1_2( w_fp[1], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[5], w_fp[4], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[4], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -266,11 +266,11 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 5 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1P0_3( w_fp[1], w_fp[4], COUPs[1], 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1P0_3( w_fp[1], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -281,10 +281,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 5 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -295,10 +295,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 5 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[4], w_fp[0], COUPs[1], 0., 0., w_fp[5] ); + FFV1_1( w_fp[4], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[1], w_fp[5], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[5], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -312,7 +312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 5 - VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -856,14 +856,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 96,96 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 96 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f index ca1b7c1dc5..81ab70f6d1 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gu_ttxu/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION D2,U2,S2,C2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,14 +130,27 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)), QSCALE) + U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)), QSCALE) + S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)), QSCALE) + C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc index a676bbeb6e..621b151226 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/CPPProcess.cc @@ -243,19 +243,19 @@ namespace mg5amcCpu // Wavefunction(s) for diagram number 1 vxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - ixzxxx( momenta, cHel[ihel][4], -1, w_fp[4], 4 ); + ixxxxx( momenta, 0., cHel[ihel][4], -1, w_fp[4], 4 ); - FFV1_2( w_fp[4], w_fp[0], COUPs[1], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[6] ); + FFV1_2( w_fp[4], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -266,11 +266,11 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 5 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1P0_3( w_fp[4], w_fp[1], COUPs[1], 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1P0_3( w_fp[4], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -281,10 +281,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 5 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -295,10 +295,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 5 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[1], w_fp[0], COUPs[1], 0., 0., w_fp[5] ); + FFV1_1( w_fp[1], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[4], w_fp[5], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[4], w_fp[5], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -312,7 +312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 5 - VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[7], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -856,14 +856,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 96,96 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 96 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f index 33e638e237..b58c5d70bd 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_gux_ttxux/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,18 +130,27 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/CPPProcess.cc index 7edb26013e..ce7f4421dc 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/CPPProcess.cc @@ -241,9 +241,9 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 5 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); @@ -251,11 +251,11 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - FFV1_2( w_fp[0], w_fp[4], COUPs[1], 0., 0., w_fp[5] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[6] ); + FFV1_2( w_fp[0], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[5] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[1], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -266,11 +266,11 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 5 *** // Wavefunction(s) for diagram number 2 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); - FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); + FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -281,10 +281,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 5 *** // Wavefunction(s) for diagram number 3 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[5] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[5] ); // Amplitude(s) for diagram number 3 - FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -295,10 +295,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 5 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[1], w_fp[4], COUPs[1], 0., 0., w_fp[5] ); + FFV1_1( w_fp[1], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[5] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[0], w_fp[5], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[0], w_fp[5], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -312,7 +312,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 5 - VVV1_0( w_fp[4], w_fp[7], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[7], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -856,14 +856,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 36,36 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 36 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/auto_dsig1.f index f2902c7183..d85b1143a0 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P1_uux_ttxg/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,S1,C1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,21 +130,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/CPPProcess.cc index f1e1f21142..c99d25f125 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/CPPProcess.cc @@ -250,11 +250,11 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][5], +1, w_fp[5], 5 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[7] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[7] ); // Amplitude(s) for diagram number 1 - VVVV1_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -263,7 +263,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -272,7 +272,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[6], w_fp[7], w_fp[4], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -285,10 +285,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 123 *** // Wavefunction(s) for diagram number 2 - VVV1P0_1( w_fp[6], w_fp[4], COUPs[0], 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[6], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 2 - VVV1_0( w_fp[7], w_fp[5], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -305,10 +305,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 123 *** // Wavefunction(s) for diagram number 3 - VVV1P0_1( w_fp[6], w_fp[5], COUPs[0], 0., 0., w_fp[9] ); + VVV1P0_1( w_fp[6], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[7], w_fp[4], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -325,10 +325,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 123 *** // Wavefunction(s) for diagram number 4 - VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 0., 0., w_fp[10] ); + VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 4 - VVV1_0( w_fp[6], w_fp[7], w_fp[10], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[10], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -345,11 +345,11 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 123 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[12], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -363,7 +363,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[11], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -376,10 +376,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 123 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[3], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[13], w_fp[11], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[11], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -390,10 +390,10 @@ namespace mg5amcCpu // *** DIAGRAM 8 OF 123 *** // Wavefunction(s) for diagram number 8 - FFV1_1( w_fp[2], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_1( w_fp[2], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[12], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -407,7 +407,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[3], w_fp[14], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -420,10 +420,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 123 *** // Wavefunction(s) for diagram number 10 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[15] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[15] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[15], w_fp[14], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[14], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -434,10 +434,10 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 123 *** // Wavefunction(s) for diagram number 11 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[15], w_fp[16], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[16], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -451,7 +451,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[15], w_fp[2], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -467,7 +467,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[13], w_fp[16], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[16], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -481,7 +481,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -497,7 +497,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - FFV1_0( w_fp[3], w_fp[16], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[16], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -513,7 +513,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[12], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 16 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -526,12 +526,12 @@ namespace mg5amcCpu // *** DIAGRAM 17 OF 123 *** // Wavefunction(s) for diagram number 17 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[16] ); - FFV1_1( w_fp[12], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[16] ); + FFV1_1( w_fp[12], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 17 - FFV1_0( w_fp[16], w_fp[8], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[8], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 17 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -541,10 +541,10 @@ namespace mg5amcCpu // *** DIAGRAM 18 OF 123 *** // Wavefunction(s) for diagram number 18 - FFV1_1( w_fp[12], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[12], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 18 - FFV1_0( w_fp[16], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 18 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -557,7 +557,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 19 - FFV1_0( w_fp[16], w_fp[12], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[12], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 19 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -568,11 +568,11 @@ namespace mg5amcCpu // *** DIAGRAM 20 OF 123 *** // Wavefunction(s) for diagram number 20 - VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[12], COUPs[1], 0., 0., w_fp[17] ); + VVV1P0_1( w_fp[1], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[12], COUPs[1], 1.0, 0., 0., w_fp[17] ); // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[6], w_fp[5], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 20 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -588,7 +588,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 21 - FFV1_0( w_fp[3], w_fp[9], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 21 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -602,7 +602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - FFV1_0( w_fp[13], w_fp[12], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[12], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 22 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -613,10 +613,10 @@ namespace mg5amcCpu // *** DIAGRAM 23 OF 123 *** // Wavefunction(s) for diagram number 23 - VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 0., 0., w_fp[18] ); + VVV1P0_1( w_fp[1], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[18] ); // Amplitude(s) for diagram number 23 - VVV1_0( w_fp[18], w_fp[4], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 23 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -632,7 +632,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 24 - FFV1_0( w_fp[3], w_fp[8], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 24 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -646,7 +646,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 25 - FFV1_0( w_fp[15], w_fp[12], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[12], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 25 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -657,10 +657,10 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 123 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[12], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[19] ); + FFV1_1( w_fp[12], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[19] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[15], w_fp[19], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[19], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 26 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -673,7 +673,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[15], w_fp[9], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[9], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 27 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -686,7 +686,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 28 - FFV1_0( w_fp[13], w_fp[19], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[19], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 28 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -699,7 +699,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[13], w_fp[8], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[8], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 29 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -712,7 +712,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 30 - FFV1_0( w_fp[3], w_fp[19], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[19], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 30 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -726,7 +726,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 31 - VVV1_0( w_fp[1], w_fp[10], w_fp[17], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[17], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 31 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -739,22 +739,22 @@ namespace mg5amcCpu // *** DIAGRAM 32 OF 123 *** // Wavefunction(s) for diagram number 32 - VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[17] ); - VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[19] ); - VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[8] ); + VVVV1P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[17] ); + VVVV3P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[19] ); + VVVV4P0_1( w_fp[1], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[3], w_fp[12], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[1] -= amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[5] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[12], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[19], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[3] -= amp_sv[0]; jamp_sv[4] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[12], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[12], w_fp[8], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[2] += amp_sv[0]; jamp_sv[4] += amp_sv[0]; @@ -763,12 +763,12 @@ namespace mg5amcCpu // *** DIAGRAM 33 OF 123 *** // Wavefunction(s) for diagram number 33 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[12], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[12], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[20], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 33 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -778,10 +778,10 @@ namespace mg5amcCpu // *** DIAGRAM 34 OF 123 *** // Wavefunction(s) for diagram number 34 - FFV1_2( w_fp[12], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[12], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 34 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 34 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -794,7 +794,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - FFV1_0( w_fp[12], w_fp[9], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 35 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -805,10 +805,10 @@ namespace mg5amcCpu // *** DIAGRAM 36 OF 123 *** // Wavefunction(s) for diagram number 36 - FFV1P0_3( w_fp[12], w_fp[2], COUPs[1], 0., 0., w_fp[22] ); + FFV1P0_3( w_fp[12], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 36 - VVV1_0( w_fp[6], w_fp[5], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 36 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -824,7 +824,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 37 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 37 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -838,7 +838,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 38 - FFV1_0( w_fp[12], w_fp[14], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 38 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -852,7 +852,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 39 - VVV1_0( w_fp[18], w_fp[4], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 39 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -868,7 +868,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 40 - FFV1_0( w_fp[20], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 40 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -882,7 +882,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 41 - FFV1_0( w_fp[12], w_fp[11], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[11], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 41 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -893,10 +893,10 @@ namespace mg5amcCpu // *** DIAGRAM 42 OF 123 *** // Wavefunction(s) for diagram number 42 - FFV1_2( w_fp[12], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_2( w_fp[12], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 42 - FFV1_0( w_fp[23], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 42 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -909,7 +909,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 43 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 43 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -922,7 +922,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 44 - FFV1_0( w_fp[23], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 44 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -935,7 +935,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 45 - FFV1_0( w_fp[20], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[20], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 45 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -948,7 +948,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 46 - FFV1_0( w_fp[23], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[23], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 46 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -962,7 +962,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 47 - VVV1_0( w_fp[1], w_fp[10], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 47 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -978,17 +978,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 48 - FFV1_0( w_fp[12], w_fp[2], w_fp[17], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[17], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] += amp_sv[0]; jamp_sv[11] -= amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[12], w_fp[2], w_fp[19], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[19], COUPs[1], 1.0, &_fp[0] ); jamp_sv[11] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[17] -= amp_sv[0]; jamp_sv[21] += amp_sv[0]; - FFV1_0( w_fp[12], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); jamp_sv[9] -= amp_sv[0]; jamp_sv[15] += amp_sv[0]; jamp_sv[21] += amp_sv[0]; @@ -997,11 +997,11 @@ namespace mg5amcCpu // *** DIAGRAM 49 OF 123 *** // Wavefunction(s) for diagram number 49 - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[12] ); - FFV1_2( w_fp[3], w_fp[12], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[12] ); + FFV1_2( w_fp[3], w_fp[12], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 49 - FFV1_0( w_fp[22], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 49 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1012,10 +1012,10 @@ namespace mg5amcCpu // *** DIAGRAM 50 OF 123 *** // Wavefunction(s) for diagram number 50 - VVV1P0_1( w_fp[12], w_fp[5], COUPs[0], 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[12], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 50 - FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 50 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1031,7 +1031,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 51 - FFV1_0( w_fp[13], w_fp[9], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[9], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 51 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1042,10 +1042,10 @@ namespace mg5amcCpu // *** DIAGRAM 52 OF 123 *** // Wavefunction(s) for diagram number 52 - FFV1_1( w_fp[2], w_fp[12], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_1( w_fp[2], w_fp[12], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 52 - FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 52 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1059,7 +1059,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 53 - FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 53 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1075,7 +1075,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 54 - FFV1_0( w_fp[16], w_fp[14], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[14], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 54 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1089,7 +1089,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 55 - FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 55 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1105,7 +1105,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 56 - FFV1_0( w_fp[22], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 56 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1121,7 +1121,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 57 - VVV1_0( w_fp[12], w_fp[18], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[18], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 57 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1141,7 +1141,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 58 - VVVV1_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1150,7 +1150,7 @@ namespace mg5amcCpu jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1159,7 +1159,7 @@ namespace mg5amcCpu jamp_sv[13] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[12], w_fp[1], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1172,10 +1172,10 @@ namespace mg5amcCpu // *** DIAGRAM 59 OF 123 *** // Wavefunction(s) for diagram number 59 - VVV1P0_1( w_fp[12], w_fp[1], COUPs[0], 0., 0., w_fp[21] ); + VVV1P0_1( w_fp[12], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 59 - VVV1_0( w_fp[7], w_fp[5], w_fp[21], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[21], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 59 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1195,7 +1195,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 60 - VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 60 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1215,7 +1215,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 61 - FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 61 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1231,7 +1231,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 62 - FFV1_0( w_fp[22], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 62 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1245,7 +1245,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 63 - FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 63 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1261,7 +1261,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 64 - FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 64 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1272,11 +1272,11 @@ namespace mg5amcCpu // *** DIAGRAM 65 OF 123 *** // Wavefunction(s) for diagram number 65 - VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 0., 0., w_fp[20] ); - FFV1_2( w_fp[3], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + VVV1P0_1( w_fp[0], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[20] ); + FFV1_2( w_fp[3], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 65 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 65 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1287,10 +1287,10 @@ namespace mg5amcCpu // *** DIAGRAM 66 OF 123 *** // Wavefunction(s) for diagram number 66 - VVV1P0_1( w_fp[20], w_fp[4], COUPs[0], 0., 0., w_fp[22] ); + VVV1P0_1( w_fp[20], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 66 - FFV1_0( w_fp[3], w_fp[9], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 66 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1306,7 +1306,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 67 - FFV1_0( w_fp[15], w_fp[9], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[9], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 67 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1317,10 +1317,10 @@ namespace mg5amcCpu // *** DIAGRAM 68 OF 123 *** // Wavefunction(s) for diagram number 68 - FFV1_1( w_fp[2], w_fp[20], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[2], w_fp[20], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 68 - FFV1_0( w_fp[16], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 68 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1334,7 +1334,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 69 - FFV1_0( w_fp[16], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 69 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1350,7 +1350,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 70 - FFV1_0( w_fp[16], w_fp[11], w_fp[20], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[11], w_fp[20], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 70 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1364,7 +1364,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 71 - FFV1_0( w_fp[3], w_fp[23], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 71 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1380,7 +1380,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 72 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 72 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1396,7 +1396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 73 - VVV1_0( w_fp[20], w_fp[6], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[20], w_fp[6], w_fp[7], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 73 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1416,7 +1416,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 74 - VVVV1_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1425,7 +1425,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1434,7 +1434,7 @@ namespace mg5amcCpu jamp_sv[15] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[20], w_fp[1], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[5] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1447,10 +1447,10 @@ namespace mg5amcCpu // *** DIAGRAM 75 OF 123 *** // Wavefunction(s) for diagram number 75 - VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 0., 0., w_fp[12] ); + VVV1P0_1( w_fp[20], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[12] ); // Amplitude(s) for diagram number 75 - VVV1_0( w_fp[7], w_fp[4], w_fp[12], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[12], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 75 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1470,7 +1470,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 76 - VVV1_0( w_fp[1], w_fp[7], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 76 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1490,7 +1490,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 77 - FFV1_0( w_fp[3], w_fp[11], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 77 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1506,7 +1506,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 78 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 78 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1520,7 +1520,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 79 - FFV1_0( w_fp[15], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 79 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1536,7 +1536,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 80 - FFV1_0( w_fp[15], w_fp[23], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[23], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 80 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1547,10 +1547,10 @@ namespace mg5amcCpu // *** DIAGRAM 81 OF 123 *** // Wavefunction(s) for diagram number 81 - FFV1_1( w_fp[9], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[23] ); + FFV1_1( w_fp[9], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[23] ); // Amplitude(s) for diagram number 81 - FFV1_0( w_fp[15], w_fp[23], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[23], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 81 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1560,10 +1560,10 @@ namespace mg5amcCpu // *** DIAGRAM 82 OF 123 *** // Wavefunction(s) for diagram number 82 - FFV1_2( w_fp[15], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[12] ); + FFV1_2( w_fp[15], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[12] ); // Amplitude(s) for diagram number 82 - FFV1_0( w_fp[12], w_fp[9], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 82 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1576,7 +1576,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 83 - FFV1_0( w_fp[13], w_fp[23], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[23], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 83 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1586,10 +1586,10 @@ namespace mg5amcCpu // *** DIAGRAM 84 OF 123 *** // Wavefunction(s) for diagram number 84 - FFV1_2( w_fp[13], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[21] ); + FFV1_2( w_fp[13], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[21] ); // Amplitude(s) for diagram number 84 - FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[9], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 84 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1602,7 +1602,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 85 - FFV1_0( w_fp[3], w_fp[23], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[23], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 85 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1613,10 +1613,10 @@ namespace mg5amcCpu // *** DIAGRAM 86 OF 123 *** // Wavefunction(s) for diagram number 86 - VVV1P0_1( w_fp[0], w_fp[10], COUPs[0], 0., 0., w_fp[23] ); + VVV1P0_1( w_fp[0], w_fp[10], COUPs[0], 1.0, 0., 0., w_fp[23] ); // Amplitude(s) for diagram number 86 - FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 86 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1629,10 +1629,10 @@ namespace mg5amcCpu // *** DIAGRAM 87 OF 123 *** // Wavefunction(s) for diagram number 87 - FFV1_2( w_fp[16], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[22] ); + FFV1_2( w_fp[16], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[22] ); // Amplitude(s) for diagram number 87 - FFV1_0( w_fp[22], w_fp[11], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[11], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 87 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1642,10 +1642,10 @@ namespace mg5amcCpu // *** DIAGRAM 88 OF 123 *** // Wavefunction(s) for diagram number 88 - FFV1_1( w_fp[11], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[20] ); + FFV1_1( w_fp[11], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[20] ); // Amplitude(s) for diagram number 88 - FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[20], w_fp[5], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 88 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1658,7 +1658,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 89 - FFV1_0( w_fp[22], w_fp[14], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[14], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 89 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1668,10 +1668,10 @@ namespace mg5amcCpu // *** DIAGRAM 90 OF 123 *** // Wavefunction(s) for diagram number 90 - FFV1_1( w_fp[14], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[24] ); + FFV1_1( w_fp[14], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[24] ); // Amplitude(s) for diagram number 90 - FFV1_0( w_fp[16], w_fp[24], w_fp[4], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[24], w_fp[4], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 90 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1684,7 +1684,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 91 - FFV1_0( w_fp[22], w_fp[2], w_fp[10], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[22], w_fp[2], w_fp[10], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 91 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1698,7 +1698,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 92 - FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[23], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 92 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1714,7 +1714,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 93 - VVVV1_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1723,7 +1723,7 @@ namespace mg5amcCpu jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1732,7 +1732,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[6], w_fp[7], w_fp[5], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1745,10 +1745,10 @@ namespace mg5amcCpu // *** DIAGRAM 94 OF 123 *** // Wavefunction(s) for diagram number 94 - VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 0., 0., w_fp[22] ); + VVV1P0_1( w_fp[0], w_fp[6], COUPs[0], 1.0, 0., 0., w_fp[22] ); // Amplitude(s) for diagram number 94 - VVV1_0( w_fp[7], w_fp[5], w_fp[22], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[5], w_fp[22], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 94 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1765,10 +1765,10 @@ namespace mg5amcCpu // *** DIAGRAM 95 OF 123 *** // Wavefunction(s) for diagram number 95 - VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 0., 0., w_fp[25] ); + VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 1.0, 0., 0., w_fp[25] ); // Amplitude(s) for diagram number 95 - VVV1_0( w_fp[6], w_fp[5], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[5], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 95 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1788,7 +1788,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 96 - FFV1_0( w_fp[3], w_fp[14], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 96 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1804,7 +1804,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 97 - FFV1_0( w_fp[3], w_fp[24], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[24], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 97 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1818,7 +1818,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 98 - FFV1_0( w_fp[13], w_fp[2], w_fp[22], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[22], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 98 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1834,7 +1834,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 99 - FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 99 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1848,7 +1848,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 100 - VVVV1_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1857,7 +1857,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1866,7 +1866,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[18], w_fp[7], w_fp[4], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] += cxtype( 0, 1 ) * amp_sv[0]; @@ -1879,10 +1879,10 @@ namespace mg5amcCpu // *** DIAGRAM 101 OF 123 *** // Wavefunction(s) for diagram number 101 - VVV1P0_1( w_fp[0], w_fp[18], COUPs[0], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[18], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 101 - VVV1_0( w_fp[7], w_fp[4], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[7], w_fp[4], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 101 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1902,7 +1902,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 102 - VVV1_0( w_fp[18], w_fp[4], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[18], w_fp[4], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 102 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1922,7 +1922,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 103 - FFV1_0( w_fp[3], w_fp[11], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 103 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1938,7 +1938,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 104 - FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[20], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 104 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1952,7 +1952,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 105 - FFV1_0( w_fp[15], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 105 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1968,7 +1968,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 106 - FFV1_0( w_fp[12], w_fp[2], w_fp[18], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[2], w_fp[18], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 106 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1982,7 +1982,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 107 - VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -1991,7 +1991,7 @@ namespace mg5amcCpu jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2000,7 +2000,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[10], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2016,7 +2016,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 108 - VVV1_0( w_fp[1], w_fp[10], w_fp[25], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[10], w_fp[25], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 108 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2036,7 +2036,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 109 - VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[23], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 109 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2056,7 +2056,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 110 - FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[20], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 110 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2069,7 +2069,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 111 - FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[21], w_fp[11], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 111 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2082,7 +2082,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 112 - FFV1_0( w_fp[15], w_fp[24], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[24], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 112 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2095,7 +2095,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 113 - FFV1_0( w_fp[12], w_fp[14], w_fp[1], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[14], w_fp[1], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 113 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -2105,12 +2105,12 @@ namespace mg5amcCpu // *** DIAGRAM 114 OF 123 *** // Wavefunction(s) for diagram number 114 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[12] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[24] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 0., 0., w_fp[21] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[12] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[4], COUPs[2], 1.0, 0., 0., w_fp[21] ); // Amplitude(s) for diagram number 114 - VVV1_0( w_fp[12], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[12], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2119,7 +2119,7 @@ namespace mg5amcCpu jamp_sv[19] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[24], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2128,7 +2128,7 @@ namespace mg5amcCpu jamp_sv[20] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[21], w_fp[7], w_fp[5], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[7], w_fp[5], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2144,17 +2144,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 115 - FFV1_0( w_fp[3], w_fp[14], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[12], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] += amp_sv[0]; jamp_sv[19] -= amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[23] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[14], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[19] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[21] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[14], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[18] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; jamp_sv[22] += amp_sv[0]; @@ -2166,17 +2166,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 116 - FFV1_0( w_fp[13], w_fp[2], w_fp[12], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[12], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] += amp_sv[0]; jamp_sv[2] -= amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; - FFV1_0( w_fp[13], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[2] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[8] -= amp_sv[0]; jamp_sv[12] += amp_sv[0]; - FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[0] -= amp_sv[0]; jamp_sv[6] += amp_sv[0]; jamp_sv[12] += amp_sv[0]; @@ -2185,12 +2185,12 @@ namespace mg5amcCpu // *** DIAGRAM 117 OF 123 *** // Wavefunction(s) for diagram number 117 - VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[21] ); - VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[13] ); - VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); + VVVV1P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[21] ); + VVVV3P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[13] ); + VVVV4P0_1( w_fp[0], w_fp[1], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); // Amplitude(s) for diagram number 117 - VVV1_0( w_fp[21], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[21], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2199,7 +2199,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[20] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[13], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[13], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[10] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2208,7 +2208,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[18] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[24], w_fp[7], w_fp[4], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[7], w_fp[4], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[12] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2224,17 +2224,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 118 - FFV1_0( w_fp[3], w_fp[11], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] += amp_sv[0]; jamp_sv[13] -= amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[17] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[11], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[13] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[15] -= amp_sv[0]; jamp_sv[16] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[11], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[12] -= amp_sv[0]; jamp_sv[14] += amp_sv[0]; jamp_sv[16] += amp_sv[0]; @@ -2246,17 +2246,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 119 - FFV1_0( w_fp[15], w_fp[2], w_fp[21], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[21], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] += amp_sv[0]; jamp_sv[4] -= amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[20] += amp_sv[0]; - FFV1_0( w_fp[15], w_fp[2], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[4] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[10] -= amp_sv[0]; jamp_sv[18] += amp_sv[0]; - FFV1_0( w_fp[15], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[15], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[1] -= amp_sv[0]; jamp_sv[7] += amp_sv[0]; jamp_sv[18] += amp_sv[0]; @@ -2265,22 +2265,22 @@ namespace mg5amcCpu // *** DIAGRAM 120 OF 123 *** // Wavefunction(s) for diagram number 120 - VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[24] ); - VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[15] ); - VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 0., 0., w_fp[13] ); + VVVV1P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[24] ); + VVVV3P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[15] ); + VVVV4P0_1( w_fp[0], w_fp[4], w_fp[5], COUPs[2], 1.0, 0., 0., w_fp[13] ); // Amplitude(s) for diagram number 120 - FFV1_0( w_fp[3], w_fp[9], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] += amp_sv[0]; jamp_sv[7] -= amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[11] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[15], COUPs[1], 1.0, &_fp[0] ); jamp_sv[7] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[9] -= amp_sv[0]; jamp_sv[10] += amp_sv[0]; - FFV1_0( w_fp[3], w_fp[9], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[6] -= amp_sv[0]; jamp_sv[8] += amp_sv[0]; jamp_sv[10] += amp_sv[0]; @@ -2292,17 +2292,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 121 - FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[24], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] += amp_sv[0]; jamp_sv[5] -= amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[22] += amp_sv[0]; - FFV1_0( w_fp[16], w_fp[2], w_fp[15], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[15], COUPs[1], 1.0, &_fp[0] ); jamp_sv[5] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[16] -= amp_sv[0]; jamp_sv[19] += amp_sv[0]; - FFV1_0( w_fp[16], w_fp[2], w_fp[13], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[16], w_fp[2], w_fp[13], COUPs[1], 1.0, &_fp[0] ); jamp_sv[3] -= amp_sv[0]; jamp_sv[13] += amp_sv[0]; jamp_sv[19] += amp_sv[0]; @@ -2314,7 +2314,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 122 - VVV1_0( w_fp[24], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[24], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2323,7 +2323,7 @@ namespace mg5amcCpu jamp_sv[11] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[22] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[15], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[15], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[5] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[7] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2332,7 +2332,7 @@ namespace mg5amcCpu jamp_sv[13] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[16] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[19] -= cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[13], w_fp[1], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[13], w_fp[1], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[6] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[8] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2348,7 +2348,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 123 - VVV1_0( w_fp[0], w_fp[17], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[17], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2357,7 +2357,7 @@ namespace mg5amcCpu jamp_sv[11] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[23] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[0], w_fp[19], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[19], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[1] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[3] += cxtype( 0, 1 ) * amp_sv[0]; @@ -2366,7 +2366,7 @@ namespace mg5amcCpu jamp_sv[15] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[17] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[21] += cxtype( 0, 1 ) * amp_sv[0]; - VVV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[0], 1.0, &_fp[0] ); jamp_sv[0] += cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[2] -= cxtype( 0, 1 ) * amp_sv[0]; jamp_sv[4] -= cxtype( 0, 1 ) * amp_sv[0]; @@ -2966,8 +2966,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/auto_dsig1.f index 3f0b6e29c5..4d2e1b4f8c 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/auto_dsig1.f @@ -39,6 +39,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -126,11 +127,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/matrix1.f index 2f7edac864..89b2ef87b4 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxgg/matrix1.f @@ -391,7 +391,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(163) + COMPLEX*16 ZTEMP, TMP_JAMP(155) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -1218,362 +1218,318 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(84) + AMP(86) ! used 8 times TMP_JAMP(2) = AMP(81) - AMP(83) ! used 8 times TMP_JAMP(1) = AMP(82) + AMP(85) ! used 8 times - TMP_JAMP(30) = TMP_JAMP(11) + AMP(121) ! used 8 times - TMP_JAMP(29) = TMP_JAMP(12) - AMP(132) ! used 8 times + TMP_JAMP(30) = TMP_JAMP(15) - AMP(157) ! used 8 times + TMP_JAMP(29) = TMP_JAMP(14) + AMP(159) ! used 8 times TMP_JAMP(28) = TMP_JAMP(13) + AMP(130) ! used 8 times - TMP_JAMP(27) = TMP_JAMP(14) + AMP(159) ! used 8 times - TMP_JAMP(26) = TMP_JAMP(15) - AMP(157) ! used 8 times - TMP_JAMP(25) = TMP_JAMP(8) - AMP(131) ! used 8 times + TMP_JAMP(27) = TMP_JAMP(12) - AMP(132) ! used 8 times + TMP_JAMP(26) = TMP_JAMP(11) + AMP(121) ! used 8 times + TMP_JAMP(25) = TMP_JAMP(10) + AMP(154) ! used 8 times TMP_JAMP(24) = TMP_JAMP(9) - AMP(156) ! used 8 times - TMP_JAMP(23) = TMP_JAMP(10) + AMP(154) ! used 8 times - TMP_JAMP(22) = TMP_JAMP(6) + AMP(114) ! used 8 times - TMP_JAMP(21) = TMP_JAMP(7) + AMP(158) ! used 8 times - TMP_JAMP(20) = TMP_JAMP(4) - AMP(141) ! used 8 times - TMP_JAMP(19) = TMP_JAMP(5) + AMP(139) ! used 8 times - TMP_JAMP(18) = TMP_JAMP(2) + AMP(105) ! used 8 times - TMP_JAMP(17) = TMP_JAMP(3) - AMP(155) ! used 8 times + TMP_JAMP(23) = TMP_JAMP(8) - AMP(131) ! used 8 times + TMP_JAMP(22) = TMP_JAMP(7) + AMP(158) ! used 8 times + TMP_JAMP(21) = TMP_JAMP(6) + AMP(114) ! used 8 times + TMP_JAMP(20) = TMP_JAMP(5) + AMP(139) ! used 8 times + TMP_JAMP(19) = TMP_JAMP(4) - AMP(141) ! used 8 times + TMP_JAMP(18) = TMP_JAMP(3) - AMP(155) ! used 8 times + TMP_JAMP(17) = TMP_JAMP(2) + AMP(105) ! used 8 times TMP_JAMP(16) = TMP_JAMP(1) - AMP(140) ! used 8 times - TMP_JAMP(90) = AMP(108) + AMP(133) ! used 4 times - TMP_JAMP(89) = AMP(51) + AMP(52) ! used 4 times - TMP_JAMP(88) = AMP(40) - AMP(54) ! used 4 times - TMP_JAMP(87) = AMP(11) - AMP(135) ! used 4 times - TMP_JAMP(86) = TMP_JAMP(26) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(51) ! used 4 times - TMP_JAMP(85) = TMP_JAMP(28) + TMP_JAMP(27) ! used 4 times - TMP_JAMP(84) = TMP_JAMP(29) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(11) ! used 4 times - TMP_JAMP(83) = TMP_JAMP(30) + TMP_JAMP(29) ! used 4 times - TMP_JAMP(82) = AMP(102) + AMP(151) ! used 4 times - TMP_JAMP(81) = AMP(69) - AMP(134) ! used 4 times - TMP_JAMP(80) = AMP(59) - AMP(153) ! used 4 times - TMP_JAMP(79) = TMP_JAMP(23) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(102) ! used 4 times - TMP_JAMP(78) = TMP_JAMP(24) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(59) ! used 4 times - TMP_JAMP(77) = TMP_JAMP(25) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(69) ! used 4 times - TMP_JAMP(76) = TMP_JAMP(29) + TMP_JAMP(25) ! used 4 times - TMP_JAMP(75) = TMP_JAMP(30) - TMP_JAMP(23) ! used 4 times - TMP_JAMP(74) = AMP(43) - AMP(53) ! used 4 times - TMP_JAMP(73) = TMP_JAMP(21) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(43) ! used 4 times - TMP_JAMP(72) = TMP_JAMP(22) + ((0.000000000000000D+00, + TMP_JAMP(80) = TMP_JAMP(30) + TMP_JAMP(29) ! used 4 times + TMP_JAMP(79) = TMP_JAMP(30) - TMP_JAMP(22) ! used 4 times + TMP_JAMP(78) = TMP_JAMP(29) + TMP_JAMP(22) ! used 4 times + TMP_JAMP(77) = TMP_JAMP(28) + TMP_JAMP(27) ! used 4 times + TMP_JAMP(76) = TMP_JAMP(28) - TMP_JAMP(23) ! used 4 times + TMP_JAMP(75) = TMP_JAMP(27) + TMP_JAMP(23) ! used 4 times + TMP_JAMP(74) = TMP_JAMP(27) + TMP_JAMP(19) ! used 4 times + TMP_JAMP(73) = TMP_JAMP(26) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(18) ! used 4 times + TMP_JAMP(72) = TMP_JAMP(26) - TMP_JAMP(25) ! used 4 times + TMP_JAMP(71) = TMP_JAMP(26) - TMP_JAMP(19) ! used 4 times + TMP_JAMP(70) = TMP_JAMP(26) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(17) ! used 4 times + TMP_JAMP(69) = TMP_JAMP(25) + TMP_JAMP(24) ! used 4 times + TMP_JAMP(68) = TMP_JAMP(25) - TMP_JAMP(18) ! used 4 times + TMP_JAMP(67) = TMP_JAMP(24) - TMP_JAMP(23) ! used 4 times + TMP_JAMP(66) = TMP_JAMP(24) + TMP_JAMP(18) ! used 4 times + TMP_JAMP(65) = TMP_JAMP(22) + TMP_JAMP(20) ! used 4 times + TMP_JAMP(64) = TMP_JAMP(21) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(62) ! used 4 times - TMP_JAMP(71) = TMP_JAMP(22) + TMP_JAMP(21) ! used 4 times - TMP_JAMP(70) = TMP_JAMP(27) + TMP_JAMP(21) ! used 4 times - TMP_JAMP(69) = TMP_JAMP(28) - TMP_JAMP(25) ! used 4 times - TMP_JAMP(68) = AMP(119) + AMP(145) ! used 4 times - TMP_JAMP(67) = AMP(14) - AMP(147) ! used 4 times - TMP_JAMP(66) = TMP_JAMP(20) + TMP_JAMP(19) ! used 4 times - TMP_JAMP(65) = TMP_JAMP(22) - TMP_JAMP(19) ! used 4 times - TMP_JAMP(64) = TMP_JAMP(29) + TMP_JAMP(20) ! used 4 times - TMP_JAMP(63) = AMP(77) - AMP(152) ! used 4 times - TMP_JAMP(62) = TMP_JAMP(17) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(77) ! used 4 times - TMP_JAMP(61) = TMP_JAMP(18) + ((-0.000000000000000D+00 + TMP_JAMP(63) = TMP_JAMP(21) - TMP_JAMP(20) ! used 4 times + TMP_JAMP(62) = TMP_JAMP(21) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(61) ! used 4 times + TMP_JAMP(61) = TMP_JAMP(20) + TMP_JAMP(19) ! used 4 times + TMP_JAMP(60) = TMP_JAMP(20) - TMP_JAMP(16) ! used 4 times + TMP_JAMP(59) = TMP_JAMP(19) + TMP_JAMP(16) ! used 4 times + TMP_JAMP(58) = TMP_JAMP(18) - TMP_JAMP(16) ! used 4 times + TMP_JAMP(57) = TMP_JAMP(17) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(79) ! used 4 times - TMP_JAMP(60) = TMP_JAMP(24) + TMP_JAMP(17) ! used 4 times - TMP_JAMP(59) = TMP_JAMP(28) - TMP_JAMP(18) ! used 4 times - TMP_JAMP(58) = AMP(89) - AMP(146) ! used 4 times - TMP_JAMP(57) = TMP_JAMP(20) + TMP_JAMP(16) ! used 4 times - TMP_JAMP(56) = AMP(117) + AMP(142) ! used 4 times - TMP_JAMP(55) = AMP(8) - AMP(144) ! used 4 times - TMP_JAMP(54) = TMP_JAMP(19) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(117) ! used 4 times - TMP_JAMP(53) = TMP_JAMP(20) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(8) ! used 4 times - TMP_JAMP(52) = TMP_JAMP(26) - TMP_JAMP(21) ! used 4 times - TMP_JAMP(51) = TMP_JAMP(30) - TMP_JAMP(20) ! used 4 times - TMP_JAMP(50) = AMP(87) - AMP(143) ! used 4 times - TMP_JAMP(49) = TMP_JAMP(16) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(87) ! used 4 times - TMP_JAMP(48) = TMP_JAMP(23) - TMP_JAMP(17) ! used 4 times - TMP_JAMP(47) = TMP_JAMP(18) + ((0.000000000000000D+00, + TMP_JAMP(56) = TMP_JAMP(17) - TMP_JAMP(16) ! used 4 times + TMP_JAMP(55) = TMP_JAMP(17) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(80) ! used 4 times - TMP_JAMP(46) = TMP_JAMP(19) - TMP_JAMP(16) ! used 4 times - TMP_JAMP(45) = TMP_JAMP(27) + TMP_JAMP(18) ! used 4 times - TMP_JAMP(44) = TMP_JAMP(28) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(110) ! used 4 times - TMP_JAMP(43) = TMP_JAMP(29) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(16) ! used 4 times - TMP_JAMP(42) = TMP_JAMP(22) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(61) ! used 4 times - TMP_JAMP(41) = TMP_JAMP(24) - TMP_JAMP(22) ! used 4 times - TMP_JAMP(40) = TMP_JAMP(25) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(71) ! used 4 times - TMP_JAMP(39) = AMP(96) + AMP(148) ! used 4 times - TMP_JAMP(38) = TMP_JAMP(23) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(96) ! used 4 times - TMP_JAMP(37) = TMP_JAMP(24) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(56) ! used 4 times - TMP_JAMP(36) = TMP_JAMP(26) + TMP_JAMP(23) ! used 4 times - TMP_JAMP(35) = TMP_JAMP(17) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(74) ! used 4 times - TMP_JAMP(34) = TMP_JAMP(30) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(17) ! used 4 times - TMP_JAMP(33) = TMP_JAMP(26) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(33) ! used 4 times - TMP_JAMP(32) = TMP_JAMP(27) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(22) ! used 4 times - TMP_JAMP(31) = TMP_JAMP(21) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(25) ! used 4 times - TMP_JAMP(98) = TMP_JAMP(43) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(138) ! used 4 times - TMP_JAMP(97) = TMP_JAMP(44) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(136) ! used 4 times - TMP_JAMP(96) = TMP_JAMP(40) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(137) ! used 4 times - TMP_JAMP(95) = TMP_JAMP(37) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(150) ! used 4 times - TMP_JAMP(94) = TMP_JAMP(35) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(149) ! used 4 times - TMP_JAMP(93) = TMP_JAMP(32) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(36) ! used 4 times - TMP_JAMP(92) = TMP_JAMP(33) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(34) ! used 4 times - TMP_JAMP(91) = TMP_JAMP(31) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(35) ! used 4 times - TMP_JAMP(151) = AMP(18) + ((0.000000000000000D+00, + TMP_JAMP(54) = AMP(108) + AMP(133) ! used 4 times + TMP_JAMP(53) = AMP(51) + AMP(52) ! used 4 times + TMP_JAMP(52) = AMP(40) - AMP(54) ! used 4 times + TMP_JAMP(51) = AMP(11) - AMP(135) ! used 4 times + TMP_JAMP(50) = AMP(102) + AMP(151) ! used 4 times + TMP_JAMP(49) = AMP(69) - AMP(134) ! used 4 times + TMP_JAMP(48) = AMP(59) - AMP(153) ! used 4 times + TMP_JAMP(47) = AMP(43) - AMP(53) ! used 4 times + TMP_JAMP(46) = AMP(119) + AMP(145) ! used 4 times + TMP_JAMP(45) = AMP(14) - AMP(147) ! used 4 times + TMP_JAMP(44) = AMP(77) - AMP(152) ! used 4 times + TMP_JAMP(43) = AMP(89) - AMP(146) ! used 4 times + TMP_JAMP(42) = AMP(117) + AMP(142) ! used 4 times + TMP_JAMP(41) = AMP(8) - AMP(144) ! used 4 times + TMP_JAMP(40) = AMP(87) - AMP(143) ! used 4 times + TMP_JAMP(39) = AMP(110) + AMP(136) ! used 4 times + TMP_JAMP(38) = AMP(16) - AMP(138) ! used 4 times + TMP_JAMP(37) = AMP(71) - AMP(137) ! used 4 times + TMP_JAMP(36) = AMP(96) + AMP(148) ! used 4 times + TMP_JAMP(35) = AMP(56) - AMP(150) ! used 4 times + TMP_JAMP(34) = AMP(74) - AMP(149) ! used 4 times + TMP_JAMP(33) = AMP(33) + AMP(34) ! used 4 times + TMP_JAMP(32) = AMP(22) - AMP(36) ! used 4 times + TMP_JAMP(31) = AMP(25) - AMP(35) ! used 4 times + TMP_JAMP(142) = TMP_JAMP(80) + TMP_JAMP(77) ! used 2 times + TMP_JAMP(141) = TMP_JAMP(80) + TMP_JAMP(68) ! used 2 times + TMP_JAMP(140) = TMP_JAMP(79) - TMP_JAMP(61) ! used 2 times + TMP_JAMP(139) = TMP_JAMP(79) + TMP_JAMP(69) ! used 2 times + TMP_JAMP(138) = TMP_JAMP(78) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(47) ! used 2 times + TMP_JAMP(137) = TMP_JAMP(77) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(39) ! used 2 times + TMP_JAMP(136) = TMP_JAMP(76) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(54) ! used 2 times + TMP_JAMP(135) = TMP_JAMP(76) + TMP_JAMP(66) ! used 2 times + TMP_JAMP(134) = TMP_JAMP(76) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(39) ! used 2 times + TMP_JAMP(133) = TMP_JAMP(75) + TMP_JAMP(61) ! used 2 times + TMP_JAMP(132) = TMP_JAMP(73) + AMP(50) ! used 2 times + TMP_JAMP(131) = TMP_JAMP(70) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(36) ! used 2 times + TMP_JAMP(130) = TMP_JAMP(67) - TMP_JAMP(27) ! used 2 times + TMP_JAMP(129) = TMP_JAMP(61) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(46) ! used 2 times + TMP_JAMP(128) = TMP_JAMP(61) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(41) ! used 2 times + TMP_JAMP(127) = TMP_JAMP(58) - TMP_JAMP(25) ! used 2 times + TMP_JAMP(126) = TMP_JAMP(58) + TMP_JAMP(24) ! used 2 times + TMP_JAMP(125) = TMP_JAMP(58) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(43) ! used 2 times + TMP_JAMP(124) = TMP_JAMP(55) + AMP(111) ! used 2 times + TMP_JAMP(123) = TMP_JAMP(54) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(109) ! used 2 times + TMP_JAMP(122) = TMP_JAMP(53) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(50) ! used 2 times - TMP_JAMP(150) = TMP_JAMP(87) + ((0.000000000000000D+00, + TMP_JAMP(121) = TMP_JAMP(53) - TMP_JAMP(47) ! used 2 times + TMP_JAMP(120) = TMP_JAMP(52) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(42) ! used 2 times + TMP_JAMP(119) = TMP_JAMP(52) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(41) ! used 2 times + TMP_JAMP(118) = TMP_JAMP(51) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(10) ! used 2 times - TMP_JAMP(149) = TMP_JAMP(90) + TMP_JAMP(88) ! used 2 times - TMP_JAMP(148) = TMP_JAMP(82) - AMP(18) ! used 2 times - TMP_JAMP(147) = TMP_JAMP(74) + ((-0.000000000000000D+00 + TMP_JAMP(117) = TMP_JAMP(51) + TMP_JAMP(49) ! used 2 times + TMP_JAMP(116) = TMP_JAMP(51) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(12) ! used 2 times + TMP_JAMP(115) = TMP_JAMP(50) - TMP_JAMP(44) ! used 2 times + TMP_JAMP(114) = TMP_JAMP(49) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(70) ! used 2 times + TMP_JAMP(113) = TMP_JAMP(48) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(60) ! used 2 times + TMP_JAMP(112) = TMP_JAMP(48) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(58) ! used 2 times + TMP_JAMP(111) = TMP_JAMP(47) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(44) ! used 2 times - TMP_JAMP(146) = TMP_JAMP(68) + TMP_JAMP(67) ! used 2 times - TMP_JAMP(145) = TMP_JAMP(77) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(134) ! used 2 times - TMP_JAMP(144) = AMP(79) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(109) ! used 2 times - TMP_JAMP(143) = TMP_JAMP(63) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(76) ! used 2 times - TMP_JAMP(142) = TMP_JAMP(90) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(59) ! used 2 times - TMP_JAMP(141) = TMP_JAMP(67) + TMP_JAMP(58) ! used 2 times - TMP_JAMP(140) = AMP(7) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(18) ! used 2 times - TMP_JAMP(139) = TMP_JAMP(54) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(142) ! used 2 times - TMP_JAMP(138) = TMP_JAMP(55) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(51) ! used 2 times - TMP_JAMP(137) = TMP_JAMP(89) - TMP_JAMP(74) ! used 2 times - TMP_JAMP(136) = TMP_JAMP(49) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(143) ! used 2 times - TMP_JAMP(135) = TMP_JAMP(82) - TMP_JAMP(63) ! used 2 times - TMP_JAMP(134) = AMP(41) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(80) ! used 2 times - TMP_JAMP(133) = TMP_JAMP(56) - TMP_JAMP(50) ! used 2 times - TMP_JAMP(132) = TMP_JAMP(88) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(45) ! used 2 times - TMP_JAMP(131) = TMP_JAMP(47) + AMP(111) ! used 2 times - TMP_JAMP(130) = TMP_JAMP(53) - AMP(9) ! used 2 times - TMP_JAMP(129) = TMP_JAMP(98) + TMP_JAMP(97) ! used 2 times - TMP_JAMP(128) = AMP(58) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(61) ! used 2 times - TMP_JAMP(127) = TMP_JAMP(80) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(41) ! used 2 times - TMP_JAMP(126) = TMP_JAMP(42) - AMP(72) ! used 2 times - TMP_JAMP(125) = TMP_JAMP(96) - TMP_JAMP(42) ! used 2 times - TMP_JAMP(124) = TMP_JAMP(98) + TMP_JAMP(96) ! used 2 times - TMP_JAMP(123) = TMP_JAMP(36) - AMP(39) ! used 2 times - TMP_JAMP(122) = TMP_JAMP(89) - TMP_JAMP(39) ! used 2 times - TMP_JAMP(121) = TMP_JAMP(95) - AMP(55) ! used 2 times - TMP_JAMP(120) = TMP_JAMP(58) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(46) ! used 2 times - TMP_JAMP(119) = TMP_JAMP(68) - TMP_JAMP(58) ! used 2 times - TMP_JAMP(118) = TMP_JAMP(94) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(58) ! used 2 times - TMP_JAMP(117) = TMP_JAMP(95) + TMP_JAMP(94) ! used 2 times - TMP_JAMP(116) = TMP_JAMP(94) - AMP(73) ! used 2 times - TMP_JAMP(115) = TMP_JAMP(95) + AMP(57) ! used 2 times - TMP_JAMP(114) = TMP_JAMP(96) - TMP_JAMP(95) ! used 2 times - TMP_JAMP(113) = TMP_JAMP(97) - TMP_JAMP(96) ! used 2 times - TMP_JAMP(112) = TMP_JAMP(38) + AMP(95) ! used 2 times - TMP_JAMP(111) = TMP_JAMP(67) + ((-0.000000000000000D+00 + TMP_JAMP(110) = TMP_JAMP(46) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(120) ! used 2 times + TMP_JAMP(109) = TMP_JAMP(46) - TMP_JAMP(43) ! used 2 times + TMP_JAMP(108) = TMP_JAMP(45) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(12) ! used 2 times + TMP_JAMP(107) = TMP_JAMP(45) + TMP_JAMP(43) ! used 2 times + TMP_JAMP(106) = TMP_JAMP(45) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(13) ! used 2 times - TMP_JAMP(110) = TMP_JAMP(67) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(34) ! used 2 times - TMP_JAMP(109) = TMP_JAMP(98) + AMP(15) ! used 2 times - TMP_JAMP(108) = TMP_JAMP(98) + TMP_JAMP(34) ! used 2 times - TMP_JAMP(107) = TMP_JAMP(61) - AMP(23) ! used 2 times - TMP_JAMP(106) = TMP_JAMP(93) + TMP_JAMP(92) ! used 2 times - TMP_JAMP(105) = TMP_JAMP(68) + ((-0.000000000000000D+00 + TMP_JAMP(105) = TMP_JAMP(44) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(76) ! used 2 times + TMP_JAMP(104) = TMP_JAMP(42) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(45) ! used 2 times + TMP_JAMP(103) = TMP_JAMP(42) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(118) ! used 2 times + TMP_JAMP(102) = TMP_JAMP(41) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(7) ! used 2 times + TMP_JAMP(101) = TMP_JAMP(40) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(78) ! used 2 times + TMP_JAMP(100) = TMP_JAMP(40) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(88) ! used 2 times + TMP_JAMP(99) = TMP_JAMP(39) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(111) ! used 2 times + TMP_JAMP(98) = TMP_JAMP(39) - TMP_JAMP(37) ! used 2 times + TMP_JAMP(97) = TMP_JAMP(38) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(9) ! used 2 times + TMP_JAMP(96) = TMP_JAMP(38) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(15) ! used 2 times + TMP_JAMP(95) = TMP_JAMP(37) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(72) ! used 2 times + TMP_JAMP(94) = TMP_JAMP(36) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(39) ! used 2 times + TMP_JAMP(93) = TMP_JAMP(35) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(55) ! used 2 times + TMP_JAMP(92) = TMP_JAMP(35) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(57) ! used 2 times + TMP_JAMP(91) = TMP_JAMP(34) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(75) ! used 2 times + TMP_JAMP(90) = TMP_JAMP(34) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(73) ! used 2 times + TMP_JAMP(89) = TMP_JAMP(33) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(21) ! used 2 times + TMP_JAMP(88) = TMP_JAMP(33) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(32) ! used 2 times + TMP_JAMP(87) = TMP_JAMP(32) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(23) ! used 2 times + TMP_JAMP(86) = TMP_JAMP(32) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(24) ! used 2 times + TMP_JAMP(85) = TMP_JAMP(31) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(27) ! used 2 times - TMP_JAMP(104) = TMP_JAMP(91) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(68) ! used 2 times - TMP_JAMP(103) = TMP_JAMP(93) + TMP_JAMP(91) ! used 2 times - TMP_JAMP(102) = TMP_JAMP(91) - AMP(26) ! used 2 times - TMP_JAMP(101) = TMP_JAMP(92) - TMP_JAMP(91) ! used 2 times - TMP_JAMP(100) = TMP_JAMP(97) + TMP_JAMP(93) ! used 2 times - TMP_JAMP(99) = TMP_JAMP(92) + TMP_JAMP(34) ! used 2 times - TMP_JAMP(163) = TMP_JAMP(149) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(42) ! used 2 times - TMP_JAMP(162) = TMP_JAMP(144) - TMP_JAMP(142) ! used 2 times - TMP_JAMP(161) = TMP_JAMP(140) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(138) ! used 2 times - TMP_JAMP(160) = TMP_JAMP(135) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(48) ! used 2 times - TMP_JAMP(159) = TMP_JAMP(133) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(46) ! used 2 times - TMP_JAMP(158) = TMP_JAMP(134) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(132) ! used 2 times - TMP_JAMP(157) = TMP_JAMP(130) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(144) ! used 2 times - TMP_JAMP(156) = TMP_JAMP(128) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * TMP_JAMP(127) ! used 2 times - TMP_JAMP(155) = TMP_JAMP(123) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * TMP_JAMP(122) ! used 2 times - TMP_JAMP(154) = TMP_JAMP(112) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(148) ! used 2 times - TMP_JAMP(153) = TMP_JAMP(100) + AMP(24) ! used 2 times - TMP_JAMP(152) = TMP_JAMP(99) + AMP(32) ! used 2 times + TMP_JAMP(84) = TMP_JAMP(31) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(26) ! used 2 times + TMP_JAMP(83) = TMP_JAMP(25) + AMP(95) ! used 2 times + TMP_JAMP(82) = AMP(18) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(101) ! used 2 times + TMP_JAMP(81) = AMP(79) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(90) ! used 2 times + TMP_JAMP(155) = TMP_JAMP(131) - TMP_JAMP(83) ! used 2 times + TMP_JAMP(154) = TMP_JAMP(119) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(55) ! used 2 times + TMP_JAMP(153) = TMP_JAMP(114) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(64) ! used 2 times + TMP_JAMP(152) = TMP_JAMP(111) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(64) ! used 2 times + TMP_JAMP(151) = TMP_JAMP(105) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(57) ! used 2 times + TMP_JAMP(150) = TMP_JAMP(103) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(62) ! used 2 times + TMP_JAMP(149) = TMP_JAMP(100) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(55) ! used 2 times + TMP_JAMP(148) = TMP_JAMP(95) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(62) ! used 2 times + TMP_JAMP(147) = TMP_JAMP(94) - TMP_JAMP(53) ! used 2 times + TMP_JAMP(146) = TMP_JAMP(89) - TMP_JAMP(50) ! used 2 times + TMP_JAMP(145) = TMP_JAMP(88) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(70) ! used 2 times + TMP_JAMP(144) = TMP_JAMP(84) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * TMP_JAMP(62) ! used 2 times + TMP_JAMP(143) = TMP_JAMP(81) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * TMP_JAMP(56) ! used 2 times JAMP(1,1) = (-1.000000000000000D+00)*AMP(30) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(109) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(152) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(153) - JAMP(2,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(27)+(-1.000000000000000D+00)*AMP(28)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(66)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(104)+TMP_JAMP(111) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(152) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(80) + $ +TMP_JAMP(86)+TMP_JAMP(96)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(137)+TMP_JAMP(145) + JAMP(2,1) = (-1.000000000000000D+00)*AMP(28) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(79) + $ +TMP_JAMP(85)+TMP_JAMP(106)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(129)+(-1.000000000000000D+00) + $ *TMP_JAMP(145) JAMP(3,1) = (-1.000000000000000D+00)*AMP(31) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(72) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(102) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(125) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(153) - JAMP(4,1) = (-1.000000000000000D+00)*AMP(19) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(21) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(26) - $ +AMP(151)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(79)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(101)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(156) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(78) + $ +(-1.000000000000000D+00)*TMP_JAMP(86)+TMP_JAMP(95) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(134) + $ +(-1.000000000000000D+00)*TMP_JAMP(144) + JAMP(4,1) = (-1.000000000000000D+00)*AMP(19)+TMP_JAMP(112) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(139) + $ +TMP_JAMP(144)+(-1.000000000000000D+00)*TMP_JAMP(146) JAMP(5,1) = (-1.000000000000000D+00)*AMP(29) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(90) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(103) - $ +(-1.000000000000000D+00)*TMP_JAMP(105)+((0.000000000000000D+00 - $ ,-1.000000000000000D+00))*TMP_JAMP(107)+TMP_JAMP(120) - JAMP(6,1) = (-1.000000000000000D+00)*AMP(20) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(21) - $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(76) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(106) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(107) - $ +(-1.000000000000000D+00)*TMP_JAMP(160) - JAMP(7,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(15)+((0.000000000000000D+00,1.000000000000000D+00))*AMP(57) - $ +(-1.000000000000000D+00)*AMP(93)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(108)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(114)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(154) - JAMP(8,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(13)+((0.000000000000000D+00,1.000000000000000D+00))*AMP(75) - $ +(-1.000000000000000D+00)*AMP(91)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(57)+(-1.000000000000000D+00) - $ *TMP_JAMP(110)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(118)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(154) - JAMP(9,1) = (-1.000000000000000D+00)*AMP(94) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(113) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(115) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(116) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(131) - JAMP(10,1) = (-1.000000000000000D+00)*AMP(38) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(116) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(155) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(158) - JAMP(11,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(55)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(75)+(-1.000000000000000D+00)*AMP(92)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(120)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(46)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(72)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(117)+(-1.000000000000000D+00) - $ *TMP_JAMP(119) - JAMP(12,1) = (-1.000000000000000D+00)*AMP(37)+( - $ -1.000000000000000D+00)*AMP(62)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*TMP_JAMP(71)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(121)+TMP_JAMP(147) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(29) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(65) + $ +(-1.000000000000000D+00)*TMP_JAMP(85)+(-1.000000000000000D+00) + $ *TMP_JAMP(87)+(-1.000000000000000D+00)*TMP_JAMP(109) + $ +TMP_JAMP(143) + JAMP(6,1) = (-1.000000000000000D+00)*AMP(20)+TMP_JAMP(87) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(141) + $ +TMP_JAMP(146)+TMP_JAMP(151) + JAMP(7,1) = (-1.000000000000000D+00)*AMP(93)+( + $ -1.000000000000000D+00)*TMP_JAMP(37)+TMP_JAMP(92)+( + $ -1.000000000000000D+00)*TMP_JAMP(96)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(130)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(155) + JAMP(8,1) = (-1.000000000000000D+00)*AMP(91) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(19) + $ +TMP_JAMP(91)+(-1.000000000000000D+00)*TMP_JAMP(106) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(125) $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(155) - JAMP(13,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(118)+(-1.000000000000000D+00)*AMP(126) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(124) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(126) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(139) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(157) - JAMP(14,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(78)+(-1.000000000000000D+00)*AMP(98)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*AMP(118)+AMP(152) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(62) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(156) - $ +(-1.000000000000000D+00)*TMP_JAMP(159) - JAMP(15,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(88)+(-1.000000000000000D+00)*AMP(127)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(129)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*TMP_JAMP(131)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(136)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(157) - JAMP(16,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(45)+(-1.000000000000000D+00)*AMP(47)+AMP(53) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(88) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(73) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(158) - $ +(-1.000000000000000D+00)*TMP_JAMP(159) - JAMP(17,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(78)+(-1.000000000000000D+00)*AMP(97)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(101)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(136)+(-1.000000000000000D+00) - $ *TMP_JAMP(160)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(161) - JAMP(18,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(45)+(-1.000000000000000D+00)*AMP(46)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(50)+((0.000000000000000D+00 - $ ,1.000000000000000D+00))*TMP_JAMP(52)+(-1.000000000000000D+00) - $ *TMP_JAMP(137)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(139)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(161) - JAMP(19,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(12)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(90)+(-1.000000000000000D+00)*AMP(128)+(-1.000000000000000D - $ +00)*AMP(135)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(57)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(84)+(-1.000000000000000D+00)*TMP_JAMP(141)+( - $ -1.000000000000000D+00)*TMP_JAMP(162) - JAMP(20,1) = ((0.000000000000000D+00,1.000000000000000D+00)) - $ *AMP(60)+(-1.000000000000000D+00)*AMP(100)+((0.000000000000000D - $ +00,1.000000000000000D+00))*TMP_JAMP(60)+(-1.000000000000000D - $ +00)*TMP_JAMP(80)+(-1.000000000000000D+00)*TMP_JAMP(143) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(145) - $ +TMP_JAMP(162) - JAMP(21,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(12)+(-1.000000000000000D+00)*AMP(62)+((0.000000000000000D - $ +00,1.000000000000000D+00))*AMP(70)+((0.000000000000000D+00, - $ -1.000000000000000D+00))*AMP(120)+(-1.000000000000000D+00) - $ *AMP(129)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(64)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(65)+(-1.000000000000000D+00)*TMP_JAMP(87) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(145) - $ +TMP_JAMP(146) + JAMP(9,1) = (-1.000000000000000D+00)*AMP(94)+( + $ -1.000000000000000D+00)*TMP_JAMP(90)+(-1.000000000000000D+00) + $ *TMP_JAMP(92)+(-1.000000000000000D+00)*TMP_JAMP(98) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(124) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(135) + JAMP(10,1) = (-1.000000000000000D+00)*AMP(38)+TMP_JAMP(90) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(141) + $ +(-1.000000000000000D+00)*TMP_JAMP(147)+TMP_JAMP(154) + JAMP(11,1) = AMP(62)+(-1.000000000000000D+00)*AMP(92) + $ +((0.000000000000000D+00,1.000000000000000D+00))*AMP(120) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(63)+( + $ -1.000000000000000D+00)*TMP_JAMP(91)+(-1.000000000000000D+00) + $ *TMP_JAMP(93)+(-1.000000000000000D+00)*TMP_JAMP(109) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(126) + JAMP(12,1) = (-1.000000000000000D+00)*AMP(37)+TMP_JAMP(93) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(139) + $ +TMP_JAMP(147)+TMP_JAMP(152) + JAMP(13,1) = (-1.000000000000000D+00)*AMP(126) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(75) + $ +(-1.000000000000000D+00)*TMP_JAMP(97)+TMP_JAMP(103) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(128) + $ +(-1.000000000000000D+00)*TMP_JAMP(148) + JAMP(14,1) = (-1.000000000000000D+00)*AMP(98) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(20)+( + $ -1.000000000000000D+00)*TMP_JAMP(44)+TMP_JAMP(101)+( + $ -1.000000000000000D+00)*TMP_JAMP(112)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(126)+(-1.000000000000000D+00) + $ *TMP_JAMP(150) + JAMP(15,1) = (-1.000000000000000D+00)*AMP(127)+( + $ -1.000000000000000D+00)*TMP_JAMP(41)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(59)+((0.000000000000000D+00 + $ ,1.000000000000000D+00))*TMP_JAMP(77)+TMP_JAMP(97)+TMP_JAMP(99) + $ +(-1.000000000000000D+00)*TMP_JAMP(149) + JAMP(16,1) = (-1.000000000000000D+00)*AMP(47) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(60)+( + $ -1.000000000000000D+00)*TMP_JAMP(104)+(-1.000000000000000D+00) + $ *TMP_JAMP(119)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(138)+TMP_JAMP(149) + JAMP(17,1) = (-1.000000000000000D+00)*AMP(97) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(71) + $ +TMP_JAMP(82)+(-1.000000000000000D+00)*TMP_JAMP(101)+( + $ -1.000000000000000D+00)*TMP_JAMP(102)+(-1.000000000000000D+00) + $ *TMP_JAMP(115)+((0.000000000000000D+00,-1.000000000000000D+00)) + $ *TMP_JAMP(127) + JAMP(18,1) = (-1.000000000000000D+00)*AMP(46)+TMP_JAMP(102) + $ +TMP_JAMP(104)+(-1.000000000000000D+00)*TMP_JAMP(121) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(132) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(140) + JAMP(19,1) = (-1.000000000000000D+00)*AMP(128) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(28) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(74) + $ +(-1.000000000000000D+00)*TMP_JAMP(107)+TMP_JAMP(116) + $ +TMP_JAMP(123)+(-1.000000000000000D+00)*TMP_JAMP(143) + JAMP(20,1) = (-1.000000000000000D+00)*AMP(100)+TMP_JAMP(49)+( + $ -1.000000000000000D+00)*TMP_JAMP(113)+(-1.000000000000000D+00) + $ *TMP_JAMP(123)+((0.000000000000000D+00,1.000000000000000D+00)) + $ *TMP_JAMP(135)+(-1.000000000000000D+00)*TMP_JAMP(151) + JAMP(21,1) = (-1.000000000000000D+00)*AMP(129)+( + $ -1.000000000000000D+00)*TMP_JAMP(51)+TMP_JAMP(108)+TMP_JAMP(110) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(133) + $ +(-1.000000000000000D+00)*TMP_JAMP(153) JAMP(22,1) = (-1.000000000000000D+00)*AMP(49) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*AMP(70) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(69) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(70) - $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(72) - $ +TMP_JAMP(81)+(-1.000000000000000D+00)*TMP_JAMP(147)+( - $ -1.000000000000000D+00)*TMP_JAMP(163) - JAMP(23,1) = ((0.000000000000000D+00,-1.000000000000000D+00)) - $ *AMP(60)+(-1.000000000000000D+00)*AMP(99)+((0.000000000000000D - $ +00,-1.000000000000000D+00))*AMP(101)+(-1.000000000000000D+00) - $ *AMP(153)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(75)+((0.000000000000000D+00,1.000000000000000D+00)) - $ *TMP_JAMP(76)+((0.000000000000000D+00,-1.000000000000000D+00)) - $ *TMP_JAMP(78)+(-1.000000000000000D+00)*TMP_JAMP(81) - $ +TMP_JAMP(148)+(-1.000000000000000D+00)*TMP_JAMP(150) - JAMP(24,1) = (-1.000000000000000D+00)*AMP(48)+AMP(52) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(83) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(85) - $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(86) - $ +TMP_JAMP(150)+TMP_JAMP(151)+TMP_JAMP(163) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(78) + $ +TMP_JAMP(114)+(-1.000000000000000D+00)*TMP_JAMP(120) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(136) + $ +(-1.000000000000000D+00)*TMP_JAMP(152) + JAMP(23,1) = ((0.000000000000000D+00,1.000000000000000D+00)) + $ *AMP(10)+(-1.000000000000000D+00)*AMP(99)+TMP_JAMP(50) + $ +((0.000000000000000D+00,1.000000000000000D+00))*TMP_JAMP(72)+( + $ -1.000000000000000D+00)*TMP_JAMP(82)+TMP_JAMP(113)+( + $ -1.000000000000000D+00)*TMP_JAMP(117)+((0.000000000000000D+00, + $ -1.000000000000000D+00))*TMP_JAMP(130) + JAMP(24,1) = (-1.000000000000000D+00)*AMP(48)+TMP_JAMP(54) + $ +((0.000000000000000D+00,-1.000000000000000D+00))*TMP_JAMP(73) + $ +TMP_JAMP(118)+TMP_JAMP(120)+TMP_JAMP(122)+((0.000000000000000D + $ +00,-1.000000000000000D+00))*TMP_JAMP(142) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/CPPProcess.cc index e5e62a0af2..edb75e58f0 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/CPPProcess.cc @@ -249,23 +249,16 @@ namespace mg5amcCpu ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); -#if not( defined __CUDACC__ and defined MGONGPU_TEST_DIVERGENCE ) - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); -#else - if( ( blockDim.x * blockIdx.x + threadIdx.x ) % 2 == 0 ) - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); - else - oxxxxx( momenta, 0, cHel[ihel][4], +1, w_fp[4], 4 ) -#endif + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - ixzxxx( momenta, cHel[ihel][5], -1, w_fp[5], 5 ); + ixxxxx( momenta, 0., cHel[ihel][5], -1, w_fp[5], 5 ); - VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[4], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[0], w_fp[1], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[4], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[5], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -278,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 36 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + FFV1_2( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[4], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[4], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -294,10 +287,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 36 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[5], w_fp[4], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[5], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -310,10 +303,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 36 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -326,10 +319,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 36 *** // Wavefunction(s) for diagram number 5 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -342,11 +335,11 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 36 *** // Wavefunction(s) for diagram number 6 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[3], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[6] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[6] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -357,11 +350,11 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 36 *** // Wavefunction(s) for diagram number 7 - FFV1_1( w_fp[4], w_fp[1], COUPs[1], 0., 0., w_fp[10] ); - FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[4], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[10] ); + FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[5], w_fp[10], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -372,10 +365,10 @@ namespace mg5amcCpu // *** DIAGRAM 8 OF 36 *** // Wavefunction(s) for diagram number 8 - FFV1_2( w_fp[5], w_fp[1], COUPs[1], 0., 0., w_fp[12] ); + FFV1_2( w_fp[5], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[12] ); // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[12], w_fp[4], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[4], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -386,10 +379,10 @@ namespace mg5amcCpu // *** DIAGRAM 9 OF 36 *** // Wavefunction(s) for diagram number 9 - FFV1_1( w_fp[9], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_1( w_fp[9], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -403,7 +396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 10 - VVV1_0( w_fp[1], w_fp[8], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -414,11 +407,11 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 36 *** // Wavefunction(s) for diagram number 11 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); - FFV1_1( w_fp[2], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[2], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -429,10 +422,10 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 36 *** // Wavefunction(s) for diagram number 12 - FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[5], w_fp[10], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -446,7 +439,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[12], w_fp[4], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[4], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -457,10 +450,10 @@ namespace mg5amcCpu // *** DIAGRAM 14 OF 36 *** // Wavefunction(s) for diagram number 14 - FFV1_2( w_fp[11], w_fp[1], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_2( w_fp[11], w_fp[1], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -474,7 +467,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[1], w_fp[8], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -485,11 +478,11 @@ namespace mg5amcCpu // *** DIAGRAM 16 OF 36 *** // Wavefunction(s) for diagram number 16 - FFV1_1( w_fp[4], w_fp[0], COUPs[1], 0., 0., w_fp[9] ); - FFV1P0_3( w_fp[5], w_fp[9], COUPs[1], 0., 0., w_fp[14] ); + FFV1_1( w_fp[4], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[5], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[14] ); // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 16 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -503,7 +496,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 17 - FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 17 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -517,7 +510,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 18 - FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 18 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -528,10 +521,10 @@ namespace mg5amcCpu // *** DIAGRAM 19 OF 36 *** // Wavefunction(s) for diagram number 19 - FFV1_1( w_fp[9], w_fp[1], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[9], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 19 - FFV1_0( w_fp[5], w_fp[11], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[11], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 19 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -545,7 +538,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[1], w_fp[7], w_fp[14], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[14], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 20 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -556,11 +549,11 @@ namespace mg5amcCpu // *** DIAGRAM 21 OF 36 *** // Wavefunction(s) for diagram number 21 - FFV1_2( w_fp[5], w_fp[0], COUPs[1], 0., 0., w_fp[14] ); - FFV1P0_3( w_fp[14], w_fp[4], COUPs[1], 0., 0., w_fp[11] ); + FFV1_2( w_fp[5], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[14] ); + FFV1P0_3( w_fp[14], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 21 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 21 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -574,7 +567,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 22 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -588,7 +581,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 23 - FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 23 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -599,10 +592,10 @@ namespace mg5amcCpu // *** DIAGRAM 24 OF 36 *** // Wavefunction(s) for diagram number 24 - FFV1_2( w_fp[14], w_fp[1], COUPs[1], 0., 0., w_fp[9] ); + FFV1_2( w_fp[14], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 24 - FFV1_0( w_fp[9], w_fp[4], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[4], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 24 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -616,7 +609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 25 - VVV1_0( w_fp[1], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 25 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -627,10 +620,10 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 36 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[13], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[13], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 26 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -641,10 +634,10 @@ namespace mg5amcCpu // *** DIAGRAM 27 OF 36 *** // Wavefunction(s) for diagram number 27 - VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 0., 0., w_fp[11] ); + VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 27 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -655,10 +648,10 @@ namespace mg5amcCpu // *** DIAGRAM 28 OF 36 *** // Wavefunction(s) for diagram number 28 - FFV1_2( w_fp[6], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[6], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 28 - FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 28 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -672,7 +665,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 29 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -683,10 +676,10 @@ namespace mg5amcCpu // *** DIAGRAM 30 OF 36 *** // Wavefunction(s) for diagram number 30 - FFV1_1( w_fp[10], w_fp[0], COUPs[1], 0., 0., w_fp[6] ); + FFV1_1( w_fp[10], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 30 - FFV1_0( w_fp[5], w_fp[6], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[6], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 30 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -697,10 +690,10 @@ namespace mg5amcCpu // *** DIAGRAM 31 OF 36 *** // Wavefunction(s) for diagram number 31 - VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 31 - FFV1_0( w_fp[5], w_fp[10], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 31 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -711,10 +704,10 @@ namespace mg5amcCpu // *** DIAGRAM 32 OF 36 *** // Wavefunction(s) for diagram number 32 - FFV1_2( w_fp[12], w_fp[0], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[12], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[10], w_fp[4], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[4], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 32 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -728,7 +721,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[12], w_fp[4], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[4], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 33 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -742,17 +735,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 34 - VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[1], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += 1. / 2. * amp_sv[0]; jamp_sv[2] -= 1. / 2. * amp_sv[0]; jamp_sv[9] -= 1. / 2. * amp_sv[0]; jamp_sv[10] += 1. / 2. * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[1], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[1] += 1. / 2. * amp_sv[0]; jamp_sv[5] -= 1. / 2. * amp_sv[0]; jamp_sv[6] -= 1. / 2. * amp_sv[0]; jamp_sv[10] += 1. / 2. * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[1], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] += 1. / 2. * amp_sv[0]; jamp_sv[5] -= 1. / 2. * amp_sv[0]; jamp_sv[6] -= 1. / 2. * amp_sv[0]; @@ -764,7 +757,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - VVV1_0( w_fp[1], w_fp[8], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[8], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 35 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -780,7 +773,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 36 - VVV1_0( w_fp[1], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[1], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 36 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1368,8 +1361,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/auto_dsig1.f index 67decfd0d7..67adf83921 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION G2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,11 +130,24 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + G2=PDG2PDF(LPP(IB(2)),0, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/matrix1.f index d599711adb..f44b687bc5 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gg_ttxuux/matrix1.f @@ -397,7 +397,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(16) + COMPLEX*16 ZTEMP, TMP_JAMP(17) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -668,17 +668,21 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(35) + AMP(37) ! used 4 times TMP_JAMP(2) = AMP(3) + AMP(34) ! used 4 times TMP_JAMP(1) = AMP(36) + AMP(38) ! used 4 times - TMP_JAMP(16) = AMP(1) + AMP(2) ! used 2 times - TMP_JAMP(15) = AMP(1) + AMP(5) ! used 2 times - TMP_JAMP(14) = TMP_JAMP(3) + TMP_JAMP(2) ! used 2 times - TMP_JAMP(13) = AMP(2) + AMP(4) ! used 2 times - TMP_JAMP(12) = TMP_JAMP(2) - TMP_JAMP(1) ! used 2 times - TMP_JAMP(11) = AMP(4) + AMP(5) ! used 2 times - TMP_JAMP(10) = TMP_JAMP(3) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(9) = TMP_JAMP(1) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(29) ! used 2 times - TMP_JAMP(8) = TMP_JAMP(3) + ((-0.000000000000000D+00, + TMP_JAMP(17) = TMP_JAMP(3) + TMP_JAMP(2) ! used 2 times + TMP_JAMP(16) = TMP_JAMP(3) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(33) ! used 2 times + TMP_JAMP(15) = TMP_JAMP(3) + ((-0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(10) ! used 2 times + TMP_JAMP(14) = TMP_JAMP(1) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(25) ! used 2 times + TMP_JAMP(13) = TMP_JAMP(1) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(20) ! used 2 times + TMP_JAMP(12) = TMP_JAMP(1) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(29) ! used 2 times + TMP_JAMP(11) = AMP(1) + AMP(2) ! used 2 times + TMP_JAMP(10) = AMP(1) + AMP(5) ! used 2 times + TMP_JAMP(9) = AMP(2) + AMP(4) ! used 2 times + TMP_JAMP(8) = AMP(4) + AMP(5) ! used 2 times TMP_JAMP(7) = AMP(2) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(32) ! used 2 times TMP_JAMP(6) = AMP(1) + ((0.000000000000000D+00 @@ -694,12 +698,12 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) $ +00,5.000000000000000D-01))*AMP(33)+(5.000000000000000D-01) $ *TMP_JAMP(2)+((0.000000000000000D+00,-5.000000000000000D-01)) $ *TMP_JAMP(4)+((0.000000000000000D+00,-5.000000000000000D-01)) - $ *TMP_JAMP(7)+(5.000000000000000D-01)*TMP_JAMP(8) + $ *TMP_JAMP(7)+(5.000000000000000D-01)*TMP_JAMP(15) JAMP(3,1) = (5.000000000000000D-01)*AMP(17)+((0.000000000000000D $ +00,-5.000000000000000D-01))*AMP(20)+(-5.000000000000000D-01) $ *TMP_JAMP(2)+((0.000000000000000D+00,-5.000000000000000D-01)) $ *TMP_JAMP(5)+((0.000000000000000D+00,-5.000000000000000D-01)) - $ *TMP_JAMP(6)+(5.000000000000000D-01)*TMP_JAMP(9) + $ *TMP_JAMP(6)+(5.000000000000000D-01)*TMP_JAMP(12) JAMP(4,1) = (-1.666666666666667D-01)*AMP(18) $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(6) $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(7) @@ -710,36 +714,35 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) $ -01)*AMP(7)+(5.000000000000000D-01)*AMP(22)+(5.000000000000000D $ -01)*AMP(23)+((0.000000000000000D+00,-5.000000000000000D-01)) $ *AMP(25)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(31) - $ +(-5.000000000000000D-01)*TMP_JAMP(8)+(-5.000000000000000D-01) - $ *TMP_JAMP(9) + $ +(-5.000000000000000D-01)*TMP_JAMP(12)+(-5.000000000000000D-01) + $ *TMP_JAMP(15) JAMP(7,1) = (5.000000000000000D-01)*AMP(11)+(5.000000000000000D $ -01)*AMP(13)+((0.000000000000000D+00,-5.000000000000000D-01)) $ *AMP(15)+(5.000000000000000D-01)*AMP(16)+(5.000000000000000D-01) - $ *AMP(18)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(20) - $ +((0.000000000000000D+00,5.000000000000000D-01))*AMP(27) - $ +((0.000000000000000D+00,-5.000000000000000D-01))*AMP(33)+( - $ -5.000000000000000D-01)*TMP_JAMP(10) + $ *AMP(18)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(27) + $ +(-5.000000000000000D-01)*TMP_JAMP(13)+(-5.000000000000000D-01) + $ *TMP_JAMP(16) JAMP(8,1) = (-1.666666666666667D-01)*AMP(16)+( $ -1.666666666666667D-01)*AMP(17)+(-1.666666666666667D-01)*AMP(21) $ +(-1.666666666666667D-01)*AMP(22) JAMP(9,1) = (-1.666666666666667D-01)*AMP(11)+( $ -1.666666666666667D-01)*AMP(14)+(-1.666666666666667D-01)*AMP(26) - $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(11) + $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(8) JAMP(10,1) = (5.000000000000000D-01)*AMP(21)+(5.000000000000000D - $ -01)*AMP(24)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *AMP(25)+(5.000000000000000D-01)*AMP(26)+((0.000000000000000D - $ +00,-5.000000000000000D-01))*AMP(27)+(-5.000000000000000D-01) - $ *TMP_JAMP(12)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *TMP_JAMP(13) + $ -01)*AMP(24)+(5.000000000000000D-01)*AMP(26) + $ +((0.000000000000000D+00,-5.000000000000000D-01))*AMP(27)+( + $ -5.000000000000000D-01)*TMP_JAMP(2)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(9)+(5.000000000000000D-01) + $ *TMP_JAMP(14) JAMP(11,1) = (5.000000000000000D-01)*AMP(12)+(5.000000000000000D $ -01)*AMP(14)+((0.000000000000000D+00,5.000000000000000D-01)) $ *AMP(15)+(5.000000000000000D-01)*AMP(30)+((0.000000000000000D - $ +00,-5.000000000000000D-01))*AMP(31)+(5.000000000000000D-01) - $ *TMP_JAMP(14)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *TMP_JAMP(15) + $ +00,-5.000000000000000D-01))*AMP(31)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(10)+(5.000000000000000D-01) + $ *TMP_JAMP(17) JAMP(12,1) = (-1.666666666666667D-01)*AMP(23)+( $ -1.666666666666667D-01)*AMP(24)+(-1.666666666666667D-01)*AMP(30) - $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(16) + $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(11) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/CPPProcess.cc index 59c382aca4..4e5b97a517 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/CPPProcess.cc @@ -243,7 +243,7 @@ namespace mg5amcCpu // Wavefunction(s) for diagram number 1 vxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][1], +1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); @@ -251,14 +251,14 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - oxzxxx( momenta, cHel[ihel][5], +1, w_fp[5], 5 ); + oxxxxx( momenta, 0., cHel[ihel][5], +1, w_fp[5], 5 ); - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[1], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -271,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 36 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + FFV1_2( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[5], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[5], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -287,10 +287,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 36 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[1], w_fp[5], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[1], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -303,10 +303,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 36 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -319,10 +319,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 36 *** // Wavefunction(s) for diagram number 5 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -335,11 +335,11 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 36 *** // Wavefunction(s) for diagram number 6 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[6] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[6] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -350,11 +350,11 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 36 *** // Wavefunction(s) for diagram number 7 - FFV1_1( w_fp[5], w_fp[4], COUPs[1], 0., 0., w_fp[10] ); - FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[5], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[10] ); + FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[1], w_fp[10], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[10], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -365,10 +365,10 @@ namespace mg5amcCpu // *** DIAGRAM 8 OF 36 *** // Wavefunction(s) for diagram number 8 - FFV1_2( w_fp[1], w_fp[4], COUPs[1], 0., 0., w_fp[12] ); + FFV1_2( w_fp[1], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[12] ); // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[12], w_fp[5], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[5], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -379,10 +379,10 @@ namespace mg5amcCpu // *** DIAGRAM 9 OF 36 *** // Wavefunction(s) for diagram number 9 - FFV1_1( w_fp[9], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_1( w_fp[9], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -396,7 +396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 10 - VVV1_0( w_fp[4], w_fp[8], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[8], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -407,11 +407,11 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 36 *** // Wavefunction(s) for diagram number 11 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -422,10 +422,10 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 36 *** // Wavefunction(s) for diagram number 12 - FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[1], w_fp[10], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[10], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -439,7 +439,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[12], w_fp[5], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[5], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -450,10 +450,10 @@ namespace mg5amcCpu // *** DIAGRAM 14 OF 36 *** // Wavefunction(s) for diagram number 14 - FFV1_2( w_fp[11], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_2( w_fp[11], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -467,7 +467,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[4], w_fp[8], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[8], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -478,11 +478,11 @@ namespace mg5amcCpu // *** DIAGRAM 16 OF 36 *** // Wavefunction(s) for diagram number 16 - FFV1_1( w_fp[5], w_fp[0], COUPs[1], 0., 0., w_fp[9] ); - FFV1P0_3( w_fp[1], w_fp[9], COUPs[1], 0., 0., w_fp[14] ); + FFV1_1( w_fp[5], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[1], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[14] ); // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 16 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -496,7 +496,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 17 - FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 17 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -510,7 +510,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 18 - FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 18 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -521,10 +521,10 @@ namespace mg5amcCpu // *** DIAGRAM 19 OF 36 *** // Wavefunction(s) for diagram number 19 - FFV1_1( w_fp[9], w_fp[4], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[9], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 19 - FFV1_0( w_fp[1], w_fp[11], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[11], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 19 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -538,7 +538,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[4], w_fp[7], w_fp[14], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[7], w_fp[14], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 20 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -549,11 +549,11 @@ namespace mg5amcCpu // *** DIAGRAM 21 OF 36 *** // Wavefunction(s) for diagram number 21 - FFV1_2( w_fp[1], w_fp[0], COUPs[1], 0., 0., w_fp[14] ); - FFV1P0_3( w_fp[14], w_fp[5], COUPs[1], 0., 0., w_fp[11] ); + FFV1_2( w_fp[1], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[14] ); + FFV1P0_3( w_fp[14], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 21 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 21 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -567,7 +567,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 22 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -581,7 +581,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 23 - FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 23 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -592,10 +592,10 @@ namespace mg5amcCpu // *** DIAGRAM 24 OF 36 *** // Wavefunction(s) for diagram number 24 - FFV1_2( w_fp[14], w_fp[4], COUPs[1], 0., 0., w_fp[9] ); + FFV1_2( w_fp[14], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 24 - FFV1_0( w_fp[9], w_fp[5], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[5], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 24 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -609,7 +609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 25 - VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 25 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -620,10 +620,10 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 36 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[13], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[13], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 26 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -634,10 +634,10 @@ namespace mg5amcCpu // *** DIAGRAM 27 OF 36 *** // Wavefunction(s) for diagram number 27 - VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 0., 0., w_fp[11] ); + VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 27 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -648,10 +648,10 @@ namespace mg5amcCpu // *** DIAGRAM 28 OF 36 *** // Wavefunction(s) for diagram number 28 - FFV1_2( w_fp[6], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[6], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 28 - FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 28 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -665,7 +665,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 29 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -676,10 +676,10 @@ namespace mg5amcCpu // *** DIAGRAM 30 OF 36 *** // Wavefunction(s) for diagram number 30 - FFV1_1( w_fp[10], w_fp[0], COUPs[1], 0., 0., w_fp[6] ); + FFV1_1( w_fp[10], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 30 - FFV1_0( w_fp[1], w_fp[6], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[6], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 30 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -690,10 +690,10 @@ namespace mg5amcCpu // *** DIAGRAM 31 OF 36 *** // Wavefunction(s) for diagram number 31 - VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 31 - FFV1_0( w_fp[1], w_fp[10], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[10], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 31 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -704,10 +704,10 @@ namespace mg5amcCpu // *** DIAGRAM 32 OF 36 *** // Wavefunction(s) for diagram number 32 - FFV1_2( w_fp[12], w_fp[0], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[12], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[10], w_fp[5], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[5], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 32 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -721,7 +721,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[12], w_fp[5], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[5], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 33 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -735,17 +735,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 34 - VVVV1_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= 1. / 2. * amp_sv[0]; jamp_sv[5] += 1. / 2. * amp_sv[0]; jamp_sv[8] -= 1. / 2. * amp_sv[0]; jamp_sv[10] += 1. / 2. * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += 1. / 2. * amp_sv[0]; jamp_sv[2] -= 1. / 2. * amp_sv[0]; jamp_sv[7] += 1. / 2. * amp_sv[0]; jamp_sv[8] -= 1. / 2. * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] += 1. / 2. * amp_sv[0]; jamp_sv[5] -= 1. / 2. * amp_sv[0]; jamp_sv[7] += 1. / 2. * amp_sv[0]; @@ -757,7 +757,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - VVV1_0( w_fp[4], w_fp[8], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[8], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 35 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -773,7 +773,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 36 - VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 36 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1361,14 +1361,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 96,96 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 96 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/auto_dsig1.f index 58e83991fd..83a2a24681 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION D2,U2,S2,C2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,14 +130,27 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)), QSCALE) + U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)), QSCALE) + S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)), QSCALE) + C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/matrix1.f index 7508bec3da..0bd6789c09 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gu_ttxgu/matrix1.f @@ -397,7 +397,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(16) + COMPLEX*16 ZTEMP, TMP_JAMP(17) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -668,51 +668,55 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(36) + AMP(38) ! used 4 times TMP_JAMP(2) = AMP(3) + AMP(34) ! used 4 times TMP_JAMP(1) = AMP(35) + AMP(37) ! used 4 times - TMP_JAMP(16) = AMP(4) + AMP(5) ! used 2 times - TMP_JAMP(15) = AMP(2) + AMP(4) ! used 2 times - TMP_JAMP(14) = TMP_JAMP(3) - TMP_JAMP(2) ! used 2 times - TMP_JAMP(13) = AMP(1) + AMP(2) ! used 2 times - TMP_JAMP(12) = AMP(1) + AMP(5) ! used 2 times - TMP_JAMP(11) = TMP_JAMP(2) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(10) = TMP_JAMP(3) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(9) = AMP(5) + ((0.000000000000000D+00 + TMP_JAMP(17) = TMP_JAMP(3) - TMP_JAMP(2) ! used 2 times + TMP_JAMP(16) = TMP_JAMP(3) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(20) ! used 2 times + TMP_JAMP(15) = TMP_JAMP(3) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(29) ! used 2 times + TMP_JAMP(14) = TMP_JAMP(1) + ((-0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(15) ! used 2 times + TMP_JAMP(13) = TMP_JAMP(1) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(33) ! used 2 times + TMP_JAMP(12) = TMP_JAMP(1) + ((-0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(10) ! used 2 times + TMP_JAMP(11) = AMP(4) + AMP(5) ! used 2 times + TMP_JAMP(10) = AMP(2) + AMP(4) ! used 2 times + TMP_JAMP(9) = AMP(1) + AMP(2) ! used 2 times + TMP_JAMP(8) = AMP(1) + AMP(5) ! used 2 times + TMP_JAMP(7) = AMP(5) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(28) ! used 2 times - TMP_JAMP(8) = AMP(1) + ((0.000000000000000D+00 + TMP_JAMP(6) = AMP(1) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(19) ! used 2 times - TMP_JAMP(7) = TMP_JAMP(3) + ((-0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(29) ! used 2 times - TMP_JAMP(6) = AMP(2) + ((-0.000000000000000D+00 + TMP_JAMP(5) = AMP(2) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(32) ! used 2 times - TMP_JAMP(5) = AMP(4) + ((-0.000000000000000D+00 + TMP_JAMP(4) = AMP(4) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(9) ! used 2 times - TMP_JAMP(4) = TMP_JAMP(1) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(10) ! used 2 times JAMP(1,1) = (-5.000000000000000D-01)*AMP(6)+(-5.000000000000000D $ -01)*AMP(7)+(-5.000000000000000D-01)*AMP(22)+( $ -5.000000000000000D-01)*AMP(23)+((0.000000000000000D+00 $ ,5.000000000000000D-01))*AMP(25)+((0.000000000000000D+00, $ -5.000000000000000D-01))*AMP(31)+(5.000000000000000D-01) - $ *TMP_JAMP(4)+(5.000000000000000D-01)*TMP_JAMP(7) + $ *TMP_JAMP(12)+(5.000000000000000D-01)*TMP_JAMP(15) JAMP(2,1) = (1.666666666666667D-01)*AMP(7)+(1.666666666666667D $ -01)*AMP(8)+(1.666666666666667D-01)*AMP(12)+(1.666666666666667D $ -01)*AMP(13) JAMP(3,1) = (-5.000000000000000D-01)*AMP(8)+((0.000000000000000D $ +00,-5.000000000000000D-01))*AMP(33)+(-5.000000000000000D-01) - $ *TMP_JAMP(2)+(-5.000000000000000D-01)*TMP_JAMP(4) - $ +((0.000000000000000D+00,5.000000000000000D-01))*TMP_JAMP(5) - $ +((0.000000000000000D+00,5.000000000000000D-01))*TMP_JAMP(6) + $ *TMP_JAMP(2)+((0.000000000000000D+00,5.000000000000000D-01)) + $ *TMP_JAMP(4)+((0.000000000000000D+00,5.000000000000000D-01)) + $ *TMP_JAMP(5)+(-5.000000000000000D-01)*TMP_JAMP(12) JAMP(4,1) = (1.666666666666667D-01)*AMP(6)+((0.000000000000000D - $ +00,-1.666666666666667D-01))*TMP_JAMP(5)+((0.000000000000000D - $ +00,-1.666666666666667D-01))*TMP_JAMP(9) + $ +00,-1.666666666666667D-01))*TMP_JAMP(4)+((0.000000000000000D + $ +00,-1.666666666666667D-01))*TMP_JAMP(7) JAMP(5,1) = (1.666666666666667D-01)*AMP(18)+((0.000000000000000D - $ +00,-1.666666666666667D-01))*TMP_JAMP(6)+((0.000000000000000D - $ +00,-1.666666666666667D-01))*TMP_JAMP(8) + $ +00,-1.666666666666667D-01))*TMP_JAMP(5)+((0.000000000000000D + $ +00,-1.666666666666667D-01))*TMP_JAMP(6) JAMP(6,1) = (-5.000000000000000D-01)*AMP(17) $ +((0.000000000000000D+00,5.000000000000000D-01))*AMP(20) - $ +(5.000000000000000D-01)*TMP_JAMP(2)+(-5.000000000000000D-01) - $ *TMP_JAMP(7)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *TMP_JAMP(8)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *TMP_JAMP(9) + $ +(5.000000000000000D-01)*TMP_JAMP(2)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(6)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(7)+(-5.000000000000000D-01) + $ *TMP_JAMP(15) JAMP(7,1) = (1.666666666666667D-01)*AMP(16)+(1.666666666666667D $ -01)*AMP(17)+(1.666666666666667D-01)*AMP(21) $ +(1.666666666666667D-01)*AMP(22) @@ -720,28 +724,26 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) $ -5.000000000000000D-01)*AMP(13)+((0.000000000000000D+00 $ ,5.000000000000000D-01))*AMP(15)+(-5.000000000000000D-01) $ *AMP(16)+(-5.000000000000000D-01)*AMP(18)+((0.000000000000000D - $ +00,-5.000000000000000D-01))*AMP(20)+((0.000000000000000D+00, - $ -5.000000000000000D-01))*AMP(27)+((0.000000000000000D+00 - $ ,5.000000000000000D-01))*AMP(33)+(5.000000000000000D-01) - $ *TMP_JAMP(10) + $ +00,-5.000000000000000D-01))*AMP(27)+(5.000000000000000D-01) + $ *TMP_JAMP(13)+(5.000000000000000D-01)*TMP_JAMP(16) JAMP(9,1) = (-5.000000000000000D-01)*AMP(12)+( - $ -5.000000000000000D-01)*AMP(14)+((0.000000000000000D+00, - $ -5.000000000000000D-01))*AMP(15)+(-5.000000000000000D-01) - $ *AMP(30)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(31) - $ +(-5.000000000000000D-01)*TMP_JAMP(11)+((0.000000000000000D+00, - $ -5.000000000000000D-01))*TMP_JAMP(12) + $ -5.000000000000000D-01)*AMP(14)+(-5.000000000000000D-01)*AMP(30) + $ +((0.000000000000000D+00,5.000000000000000D-01))*AMP(31)+( + $ -5.000000000000000D-01)*TMP_JAMP(2)+((0.000000000000000D+00, + $ -5.000000000000000D-01))*TMP_JAMP(8)+(-5.000000000000000D-01) + $ *TMP_JAMP(14) JAMP(10,1) = (1.666666666666667D-01)*AMP(23)+(1.666666666666667D $ -01)*AMP(24)+(1.666666666666667D-01)*AMP(30) - $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(13) + $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(9) JAMP(11,1) = (-5.000000000000000D-01)*AMP(21)+( $ -5.000000000000000D-01)*AMP(24)+((0.000000000000000D+00, $ -5.000000000000000D-01))*AMP(25)+(-5.000000000000000D-01) $ *AMP(26)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(27) - $ +(-5.000000000000000D-01)*TMP_JAMP(14)+((0.000000000000000D+00, - $ -5.000000000000000D-01))*TMP_JAMP(15) + $ +((0.000000000000000D+00,-5.000000000000000D-01))*TMP_JAMP(10) + $ +(-5.000000000000000D-01)*TMP_JAMP(17) JAMP(12,1) = (1.666666666666667D-01)*AMP(11)+(1.666666666666667D $ -01)*AMP(14)+(1.666666666666667D-01)*AMP(26) - $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(16) + $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(11) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/CPPProcess.cc index 607cb95cfd..a32372d31f 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/CPPProcess.cc @@ -243,7 +243,7 @@ namespace mg5amcCpu // Wavefunction(s) for diagram number 1 vxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); @@ -251,14 +251,14 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - ixzxxx( momenta, cHel[ihel][5], -1, w_fp[5], 5 ); + ixxxxx( momenta, 0., cHel[ihel][5], -1, w_fp[5], 5 ); - VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[0], w_fp[4], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[5], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -271,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 36 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + FFV1_2( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -287,10 +287,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 36 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -303,10 +303,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 36 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -319,10 +319,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 36 *** // Wavefunction(s) for diagram number 5 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -335,11 +335,11 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 36 *** // Wavefunction(s) for diagram number 6 - FFV1_1( w_fp[2], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[6] ); + FFV1_1( w_fp[2], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[6] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -350,11 +350,11 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 36 *** // Wavefunction(s) for diagram number 7 - FFV1_1( w_fp[1], w_fp[4], COUPs[1], 0., 0., w_fp[10] ); - FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[1], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[10] ); + FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[5], w_fp[10], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -365,10 +365,10 @@ namespace mg5amcCpu // *** DIAGRAM 8 OF 36 *** // Wavefunction(s) for diagram number 8 - FFV1_2( w_fp[5], w_fp[4], COUPs[1], 0., 0., w_fp[12] ); + FFV1_2( w_fp[5], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[12] ); // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[12], w_fp[1], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[1], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -379,10 +379,10 @@ namespace mg5amcCpu // *** DIAGRAM 9 OF 36 *** // Wavefunction(s) for diagram number 9 - FFV1_1( w_fp[9], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_1( w_fp[9], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -396,7 +396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 10 - VVV1_0( w_fp[4], w_fp[8], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[8], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -407,11 +407,11 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 36 *** // Wavefunction(s) for diagram number 11 - FFV1_2( w_fp[3], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[3], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -422,10 +422,10 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 36 *** // Wavefunction(s) for diagram number 12 - FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[5], w_fp[10], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -439,7 +439,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[12], w_fp[1], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[1], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -450,10 +450,10 @@ namespace mg5amcCpu // *** DIAGRAM 14 OF 36 *** // Wavefunction(s) for diagram number 14 - FFV1_2( w_fp[11], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_2( w_fp[11], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -467,7 +467,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[4], w_fp[8], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[8], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -478,11 +478,11 @@ namespace mg5amcCpu // *** DIAGRAM 16 OF 36 *** // Wavefunction(s) for diagram number 16 - FFV1_1( w_fp[1], w_fp[0], COUPs[1], 0., 0., w_fp[9] ); - FFV1P0_3( w_fp[5], w_fp[9], COUPs[1], 0., 0., w_fp[14] ); + FFV1_1( w_fp[1], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[5], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[14] ); // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 16 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -496,7 +496,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 17 - FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 17 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -510,7 +510,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 18 - FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 18 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -521,10 +521,10 @@ namespace mg5amcCpu // *** DIAGRAM 19 OF 36 *** // Wavefunction(s) for diagram number 19 - FFV1_1( w_fp[9], w_fp[4], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[9], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 19 - FFV1_0( w_fp[5], w_fp[11], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[11], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 19 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -538,7 +538,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[4], w_fp[7], w_fp[14], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[7], w_fp[14], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 20 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -549,11 +549,11 @@ namespace mg5amcCpu // *** DIAGRAM 21 OF 36 *** // Wavefunction(s) for diagram number 21 - FFV1_2( w_fp[5], w_fp[0], COUPs[1], 0., 0., w_fp[14] ); - FFV1P0_3( w_fp[14], w_fp[1], COUPs[1], 0., 0., w_fp[11] ); + FFV1_2( w_fp[5], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[14] ); + FFV1P0_3( w_fp[14], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 21 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 21 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -567,7 +567,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 22 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -581,7 +581,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 23 - FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 23 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -592,10 +592,10 @@ namespace mg5amcCpu // *** DIAGRAM 24 OF 36 *** // Wavefunction(s) for diagram number 24 - FFV1_2( w_fp[14], w_fp[4], COUPs[1], 0., 0., w_fp[9] ); + FFV1_2( w_fp[14], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 24 - FFV1_0( w_fp[9], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 24 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -609,7 +609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 25 - VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 25 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -620,10 +620,10 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 36 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[13], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[13], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 26 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -634,10 +634,10 @@ namespace mg5amcCpu // *** DIAGRAM 27 OF 36 *** // Wavefunction(s) for diagram number 27 - VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 0., 0., w_fp[11] ); + VVV1P0_1( w_fp[0], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 27 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -648,10 +648,10 @@ namespace mg5amcCpu // *** DIAGRAM 28 OF 36 *** // Wavefunction(s) for diagram number 28 - FFV1_2( w_fp[6], w_fp[0], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[6], w_fp[0], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 28 - FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 28 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -665,7 +665,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 29 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -676,10 +676,10 @@ namespace mg5amcCpu // *** DIAGRAM 30 OF 36 *** // Wavefunction(s) for diagram number 30 - FFV1_1( w_fp[10], w_fp[0], COUPs[1], 0., 0., w_fp[6] ); + FFV1_1( w_fp[10], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 30 - FFV1_0( w_fp[5], w_fp[6], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[6], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 30 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -690,10 +690,10 @@ namespace mg5amcCpu // *** DIAGRAM 31 OF 36 *** // Wavefunction(s) for diagram number 31 - VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[0], w_fp[7], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 31 - FFV1_0( w_fp[5], w_fp[10], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 31 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -704,10 +704,10 @@ namespace mg5amcCpu // *** DIAGRAM 32 OF 36 *** // Wavefunction(s) for diagram number 32 - FFV1_2( w_fp[12], w_fp[0], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[12], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[10], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 32 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -721,7 +721,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[12], w_fp[1], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[1], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 33 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -735,17 +735,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 34 - VVVV1_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[4] -= 1. / 2. * amp_sv[0]; jamp_sv[7] += 1. / 2. * amp_sv[0]; jamp_sv[8] -= 1. / 2. * amp_sv[0]; jamp_sv[11] += 1. / 2. * amp_sv[0]; - VVVV3_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= 1. / 2. * amp_sv[0]; jamp_sv[3] -= 1. / 2. * amp_sv[0]; jamp_sv[7] += 1. / 2. * amp_sv[0]; jamp_sv[11] += 1. / 2. * amp_sv[0]; - VVVV4_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[0], w_fp[4], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[0] -= 1. / 2. * amp_sv[0]; jamp_sv[3] -= 1. / 2. * amp_sv[0]; jamp_sv[4] += 1. / 2. * amp_sv[0]; @@ -757,7 +757,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - VVV1_0( w_fp[4], w_fp[8], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[8], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 35 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -773,7 +773,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 36 - VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[4], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 36 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1361,14 +1361,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 96,96 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 96 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/auto_dsig1.f index 56e24ed83e..8cb3f9af60 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION G1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,18 +130,27 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + G1=PDG2PDF(LPP(IB(1)),0, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/matrix1.f index d1e36d2d51..704f8e6b46 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_gux_ttxgux/matrix1.f @@ -397,7 +397,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(16) + COMPLEX*16 ZTEMP, TMP_JAMP(17) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -666,32 +666,35 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(35) + AMP(37) ! used 4 times TMP_JAMP(2) = AMP(3) + AMP(34) ! used 4 times TMP_JAMP(1) = AMP(36) + AMP(38) ! used 4 times - TMP_JAMP(16) = AMP(1) + AMP(5) ! used 2 times - TMP_JAMP(15) = TMP_JAMP(3) + TMP_JAMP(2) ! used 2 times - TMP_JAMP(14) = AMP(1) + AMP(2) ! used 2 times - TMP_JAMP(13) = AMP(4) + AMP(5) ! used 2 times - TMP_JAMP(12) = AMP(2) + AMP(4) ! used 2 times - TMP_JAMP(11) = TMP_JAMP(2) - TMP_JAMP(1) ! used 2 times - TMP_JAMP(10) = AMP(4) + ((-0.000000000000000D+00 + TMP_JAMP(17) = TMP_JAMP(3) + TMP_JAMP(2) ! used 2 times + TMP_JAMP(16) = TMP_JAMP(3) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(33) ! used 2 times + TMP_JAMP(15) = TMP_JAMP(3) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(10) ! used 2 times + TMP_JAMP(14) = TMP_JAMP(1) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(25) ! used 2 times + TMP_JAMP(13) = TMP_JAMP(1) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(29) ! used 2 times + TMP_JAMP(12) = TMP_JAMP(1) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(20) ! used 2 times + TMP_JAMP(11) = AMP(1) + AMP(5) ! used 2 times + TMP_JAMP(10) = AMP(1) + AMP(2) ! used 2 times + TMP_JAMP(9) = AMP(4) + AMP(5) ! used 2 times + TMP_JAMP(8) = AMP(2) + AMP(4) ! used 2 times + TMP_JAMP(7) = AMP(4) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(9) ! used 2 times - TMP_JAMP(9) = AMP(2) + ((-0.000000000000000D+00 + TMP_JAMP(6) = AMP(2) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(32) ! used 2 times - TMP_JAMP(8) = TMP_JAMP(3) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(10) ! used 2 times - TMP_JAMP(7) = AMP(5) + ((0.000000000000000D+00 + TMP_JAMP(5) = AMP(5) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(28) ! used 2 times - TMP_JAMP(6) = AMP(1) + ((0.000000000000000D+00 + TMP_JAMP(4) = AMP(1) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(19) ! used 2 times - TMP_JAMP(5) = TMP_JAMP(1) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(20) ! used 2 times - TMP_JAMP(4) = TMP_JAMP(3) + TMP_JAMP(1) ! used 2 times JAMP(1,1) = (5.000000000000000D-01)*AMP(11)+(5.000000000000000D $ -01)*AMP(13)+((0.000000000000000D+00,-5.000000000000000D-01)) $ *AMP(15)+(5.000000000000000D-01)*AMP(16)+(5.000000000000000D-01) - $ *AMP(18)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(20) - $ +((0.000000000000000D+00,5.000000000000000D-01))*AMP(27) - $ +((0.000000000000000D+00,-5.000000000000000D-01))*AMP(33)+( - $ -5.000000000000000D-01)*TMP_JAMP(4) + $ *AMP(18)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(27) + $ +(-5.000000000000000D-01)*TMP_JAMP(12)+(-5.000000000000000D-01) + $ *TMP_JAMP(16) JAMP(2,1) = (-1.666666666666667D-01)*AMP(16)+( $ -1.666666666666667D-01)*AMP(17)+(-1.666666666666667D-01)*AMP(21) $ +(-1.666666666666667D-01)*AMP(22) @@ -699,46 +702,45 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) $ -01)*AMP(8)+(-1.666666666666667D-01)*AMP(12)+( $ -1.666666666666667D-01)*AMP(13) JAMP(4,1) = (5.000000000000000D-01)*AMP(6)+(5.000000000000000D - $ -01)*AMP(7)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *AMP(10)+(5.000000000000000D-01)*AMP(22)+(5.000000000000000D-01) - $ *AMP(23)+((0.000000000000000D+00,-5.000000000000000D-01)) - $ *AMP(25)+((0.000000000000000D+00,-5.000000000000000D-01)) - $ *AMP(29)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(31) - $ +(-5.000000000000000D-01)*TMP_JAMP(4) + $ -01)*AMP(7)+(5.000000000000000D-01)*AMP(22)+(5.000000000000000D + $ -01)*AMP(23)+((0.000000000000000D+00,-5.000000000000000D-01)) + $ *AMP(25)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(31) + $ +(-5.000000000000000D-01)*TMP_JAMP(13)+(-5.000000000000000D-01) + $ *TMP_JAMP(15) JAMP(5,1) = (5.000000000000000D-01)*AMP(17)+((0.000000000000000D $ +00,5.000000000000000D-01))*AMP(29)+(-5.000000000000000D-01) - $ *TMP_JAMP(2)+(5.000000000000000D-01)*TMP_JAMP(5) - $ +((0.000000000000000D+00,-5.000000000000000D-01))*TMP_JAMP(6) - $ +((0.000000000000000D+00,-5.000000000000000D-01))*TMP_JAMP(7) + $ *TMP_JAMP(2)+((0.000000000000000D+00,-5.000000000000000D-01)) + $ *TMP_JAMP(4)+((0.000000000000000D+00,-5.000000000000000D-01)) + $ *TMP_JAMP(5)+(5.000000000000000D-01)*TMP_JAMP(12) JAMP(6,1) = (-1.666666666666667D-01)*AMP(18) + $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(4) $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(6) - $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(9) JAMP(7,1) = (-1.666666666666667D-01)*AMP(6)+((0.000000000000000D - $ +00,1.666666666666667D-01))*TMP_JAMP(7)+((0.000000000000000D+00 - $ ,1.666666666666667D-01))*TMP_JAMP(10) + $ +00,1.666666666666667D-01))*TMP_JAMP(5)+((0.000000000000000D+00 + $ ,1.666666666666667D-01))*TMP_JAMP(7) JAMP(8,1) = (5.000000000000000D-01)*AMP(8)+((0.000000000000000D $ +00,5.000000000000000D-01))*AMP(33)+(5.000000000000000D-01) - $ *TMP_JAMP(2)+(5.000000000000000D-01)*TMP_JAMP(8) - $ +((0.000000000000000D+00,-5.000000000000000D-01))*TMP_JAMP(9) - $ +((0.000000000000000D+00,-5.000000000000000D-01))*TMP_JAMP(10) + $ *TMP_JAMP(2)+((0.000000000000000D+00,-5.000000000000000D-01)) + $ *TMP_JAMP(6)+((0.000000000000000D+00,-5.000000000000000D-01)) + $ *TMP_JAMP(7)+(5.000000000000000D-01)*TMP_JAMP(15) JAMP(9,1) = (5.000000000000000D-01)*AMP(21)+(5.000000000000000D - $ -01)*AMP(24)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *AMP(25)+(5.000000000000000D-01)*AMP(26)+((0.000000000000000D - $ +00,-5.000000000000000D-01))*AMP(27)+(-5.000000000000000D-01) - $ *TMP_JAMP(11)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *TMP_JAMP(12) + $ -01)*AMP(24)+(5.000000000000000D-01)*AMP(26) + $ +((0.000000000000000D+00,-5.000000000000000D-01))*AMP(27)+( + $ -5.000000000000000D-01)*TMP_JAMP(2)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(8)+(5.000000000000000D-01) + $ *TMP_JAMP(14) JAMP(10,1) = (-1.666666666666667D-01)*AMP(11)+( $ -1.666666666666667D-01)*AMP(14)+(-1.666666666666667D-01)*AMP(26) - $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(13) + $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(9) JAMP(11,1) = (-1.666666666666667D-01)*AMP(23)+( $ -1.666666666666667D-01)*AMP(24)+(-1.666666666666667D-01)*AMP(30) - $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(14) + $ +((0.000000000000000D+00,-1.666666666666667D-01))*TMP_JAMP(10) JAMP(12,1) = (5.000000000000000D-01)*AMP(12)+(5.000000000000000D $ -01)*AMP(14)+((0.000000000000000D+00,5.000000000000000D-01)) $ *AMP(15)+(5.000000000000000D-01)*AMP(30)+((0.000000000000000D - $ +00,-5.000000000000000D-01))*AMP(31)+(5.000000000000000D-01) - $ *TMP_JAMP(15)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *TMP_JAMP(16) + $ +00,-5.000000000000000D-01))*AMP(31)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(11)+(5.000000000000000D-01) + $ *TMP_JAMP(17) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/CPPProcess.cc index 0ac5734c21..835cdc1f93 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/CPPProcess.cc @@ -243,24 +243,24 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 7 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][1], +1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - oxzxxx( momenta, cHel[ihel][5], +1, w_fp[5], 5 ); + oxxxxx( momenta, 0., cHel[ihel][5], +1, w_fp[5], 5 ); - FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[1], w_fp[5], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[1], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -273,10 +273,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 7 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -289,10 +289,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 7 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -303,10 +303,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 7 *** // Wavefunction(s) for diagram number 4 - FFV1_2( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[5], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[5], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -319,10 +319,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 7 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_1( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[1], w_fp[3], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[3], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -335,10 +335,10 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 7 *** // Wavefunction(s) for diagram number 6 - FFV1_2( w_fp[0], w_fp[7], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[0], w_fp[7], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[4], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -351,10 +351,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 7 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[0], w_fp[8], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[0], w_fp[8], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[3], w_fp[4], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -936,14 +936,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 36,36 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 36 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/auto_dsig1.f index c68a9f5a67..3488dfd2e6 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/auto_dsig1.f @@ -44,6 +44,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,C1 DOUBLE PRECISION D2,S2,C2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -131,15 +132,28 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)), QSCALE) + S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)), QSCALE) + C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/matrix1.f index 4508401458..b2a0e5cd20 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uc_ttxuc/matrix1.f @@ -523,17 +523,17 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(2) = AMP(1) + AMP(4) ! used 3 times TMP_JAMP(1) = AMP(1) + AMP(2) ! used 3 times TMP_JAMP(8) = TMP_JAMP(5) + TMP_JAMP(4) ! used 2 times - TMP_JAMP(7) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(6) = TMP_JAMP(5) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(7) = TMP_JAMP(5) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(6) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times JAMP(1,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(7)+(2.500000000000000D-01) $ *TMP_JAMP(2) - JAMP(2,1) = (-8.333333333333333D-02)*TMP_JAMP(6) - JAMP(3,1) = (-8.333333333333333D-02)*TMP_JAMP(7) + JAMP(2,1) = (-8.333333333333333D-02)*TMP_JAMP(7) + JAMP(3,1) = (-8.333333333333333D-02)*TMP_JAMP(6) JAMP(4,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(6)+(2.500000000000000D-01) $ *TMP_JAMP(3) - JAMP(5,1) = (2.777777777777778D-02)*TMP_JAMP(4) + JAMP(5,1) = (2.777777777777778D-02)*TMP_JAMP(5) $ +(2.777777777777778D-02)*TMP_JAMP(6) JAMP(6,1) = (-8.333333333333333D-02)*TMP_JAMP(8) diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/CPPProcess.cc index 5d8331468c..f4be832f2c 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/CPPProcess.cc @@ -249,24 +249,24 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 7 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - ixzxxx( momenta, cHel[ihel][5], -1, w_fp[5], 5 ); + ixxxxx( momenta, 0., cHel[ihel][5], -1, w_fp[5], 5 ); - FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -279,10 +279,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 7 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -295,10 +295,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 7 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -309,10 +309,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 7 *** // Wavefunction(s) for diagram number 4 - FFV1_2( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[1], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[1], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -325,10 +325,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 7 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_1( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[5], w_fp[3], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[3], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -341,10 +341,10 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 7 *** // Wavefunction(s) for diagram number 6 - FFV1_2( w_fp[0], w_fp[7], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[0], w_fp[7], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[4], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -357,10 +357,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 7 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[0], w_fp[8], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[0], w_fp[8], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[3], w_fp[4], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -942,14 +942,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 36,36 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 36 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/auto_dsig1.f index 1044310fc4..0b6e873ee4 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/auto_dsig1.f @@ -50,6 +50,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,S1,C1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -137,21 +138,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/matrix1.f index f444d0a2c6..e0e291950c 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_ucx_ttxucx/matrix1.f @@ -534,19 +534,19 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(2) + AMP(5) ! used 3 times TMP_JAMP(2) = AMP(1) + AMP(4) ! used 3 times TMP_JAMP(1) = AMP(1) + AMP(2) ! used 3 times - TMP_JAMP(8) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(7) = TMP_JAMP(5) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(6) = TMP_JAMP(5) + TMP_JAMP(4) ! used 2 times - JAMP(1,1) = (8.333333333333333D-02)*TMP_JAMP(6) + TMP_JAMP(8) = TMP_JAMP(5) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(7) = TMP_JAMP(5) + TMP_JAMP(4) ! used 2 times + TMP_JAMP(6) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times + JAMP(1,1) = (8.333333333333333D-02)*TMP_JAMP(7) JAMP(2,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(3)+(-2.500000000000000D-01)*AMP(6)+(-2.500000000000000D-01) $ *TMP_JAMP(3) JAMP(3,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(3)+(-2.500000000000000D-01)*AMP(7)+(-2.500000000000000D-01) $ *TMP_JAMP(2) - JAMP(4,1) = (8.333333333333333D-02)*TMP_JAMP(8) - JAMP(5,1) = (8.333333333333333D-02)*TMP_JAMP(7) - JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(1)+( + JAMP(4,1) = (8.333333333333333D-02)*TMP_JAMP(6) + JAMP(5,1) = (8.333333333333333D-02)*TMP_JAMP(8) + JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(5)+( $ -2.777777777777778D-02)*TMP_JAMP(6) IF(INIT_MODE)THEN diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/CPPProcess.cc index d5d7e9e858..c3bfa3dc44 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/CPPProcess.cc @@ -241,24 +241,24 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 14 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - imzxxx( momenta, cHel[ihel][1], +1, w_fp[1], 1 ); // NB: imzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][1], +1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - oxzxxx( momenta, cHel[ihel][5], +1, w_fp[5], 5 ); + oxxxxx( momenta, 0., cHel[ihel][5], +1, w_fp[5], 5 ); - FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[1], w_fp[5], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[1], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -271,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 14 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -287,10 +287,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 14 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -301,10 +301,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 14 *** // Wavefunction(s) for diagram number 4 - FFV1_2( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[9] ); + FFV1_2( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[9], w_fp[5], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[5], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -317,10 +317,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 14 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[9] ); + FFV1_1( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[1], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -333,12 +333,12 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 14 *** // Wavefunction(s) for diagram number 6 - FFV1P0_3( w_fp[0], w_fp[5], COUPs[1], 0., 0., w_fp[9] ); - FFV1P0_3( w_fp[1], w_fp[4], COUPs[1], 0., 0., w_fp[6] ); - FFV1_1( w_fp[2], w_fp[9], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); + FFV1P0_3( w_fp[0], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[1], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1_1( w_fp[2], w_fp[9], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[10], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[10], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -351,10 +351,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 14 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[9], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); + FFV1_2( w_fp[3], w_fp[9], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[10], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -370,7 +370,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - VVV1_0( w_fp[9], w_fp[6], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[6], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -381,10 +381,10 @@ namespace mg5amcCpu // *** DIAGRAM 9 OF 14 *** // Wavefunction(s) for diagram number 9 - FFV1_2( w_fp[1], w_fp[9], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[1], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[10], w_fp[4], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[4], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -397,10 +397,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 14 *** // Wavefunction(s) for diagram number 10 - FFV1_1( w_fp[4], w_fp[9], COUPs[1], 0., 0., w_fp[10] ); + FFV1_1( w_fp[4], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[1], w_fp[10], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[1], w_fp[10], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -413,10 +413,10 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 14 *** // Wavefunction(s) for diagram number 11 - FFV1_2( w_fp[0], w_fp[6], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[0], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[10], w_fp[5], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[5], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -429,10 +429,10 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 14 *** // Wavefunction(s) for diagram number 12 - FFV1_2( w_fp[0], w_fp[8], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[0], w_fp[8], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[10], w_fp[5], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[5], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -445,10 +445,10 @@ namespace mg5amcCpu // *** DIAGRAM 13 OF 14 *** // Wavefunction(s) for diagram number 13 - FFV1_2( w_fp[0], w_fp[7], COUPs[1], 0., 0., w_fp[6] ); + FFV1_2( w_fp[0], w_fp[7], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[6], w_fp[4], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[4], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -464,7 +464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[10], w_fp[4], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[4], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1046,8 +1046,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/auto_dsig1.f index 25de63622f..5ed7bc881f 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,S1,C1 DOUBLE PRECISION D2,U2,S2,C2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,17 +130,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) - C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)))) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + D2=PDG2PDF(LPP(IB(2)),1, IB(2),XBK(IB(2)), QSCALE) + U2=PDG2PDF(LPP(IB(2)),2, IB(2),XBK(IB(2)), QSCALE) + S2=PDG2PDF(LPP(IB(2)),3, IB(2),XBK(IB(2)), QSCALE) + C2=PDG2PDF(LPP(IB(2)),4, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/matrix1.f index 0834ca2262..4c7a020ed9 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uu_ttxuu/matrix1.f @@ -544,30 +544,30 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(2) + AMP(5) ! used 3 times TMP_JAMP(2) = AMP(1) + AMP(4) ! used 3 times TMP_JAMP(1) = AMP(1) + AMP(2) ! used 3 times - TMP_JAMP(16) = TMP_JAMP(8) + TMP_JAMP(5) ! used 2 times - TMP_JAMP(15) = TMP_JAMP(9) + TMP_JAMP(5) ! used 2 times - TMP_JAMP(14) = TMP_JAMP(9) + TMP_JAMP(8) ! used 2 times - TMP_JAMP(13) = TMP_JAMP(10) + TMP_JAMP(4) ! used 2 times - TMP_JAMP(12) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(11) = TMP_JAMP(10) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(16) = TMP_JAMP(10) + TMP_JAMP(4) ! used 2 times + TMP_JAMP(15) = TMP_JAMP(10) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(14) = TMP_JAMP(9) + TMP_JAMP(5) ! used 2 times + TMP_JAMP(13) = TMP_JAMP(9) + TMP_JAMP(8) ! used 2 times + TMP_JAMP(12) = TMP_JAMP(8) + TMP_JAMP(5) ! used 2 times + TMP_JAMP(11) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times JAMP(1,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(14)+(2.500000000000000D-01) - $ *TMP_JAMP(2)+(8.333333333333333D-02)*TMP_JAMP(15) + $ *TMP_JAMP(2)+(8.333333333333333D-02)*TMP_JAMP(14) JAMP(2,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(8)+(-2.500000000000000D-01)*AMP(12)+(-2.500000000000000D - $ -01)*TMP_JAMP(6)+(-8.333333333333333D-02)*TMP_JAMP(11) + $ -01)*TMP_JAMP(6)+(-8.333333333333333D-02)*TMP_JAMP(15) JAMP(3,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(8)+(-2.500000000000000D-01)*AMP(11)+(-2.500000000000000D - $ -01)*TMP_JAMP(7)+(-8.333333333333333D-02)*TMP_JAMP(12) + $ -01)*TMP_JAMP(7)+(-8.333333333333333D-02)*TMP_JAMP(11) JAMP(4,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(13)+(2.500000000000000D-01) - $ *TMP_JAMP(3)+(8.333333333333333D-02)*TMP_JAMP(16) - JAMP(5,1) = (2.777777777777778D-02)*TMP_JAMP(4) + $ *TMP_JAMP(3)+(8.333333333333333D-02)*TMP_JAMP(12) + JAMP(5,1) = (2.777777777777778D-02)*TMP_JAMP(10) $ +(2.777777777777778D-02)*TMP_JAMP(11)+(8.333333333333333D-02) - $ *TMP_JAMP(14) - JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(5)+( - $ -8.333333333333333D-02)*TMP_JAMP(13)+(-2.777777777777778D-02) - $ *TMP_JAMP(14) + $ *TMP_JAMP(13) + JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(9)+( + $ -2.777777777777778D-02)*TMP_JAMP(12)+(-8.333333333333333D-02) + $ *TMP_JAMP(16) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/CPPProcess.cc index 58687f7276..85b486c900 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/CPPProcess.cc @@ -249,24 +249,24 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 7 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - ixzxxx( momenta, cHel[ihel][5], -1, w_fp[5], 5 ); + ixxxxx( momenta, 0., cHel[ihel][5], -1, w_fp[5], 5 ); - FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[5], w_fp[4], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[5], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -279,10 +279,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 7 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -295,10 +295,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 7 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -309,10 +309,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 7 *** // Wavefunction(s) for diagram number 4 - FFV1_2( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[4], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[4], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -325,10 +325,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 7 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[4], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_1( w_fp[4], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[5], w_fp[3], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[3], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -341,10 +341,10 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 7 *** // Wavefunction(s) for diagram number 6 - FFV1_2( w_fp[0], w_fp[7], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[0], w_fp[7], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[1], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[1], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -357,10 +357,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 7 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[0], w_fp[8], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[0], w_fp[8], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[3], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -942,14 +942,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 36,36 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 36 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/auto_dsig1.f index 300733b34c..a32595dce6 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxccx/auto_dsig1.f @@ -50,6 +50,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,S1,C1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -137,21 +138,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/CPPProcess.cc index 0622603ad2..a9312c5aa5 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/CPPProcess.cc @@ -241,9 +241,9 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 36 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); @@ -253,12 +253,12 @@ namespace mg5amcCpu vxxxxx( momenta, 0., cHel[ihel][5], +1, w_fp[5], 5 ); - VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + VVV1P0_1( w_fp[4], w_fp[5], COUPs[0], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[0], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -271,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 36 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[0], w_fp[6], COUPs[1], 0., 0., w_fp[8] ); + FFV1_2( w_fp[0], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -287,10 +287,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 36 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -303,10 +303,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 36 *** // Wavefunction(s) for diagram number 4 - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -319,10 +319,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 36 *** // Wavefunction(s) for diagram number 5 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -335,11 +335,11 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 36 *** // Wavefunction(s) for diagram number 6 - FFV1_1( w_fp[2], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[9] ); - FFV1_2( w_fp[3], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[6] ); + FFV1_1( w_fp[2], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[9] ); + FFV1_2( w_fp[3], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[6] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -350,11 +350,11 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 36 *** // Wavefunction(s) for diagram number 7 - FFV1_1( w_fp[1], w_fp[5], COUPs[1], 0., 0., w_fp[10] ); - FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[1], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[10] ); + FFV1P0_3( w_fp[3], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[0], w_fp[10], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[0], w_fp[10], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -365,10 +365,10 @@ namespace mg5amcCpu // *** DIAGRAM 8 OF 36 *** // Wavefunction(s) for diagram number 8 - FFV1_2( w_fp[0], w_fp[5], COUPs[1], 0., 0., w_fp[12] ); + FFV1_2( w_fp[0], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[12] ); // Amplitude(s) for diagram number 8 - FFV1_0( w_fp[12], w_fp[1], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[1], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -379,10 +379,10 @@ namespace mg5amcCpu // *** DIAGRAM 9 OF 36 *** // Wavefunction(s) for diagram number 9 - FFV1_1( w_fp[9], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_1( w_fp[9], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -396,7 +396,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 10 - VVV1_0( w_fp[5], w_fp[8], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[8], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -407,11 +407,11 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 36 *** // Wavefunction(s) for diagram number 11 - FFV1_2( w_fp[3], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); - FFV1_1( w_fp[2], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[3], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[2], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[11], w_fp[13], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -422,10 +422,10 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 36 *** // Wavefunction(s) for diagram number 12 - FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[11], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[0], w_fp[10], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[0], w_fp[10], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -439,7 +439,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[12], w_fp[1], w_fp[9], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[1], w_fp[9], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -450,10 +450,10 @@ namespace mg5amcCpu // *** DIAGRAM 14 OF 36 *** // Wavefunction(s) for diagram number 14 - FFV1_2( w_fp[11], w_fp[5], COUPs[1], cIPD[0], cIPD[1], w_fp[14] ); + FFV1_2( w_fp[11], w_fp[5], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[14] ); // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -467,7 +467,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 15 - VVV1_0( w_fp[5], w_fp[8], w_fp[9], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[8], w_fp[9], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 15 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -478,11 +478,11 @@ namespace mg5amcCpu // *** DIAGRAM 16 OF 36 *** // Wavefunction(s) for diagram number 16 - FFV1_1( w_fp[1], w_fp[4], COUPs[1], 0., 0., w_fp[9] ); - FFV1P0_3( w_fp[0], w_fp[9], COUPs[1], 0., 0., w_fp[14] ); + FFV1_1( w_fp[1], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[0], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[14] ); // Amplitude(s) for diagram number 16 - FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 16 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -496,7 +496,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 17 - FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[14], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 17 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -510,7 +510,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 18 - FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[9], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 18 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -521,10 +521,10 @@ namespace mg5amcCpu // *** DIAGRAM 19 OF 36 *** // Wavefunction(s) for diagram number 19 - FFV1_1( w_fp[9], w_fp[5], COUPs[1], 0., 0., w_fp[11] ); + FFV1_1( w_fp[9], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 19 - FFV1_0( w_fp[0], w_fp[11], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[0], w_fp[11], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 19 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -538,7 +538,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 20 - VVV1_0( w_fp[5], w_fp[7], w_fp[14], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[7], w_fp[14], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 20 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -549,11 +549,11 @@ namespace mg5amcCpu // *** DIAGRAM 21 OF 36 *** // Wavefunction(s) for diagram number 21 - FFV1_2( w_fp[0], w_fp[4], COUPs[1], 0., 0., w_fp[14] ); - FFV1P0_3( w_fp[14], w_fp[1], COUPs[1], 0., 0., w_fp[11] ); + FFV1_2( w_fp[0], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[14] ); + FFV1P0_3( w_fp[14], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 21 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 21 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -567,7 +567,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 22 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 22 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -581,7 +581,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 23 - FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[14], w_fp[10], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 23 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -592,10 +592,10 @@ namespace mg5amcCpu // *** DIAGRAM 24 OF 36 *** // Wavefunction(s) for diagram number 24 - FFV1_2( w_fp[14], w_fp[5], COUPs[1], 0., 0., w_fp[9] ); + FFV1_2( w_fp[14], w_fp[5], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 24 - FFV1_0( w_fp[9], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 24 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -609,7 +609,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 25 - VVV1_0( w_fp[5], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 25 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -620,10 +620,10 @@ namespace mg5amcCpu // *** DIAGRAM 26 OF 36 *** // Wavefunction(s) for diagram number 26 - FFV1_1( w_fp[13], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[11] ); + FFV1_1( w_fp[13], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[11] ); // Amplitude(s) for diagram number 26 - FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[11], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 26 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -634,10 +634,10 @@ namespace mg5amcCpu // *** DIAGRAM 27 OF 36 *** // Wavefunction(s) for diagram number 27 - VVV1P0_1( w_fp[4], w_fp[8], COUPs[0], 0., 0., w_fp[11] ); + VVV1P0_1( w_fp[4], w_fp[8], COUPs[0], 1.0, 0., 0., w_fp[11] ); // Amplitude(s) for diagram number 27 - FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[13], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 27 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -648,10 +648,10 @@ namespace mg5amcCpu // *** DIAGRAM 28 OF 36 *** // Wavefunction(s) for diagram number 28 - FFV1_2( w_fp[6], w_fp[4], COUPs[1], cIPD[0], cIPD[1], w_fp[13] ); + FFV1_2( w_fp[6], w_fp[4], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[13] ); // Amplitude(s) for diagram number 28 - FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[13], w_fp[2], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 28 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -665,7 +665,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 29 - FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[2], w_fp[11], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 29 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -676,10 +676,10 @@ namespace mg5amcCpu // *** DIAGRAM 30 OF 36 *** // Wavefunction(s) for diagram number 30 - FFV1_1( w_fp[10], w_fp[4], COUPs[1], 0., 0., w_fp[6] ); + FFV1_1( w_fp[10], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 30 - FFV1_0( w_fp[0], w_fp[6], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[0], w_fp[6], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 30 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -690,10 +690,10 @@ namespace mg5amcCpu // *** DIAGRAM 31 OF 36 *** // Wavefunction(s) for diagram number 31 - VVV1P0_1( w_fp[4], w_fp[7], COUPs[0], 0., 0., w_fp[6] ); + VVV1P0_1( w_fp[4], w_fp[7], COUPs[0], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 31 - FFV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[0], w_fp[10], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 31 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -704,10 +704,10 @@ namespace mg5amcCpu // *** DIAGRAM 32 OF 36 *** // Wavefunction(s) for diagram number 32 - FFV1_2( w_fp[12], w_fp[4], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[12], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 32 - FFV1_0( w_fp[10], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 32 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -721,7 +721,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 33 - FFV1_0( w_fp[12], w_fp[1], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[12], w_fp[1], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 33 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -735,17 +735,17 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 34 - VVVV1_0( w_fp[4], w_fp[5], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV1_0( w_fp[4], w_fp[5], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= 1. / 2. * amp_sv[0]; jamp_sv[3] += 1. / 2. * amp_sv[0]; jamp_sv[4] += 1. / 2. * amp_sv[0]; jamp_sv[5] -= 1. / 2. * amp_sv[0]; - VVVV3_0( w_fp[4], w_fp[5], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV3_0( w_fp[4], w_fp[5], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[2] -= 1. / 2. * amp_sv[0]; jamp_sv[5] -= 1. / 2. * amp_sv[0]; jamp_sv[9] += 1. / 2. * amp_sv[0]; jamp_sv[10] += 1. / 2. * amp_sv[0]; - VVVV4_0( w_fp[4], w_fp[5], w_fp[7], w_fp[8], COUPs[2], &_fp[0] ); + VVVV4_0( w_fp[4], w_fp[5], w_fp[7], w_fp[8], COUPs[2], 1.0, &_fp[0] ); jamp_sv[3] -= 1. / 2. * amp_sv[0]; jamp_sv[4] -= 1. / 2. * amp_sv[0]; jamp_sv[9] += 1. / 2. * amp_sv[0]; @@ -757,7 +757,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 35 - VVV1_0( w_fp[5], w_fp[8], w_fp[6], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[8], w_fp[6], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 35 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -773,7 +773,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 36 - VVV1_0( w_fp[5], w_fp[7], w_fp[11], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[5], w_fp[7], w_fp[11], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 36 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1361,14 +1361,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 72,72 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 72 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/auto_dsig1.f index c9d97c2911..baaee299a2 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,S1,C1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,21 +130,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/matrix1.f index 80fb12abe5..a843f4656a 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxgg/matrix1.f @@ -397,7 +397,7 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) C LOCAL VARIABLES C INTEGER I,J,M,N - COMPLEX*16 ZTEMP, TMP_JAMP(19) + COMPLEX*16 ZTEMP, TMP_JAMP(17) REAL*8 CF(NCOLOR,NCOLOR) COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO) COMPLEX*16 W(6,NWAVEFUNCS) @@ -668,29 +668,25 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(36) + AMP(38) ! used 4 times TMP_JAMP(2) = AMP(35) + AMP(37) ! used 4 times TMP_JAMP(1) = AMP(3) + AMP(34) ! used 4 times - TMP_JAMP(19) = TMP_JAMP(3) + TMP_JAMP(2) ! used 2 times - TMP_JAMP(18) = TMP_JAMP(2) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(33) ! used 2 times - TMP_JAMP(17) = TMP_JAMP(2) + ((0.000000000000000D+00 - $ ,1.000000000000000D+00)) * AMP(15) ! used 2 times + TMP_JAMP(17) = TMP_JAMP(3) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(25) ! used 2 times TMP_JAMP(16) = TMP_JAMP(3) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(27) ! used 2 times - TMP_JAMP(15) = TMP_JAMP(3) + ((0.000000000000000D+00, $ -1.000000000000000D+00)) * AMP(20) ! used 2 times - TMP_JAMP(14) = AMP(1) + AMP(2) ! used 2 times - TMP_JAMP(13) = AMP(2) + ((-0.000000000000000D+00 + TMP_JAMP(15) = TMP_JAMP(3) - TMP_JAMP(1) ! used 2 times + TMP_JAMP(14) = TMP_JAMP(2) + ((0.000000000000000D+00, + $ -1.000000000000000D+00)) * AMP(10) ! used 2 times + TMP_JAMP(13) = TMP_JAMP(2) + ((0.000000000000000D+00 + $ ,1.000000000000000D+00)) * AMP(15) ! used 2 times + TMP_JAMP(12) = TMP_JAMP(2) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(11) = AMP(1) + AMP(2) ! used 2 times + TMP_JAMP(10) = AMP(2) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(32) ! used 2 times - TMP_JAMP(12) = AMP(1) + ((-0.000000000000000D+00 + TMP_JAMP(9) = AMP(1) + ((-0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(19) ! used 2 times - TMP_JAMP(11) = AMP(1) + AMP(5) ! used 2 times - TMP_JAMP(10) = TMP_JAMP(2) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(9) = AMP(5) + ((0.000000000000000D+00 + TMP_JAMP(8) = AMP(1) + AMP(5) ! used 2 times + TMP_JAMP(7) = AMP(5) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(28) ! used 2 times - TMP_JAMP(8) = TMP_JAMP(3) - TMP_JAMP(1) ! used 2 times - TMP_JAMP(7) = AMP(4) + ((-0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(26) ! used 2 times - TMP_JAMP(6) = TMP_JAMP(1) + ((0.000000000000000D+00, - $ -1.000000000000000D+00)) * AMP(2) ! used 2 times + TMP_JAMP(6) = AMP(2) + AMP(4) ! used 2 times TMP_JAMP(5) = AMP(4) + ((0.000000000000000D+00 $ ,1.000000000000000D+00)) * AMP(9) ! used 2 times TMP_JAMP(4) = AMP(4) + AMP(5) ! used 2 times @@ -701,33 +697,35 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) $ -01)*AMP(14)+(1.666666666666667D-01)*AMP(26) $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(4) JAMP(3,1) = (-5.000000000000000D-01)*AMP(8)+((0.000000000000000D - $ +00,5.000000000000000D-01))*AMP(10)+(-5.000000000000000D-01) - $ *AMP(32)+((0.000000000000000D+00,5.000000000000000D-01)) - $ *TMP_JAMP(5)+(-5.000000000000000D-01)*TMP_JAMP(6)+( - $ -5.000000000000000D-01)*TMP_JAMP(18) + $ +00,5.000000000000000D-01))*AMP(10)+((0.000000000000000D+00, + $ -5.000000000000000D-01))*AMP(33)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(5)+((0.000000000000000D+00 + $ ,5.000000000000000D-01))*TMP_JAMP(10)+(-5.000000000000000D-01) + $ *TMP_JAMP(12) JAMP(4,1) = (-5.000000000000000D-01)*AMP(21)+( $ -5.000000000000000D-01)*AMP(24)+((0.000000000000000D+00, - $ -5.000000000000000D-01))*AMP(25)+(5.000000000000000D-01) - $ *TMP_JAMP(6)+((0.000000000000000D+00,-5.000000000000000D-01)) - $ *TMP_JAMP(7)+(-5.000000000000000D-01)*TMP_JAMP(16) + $ -5.000000000000000D-01))*AMP(25)+(-5.000000000000000D-01) + $ *AMP(26)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(27) + $ +((0.000000000000000D+00,-5.000000000000000D-01))*TMP_JAMP(6)+( + $ -5.000000000000000D-01)*TMP_JAMP(15) JAMP(5,1) = (-5.000000000000000D-01)*AMP(17) $ +((0.000000000000000D+00,5.000000000000000D-01))*AMP(20) - $ +((0.000000000000000D+00,-5.000000000000000D-01))*AMP(29)+( - $ -5.000000000000000D-01)*TMP_JAMP(8)+((0.000000000000000D+00 - $ ,5.000000000000000D-01))*TMP_JAMP(9)+((0.000000000000000D+00 - $ ,5.000000000000000D-01))*TMP_JAMP(12) + $ +((0.000000000000000D+00,-5.000000000000000D-01))*AMP(29) + $ +((0.000000000000000D+00,5.000000000000000D-01))*TMP_JAMP(7) + $ +((0.000000000000000D+00,5.000000000000000D-01))*TMP_JAMP(9)+( + $ -5.000000000000000D-01)*TMP_JAMP(15) JAMP(6,1) = (-5.000000000000000D-01)*AMP(12)+( $ -5.000000000000000D-01)*AMP(14)+((0.000000000000000D+00, $ -5.000000000000000D-01))*AMP(15)+(-5.000000000000000D-01) $ *AMP(30)+((0.000000000000000D+00,5.000000000000000D-01))*AMP(31) - $ +(-5.000000000000000D-01)*TMP_JAMP(10)+((0.000000000000000D+00, - $ -5.000000000000000D-01))*TMP_JAMP(11) + $ +((0.000000000000000D+00,-5.000000000000000D-01))*TMP_JAMP(8)+( + $ -5.000000000000000D-01)*TMP_JAMP(12) JAMP(7,1) = (1.666666666666667D-01)*AMP(18)+((0.000000000000000D - $ +00,-1.666666666666667D-01))*TMP_JAMP(12)+((0.000000000000000D - $ +00,-1.666666666666667D-01))*TMP_JAMP(13) + $ +00,-1.666666666666667D-01))*TMP_JAMP(9)+((0.000000000000000D + $ +00,-1.666666666666667D-01))*TMP_JAMP(10) JAMP(8,1) = (1.666666666666667D-01)*AMP(23)+(1.666666666666667D $ -01)*AMP(24)+(1.666666666666667D-01)*AMP(30) - $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(14) + $ +((0.000000000000000D+00,1.666666666666667D-01))*TMP_JAMP(11) JAMP(9,1) = (1.666666666666667D-01)*AMP(16)+(1.666666666666667D $ -01)*AMP(17)+(1.666666666666667D-01)*AMP(21) $ +(1.666666666666667D-01)*AMP(22) @@ -736,15 +734,13 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) $ +(-5.000000000000000D-01)*AMP(18)+((0.000000000000000D+00, $ -5.000000000000000D-01))*AMP(27)+((0.000000000000000D+00 $ ,5.000000000000000D-01))*AMP(33)+(5.000000000000000D-01) - $ *TMP_JAMP(15)+(5.000000000000000D-01)*TMP_JAMP(17) + $ *TMP_JAMP(13)+(5.000000000000000D-01)*TMP_JAMP(16) JAMP(11,1) = (-5.000000000000000D-01)*AMP(6)+( - $ -5.000000000000000D-01)*AMP(7)+((0.000000000000000D+00, - $ -5.000000000000000D-01))*AMP(10)+(-5.000000000000000D-01) - $ *AMP(22)+(-5.000000000000000D-01)*AMP(23)+((0.000000000000000D - $ +00,5.000000000000000D-01))*AMP(25)+((0.000000000000000D+00 + $ -5.000000000000000D-01)*AMP(7)+(-5.000000000000000D-01)*AMP(22) + $ +(-5.000000000000000D-01)*AMP(23)+((0.000000000000000D+00 $ ,5.000000000000000D-01))*AMP(29)+((0.000000000000000D+00, $ -5.000000000000000D-01))*AMP(31)+(5.000000000000000D-01) - $ *TMP_JAMP(19) + $ *TMP_JAMP(14)+(5.000000000000000D-01)*TMP_JAMP(17) JAMP(12,1) = (1.666666666666667D-01)*AMP(7)+(1.666666666666667D $ -01)*AMP(8)+(1.666666666666667D-01)*AMP(12)+(1.666666666666667D $ -01)*AMP(13) diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/CPPProcess.cc index 5bf4c02337..c5c1f27856 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/CPPProcess.cc @@ -241,24 +241,24 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 14 *** // Wavefunction(s) for diagram number 1 - ipzxxx( momenta, cHel[ihel][0], +1, w_fp[0], 0 ); // NB: ipzxxx only uses pz + ixxxxx( momenta, 0., cHel[ihel][0], +1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - oxzxxx( momenta, cHel[ihel][4], +1, w_fp[4], 4 ); + oxxxxx( momenta, 0., cHel[ihel][4], +1, w_fp[4], 4 ); - ixzxxx( momenta, cHel[ihel][5], -1, w_fp[5], 5 ); + ixxxxx( momenta, 0., cHel[ihel][5], -1, w_fp[5], 5 ); - FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[5], w_fp[4], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1P0_3( w_fp[0], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[5], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -271,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 14 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -287,10 +287,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 14 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -301,10 +301,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 14 *** // Wavefunction(s) for diagram number 4 - FFV1_2( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[9] ); + FFV1_2( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[9], w_fp[4], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[4], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -317,10 +317,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 14 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[4], w_fp[6], COUPs[1], 0., 0., w_fp[9] ); + FFV1_1( w_fp[4], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[5], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -333,12 +333,12 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 14 *** // Wavefunction(s) for diagram number 6 - FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 0., 0., w_fp[9] ); - FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 0., 0., w_fp[6] ); - FFV1_1( w_fp[2], w_fp[9], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); + FFV1P0_3( w_fp[0], w_fp[4], COUPs[1], 1.0, 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1_1( w_fp[2], w_fp[9], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[10], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[10], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -351,10 +351,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 14 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[9], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); + FFV1_2( w_fp[3], w_fp[9], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[10], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -370,7 +370,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - VVV1_0( w_fp[9], w_fp[6], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[6], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -381,10 +381,10 @@ namespace mg5amcCpu // *** DIAGRAM 9 OF 14 *** // Wavefunction(s) for diagram number 9 - FFV1_2( w_fp[5], w_fp[9], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[5], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[10], w_fp[1], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[1], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -397,10 +397,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 14 *** // Wavefunction(s) for diagram number 10 - FFV1_1( w_fp[1], w_fp[9], COUPs[1], 0., 0., w_fp[10] ); + FFV1_1( w_fp[1], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[5], w_fp[10], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -413,10 +413,10 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 14 *** // Wavefunction(s) for diagram number 11 - FFV1_2( w_fp[0], w_fp[6], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[0], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[10], w_fp[4], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[4], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -429,10 +429,10 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 14 *** // Wavefunction(s) for diagram number 12 - FFV1_2( w_fp[0], w_fp[8], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[0], w_fp[8], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[10], w_fp[4], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[4], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -445,10 +445,10 @@ namespace mg5amcCpu // *** DIAGRAM 13 OF 14 *** // Wavefunction(s) for diagram number 13 - FFV1_2( w_fp[0], w_fp[7], COUPs[1], 0., 0., w_fp[6] ); + FFV1_2( w_fp[0], w_fp[7], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[6], w_fp[1], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[1], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -464,7 +464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[10], w_fp[1], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[1], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1046,14 +1046,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 36,36 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 36 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/auto_dsig1.f index c3b97a2a87..c2206e8d5e 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION D1,U1,S1,C1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,21 +130,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) - C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)))) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + D1=PDG2PDF(LPP(IB(1)),1, IB(1),XBK(IB(1)), QSCALE) + U1=PDG2PDF(LPP(IB(1)),2, IB(1),XBK(IB(1)), QSCALE) + S1=PDG2PDF(LPP(IB(1)),3, IB(1),XBK(IB(1)), QSCALE) + C1=PDG2PDF(LPP(IB(1)),4, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/matrix1.f index 4f193a2ce6..0385cc9e9a 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uux_ttxuux/matrix1.f @@ -544,30 +544,30 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(1) + AMP(4) ! used 3 times TMP_JAMP(2) = AMP(2) + AMP(5) ! used 3 times TMP_JAMP(1) = AMP(1) + AMP(2) ! used 3 times - TMP_JAMP(16) = TMP_JAMP(8) + TMP_JAMP(5) ! used 2 times - TMP_JAMP(15) = TMP_JAMP(9) + TMP_JAMP(5) ! used 2 times - TMP_JAMP(14) = TMP_JAMP(9) + TMP_JAMP(8) ! used 2 times - TMP_JAMP(13) = TMP_JAMP(10) + TMP_JAMP(4) ! used 2 times - TMP_JAMP(12) = TMP_JAMP(10) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(16) = TMP_JAMP(10) + TMP_JAMP(4) ! used 2 times + TMP_JAMP(15) = TMP_JAMP(10) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(14) = TMP_JAMP(9) + TMP_JAMP(5) ! used 2 times + TMP_JAMP(13) = TMP_JAMP(9) + TMP_JAMP(8) ! used 2 times + TMP_JAMP(12) = TMP_JAMP(8) + TMP_JAMP(5) ! used 2 times TMP_JAMP(11) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times JAMP(1,1) = (2.777777777777778D-02)*TMP_JAMP(10) $ +(2.777777777777778D-02)*TMP_JAMP(11)+(8.333333333333333D-02) - $ *TMP_JAMP(14) + $ *TMP_JAMP(13) JAMP(2,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(8)+(-2.500000000000000D-01)*AMP(11)+(-2.500000000000000D $ -01)*TMP_JAMP(7)+(-8.333333333333333D-02)*TMP_JAMP(11) JAMP(3,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(8)+(-2.500000000000000D-01)*AMP(12)+(-2.500000000000000D - $ -01)*TMP_JAMP(6)+(-8.333333333333333D-02)*TMP_JAMP(12) + $ -01)*TMP_JAMP(6)+(-8.333333333333333D-02)*TMP_JAMP(15) JAMP(4,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(13)+(2.500000000000000D-01) - $ *TMP_JAMP(2)+(8.333333333333333D-02)*TMP_JAMP(16) + $ *TMP_JAMP(2)+(8.333333333333333D-02)*TMP_JAMP(12) JAMP(5,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(14)+(2.500000000000000D-01) - $ *TMP_JAMP(3)+(8.333333333333333D-02)*TMP_JAMP(15) - JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(5)+( - $ -8.333333333333333D-02)*TMP_JAMP(13)+(-2.777777777777778D-02) - $ *TMP_JAMP(14) + $ *TMP_JAMP(3)+(8.333333333333333D-02)*TMP_JAMP(14) + JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(9)+( + $ -2.777777777777778D-02)*TMP_JAMP(12)+(-8.333333333333333D-02) + $ *TMP_JAMP(16) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/CPPProcess.cc index 739b5a1bb2..5c2471b60d 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/CPPProcess.cc @@ -243,24 +243,24 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 7 *** // Wavefunction(s) for diagram number 1 - opzxxx( momenta, cHel[ihel][0], -1, w_fp[0], 0 ); // NB: opzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - ixzxxx( momenta, cHel[ihel][4], -1, w_fp[4], 4 ); + ixxxxx( momenta, 0., cHel[ihel][4], -1, w_fp[4], 4 ); - ixzxxx( momenta, cHel[ihel][5], -1, w_fp[5], 5 ); + ixxxxx( momenta, 0., cHel[ihel][5], -1, w_fp[5], 5 ); - FFV1P0_3( w_fp[4], w_fp[0], COUPs[1], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1P0_3( w_fp[4], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -273,10 +273,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 7 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -289,10 +289,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 7 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -303,10 +303,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 7 *** // Wavefunction(s) for diagram number 4 - FFV1_2( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[3], w_fp[1], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[1], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -319,10 +319,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 7 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[3] ); + FFV1_1( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[5], w_fp[3], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[3], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -335,10 +335,10 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 7 *** // Wavefunction(s) for diagram number 6 - FFV1_2( w_fp[4], w_fp[7], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[4], w_fp[7], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[0], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[0], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -351,10 +351,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 7 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[4], w_fp[8], COUPs[1], 0., 0., w_fp[3] ); + FFV1_2( w_fp[4], w_fp[8], COUPs[1], 1.0, 0., 0., w_fp[3] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[3], w_fp[0], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[0], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -936,14 +936,13 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 2; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } // Denominators: spins, colors and identical particles - constexpr int helcolDenominators[1] = { 36,36 }; // assume nprocesses == 1 (#272 and #343) + constexpr int helcolDenominators[1] = { 36 }; // assume nprocesses == 1 (#272 and #343) #ifdef __CUDACC__ // Remember: in CUDA this is a kernel for one event, in c++ this processes n events diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/auto_dsig1.f index adb807b78c..e92ee65fd7 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/auto_dsig1.f @@ -44,6 +44,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION CX1,UX1,DX1 DOUBLE PRECISION CX2,SX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -131,21 +132,28 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - CX1=PDG2PDF(LPP(IB(1)),-4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)) - $ )) - UX1=PDG2PDF(LPP(IB(1)),-2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)) - $ )) - DX1=PDG2PDF(LPP(IB(1)),-1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)) - $ )) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + CX1=PDG2PDF(LPP(IB(1)),-4, IB(1),XBK(IB(1)), QSCALE) + UX1=PDG2PDF(LPP(IB(1)),-2, IB(1),XBK(IB(1)), QSCALE) + DX1=PDG2PDF(LPP(IB(1)),-1, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/matrix1.f index b856b0ec12..114c0a9384 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxcx_ttxuxcx/matrix1.f @@ -523,14 +523,14 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(2) = AMP(2) + AMP(5) ! used 3 times TMP_JAMP(1) = AMP(1) + AMP(2) ! used 3 times TMP_JAMP(8) = TMP_JAMP(5) + TMP_JAMP(4) ! used 2 times - TMP_JAMP(7) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(6) = TMP_JAMP(5) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(7) = TMP_JAMP(5) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(6) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times JAMP(1,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(6)+(2.500000000000000D-01) $ *TMP_JAMP(2) - JAMP(2,1) = (-8.333333333333333D-02)*TMP_JAMP(6) - JAMP(3,1) = (-8.333333333333333D-02)*TMP_JAMP(7) - JAMP(4,1) = (2.777777777777778D-02)*TMP_JAMP(4) + JAMP(2,1) = (-8.333333333333333D-02)*TMP_JAMP(7) + JAMP(3,1) = (-8.333333333333333D-02)*TMP_JAMP(6) + JAMP(4,1) = (2.777777777777778D-02)*TMP_JAMP(5) $ +(2.777777777777778D-02)*TMP_JAMP(6) JAMP(5,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(7)+(2.500000000000000D-01) diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/CPPProcess.cc b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/CPPProcess.cc index 129dd8551a..336545444a 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/CPPProcess.cc +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/CPPProcess.cc @@ -241,24 +241,24 @@ namespace mg5amcCpu // *** DIAGRAM 1 OF 14 *** // Wavefunction(s) for diagram number 1 - opzxxx( momenta, cHel[ihel][0], -1, w_fp[0], 0 ); // NB: opzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][0], -1, w_fp[0], 0 ); - omzxxx( momenta, cHel[ihel][1], -1, w_fp[1], 1 ); // NB: omzxxx only uses pz + oxxxxx( momenta, 0., cHel[ihel][1], -1, w_fp[1], 1 ); oxxxxx( momenta, cIPD[0], cHel[ihel][2], +1, w_fp[2], 2 ); ixxxxx( momenta, cIPD[0], cHel[ihel][3], -1, w_fp[3], 3 ); - ixzxxx( momenta, cHel[ihel][4], -1, w_fp[4], 4 ); + ixxxxx( momenta, 0., cHel[ihel][4], -1, w_fp[4], 4 ); - ixzxxx( momenta, cHel[ihel][5], -1, w_fp[5], 5 ); + ixxxxx( momenta, 0., cHel[ihel][5], -1, w_fp[5], 5 ); - FFV1P0_3( w_fp[4], w_fp[0], COUPs[1], 0., 0., w_fp[6] ); - FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 0., 0., w_fp[7] ); - FFV1_1( w_fp[2], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1P0_3( w_fp[4], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1P0_3( w_fp[5], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[7] ); + FFV1_1( w_fp[2], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 1 - FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[8], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 1 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -271,10 +271,10 @@ namespace mg5amcCpu // *** DIAGRAM 2 OF 14 *** // Wavefunction(s) for diagram number 2 - FFV1_2( w_fp[3], w_fp[6], COUPs[1], cIPD[0], cIPD[1], w_fp[8] ); + FFV1_2( w_fp[3], w_fp[6], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[8] ); // Amplitude(s) for diagram number 2 - FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[8], w_fp[2], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 2 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -287,10 +287,10 @@ namespace mg5amcCpu // *** DIAGRAM 3 OF 14 *** // Wavefunction(s) for diagram number 3 - FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 0., 0., w_fp[8] ); + FFV1P0_3( w_fp[3], w_fp[2], COUPs[1], 1.0, 0., 0., w_fp[8] ); // Amplitude(s) for diagram number 3 - VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[6], w_fp[7], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 3 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -301,10 +301,10 @@ namespace mg5amcCpu // *** DIAGRAM 4 OF 14 *** // Wavefunction(s) for diagram number 4 - FFV1_2( w_fp[5], w_fp[6], COUPs[1], 0., 0., w_fp[9] ); + FFV1_2( w_fp[5], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 4 - FFV1_0( w_fp[9], w_fp[1], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[9], w_fp[1], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 4 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -317,10 +317,10 @@ namespace mg5amcCpu // *** DIAGRAM 5 OF 14 *** // Wavefunction(s) for diagram number 5 - FFV1_1( w_fp[1], w_fp[6], COUPs[1], 0., 0., w_fp[9] ); + FFV1_1( w_fp[1], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[9] ); // Amplitude(s) for diagram number 5 - FFV1_0( w_fp[5], w_fp[9], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[9], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 5 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -333,12 +333,12 @@ namespace mg5amcCpu // *** DIAGRAM 6 OF 14 *** // Wavefunction(s) for diagram number 6 - FFV1P0_3( w_fp[4], w_fp[1], COUPs[1], 0., 0., w_fp[9] ); - FFV1P0_3( w_fp[5], w_fp[0], COUPs[1], 0., 0., w_fp[6] ); - FFV1_1( w_fp[2], w_fp[9], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); + FFV1P0_3( w_fp[4], w_fp[1], COUPs[1], 1.0, 0., 0., w_fp[9] ); + FFV1P0_3( w_fp[5], w_fp[0], COUPs[1], 1.0, 0., 0., w_fp[6] ); + FFV1_1( w_fp[2], w_fp[9], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); // Amplitude(s) for diagram number 6 - FFV1_0( w_fp[3], w_fp[10], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[3], w_fp[10], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 6 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -351,10 +351,10 @@ namespace mg5amcCpu // *** DIAGRAM 7 OF 14 *** // Wavefunction(s) for diagram number 7 - FFV1_2( w_fp[3], w_fp[9], COUPs[1], cIPD[0], cIPD[1], w_fp[10] ); + FFV1_2( w_fp[3], w_fp[9], COUPs[1], 1.0, cIPD[0], cIPD[1], w_fp[10] ); // Amplitude(s) for diagram number 7 - FFV1_0( w_fp[10], w_fp[2], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[2], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 7 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -370,7 +370,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 8 - VVV1_0( w_fp[9], w_fp[6], w_fp[8], COUPs[0], &_fp[0] ); + VVV1_0( w_fp[9], w_fp[6], w_fp[8], COUPs[0], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 8 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -381,10 +381,10 @@ namespace mg5amcCpu // *** DIAGRAM 9 OF 14 *** // Wavefunction(s) for diagram number 9 - FFV1_2( w_fp[5], w_fp[9], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[5], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 9 - FFV1_0( w_fp[10], w_fp[0], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[0], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 9 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -397,10 +397,10 @@ namespace mg5amcCpu // *** DIAGRAM 10 OF 14 *** // Wavefunction(s) for diagram number 10 - FFV1_1( w_fp[0], w_fp[9], COUPs[1], 0., 0., w_fp[10] ); + FFV1_1( w_fp[0], w_fp[9], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 10 - FFV1_0( w_fp[5], w_fp[10], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[5], w_fp[10], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 10 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -413,10 +413,10 @@ namespace mg5amcCpu // *** DIAGRAM 11 OF 14 *** // Wavefunction(s) for diagram number 11 - FFV1_2( w_fp[4], w_fp[6], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[4], w_fp[6], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 11 - FFV1_0( w_fp[10], w_fp[1], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[1], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 11 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -429,10 +429,10 @@ namespace mg5amcCpu // *** DIAGRAM 12 OF 14 *** // Wavefunction(s) for diagram number 12 - FFV1_2( w_fp[4], w_fp[8], COUPs[1], 0., 0., w_fp[10] ); + FFV1_2( w_fp[4], w_fp[8], COUPs[1], 1.0, 0., 0., w_fp[10] ); // Amplitude(s) for diagram number 12 - FFV1_0( w_fp[10], w_fp[1], w_fp[6], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[1], w_fp[6], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 12 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -445,10 +445,10 @@ namespace mg5amcCpu // *** DIAGRAM 13 OF 14 *** // Wavefunction(s) for diagram number 13 - FFV1_2( w_fp[4], w_fp[7], COUPs[1], 0., 0., w_fp[6] ); + FFV1_2( w_fp[4], w_fp[7], COUPs[1], 1.0, 0., 0., w_fp[6] ); // Amplitude(s) for diagram number 13 - FFV1_0( w_fp[6], w_fp[0], w_fp[8], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[6], w_fp[0], w_fp[8], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 13 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -464,7 +464,7 @@ namespace mg5amcCpu // (none) // Amplitude(s) for diagram number 14 - FFV1_0( w_fp[10], w_fp[0], w_fp[7], COUPs[1], &_fp[0] ); + FFV1_0( w_fp[10], w_fp[0], w_fp[7], COUPs[1], 1.0, &_fp[0] ); #ifdef MGONGPU_SUPPORTS_MULTICHANNEL if( channelId == 14 ) numerators_sv += cxabs2( amp_sv[0] ); if( channelId != 0 ) denominators_sv += cxabs2( amp_sv[0] ); @@ -1046,8 +1046,7 @@ namespace mg5amcCpu { // nprocesses>1 was last observed for "mirror processes" in uux_ttx in the 270 branch (see issue #343 and PRs #360 and #396) constexpr int nprocesses = 1; - static_assert( nprocesses == 1, "Assume nprocesses == 1" ); - // process_id corresponds to the index of DSIG1 Fortran functions (must be 1 because cudacpp is unable to handle DSIG2) + static_assert( nprocesses == 1 || nprocesses == 2, "Assume nprocesses == 1 or 2" ); constexpr int process_id = 1; // code generation source: madevent + cudacpp exporter static_assert( process_id == 1, "Assume process_id == 1" ); } diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/auto_dsig1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/auto_dsig1.f index 68d329862c..cad7f4197d 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/auto_dsig1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/auto_dsig1.f @@ -42,6 +42,7 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) C LOCAL VARIABLES C INTEGER I,ITYPE,LP,IPROC + DOUBLE PRECISION QSCALE DOUBLE PRECISION CX1,SX1,UX1,DX1 DOUBLE PRECISION CX2,SX2,UX2,DX2 DOUBLE PRECISION XPQ(-7:7),PD(0:MAXPROC) @@ -129,25 +130,30 @@ DOUBLE PRECISION FUNCTION DSIG1(PP,WGT,IMODE) IF (ABS(LPP(IB(1))).GE.1) THEN !LP=SIGN(1,LPP(IB(1))) - CX1=PDG2PDF(LPP(IB(1)),-4, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)) - $ )) - SX1=PDG2PDF(LPP(IB(1)),-3, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)) - $ )) - UX1=PDG2PDF(LPP(IB(1)),-2, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)) - $ )) - DX1=PDG2PDF(LPP(IB(1)),-1, IB(1),XBK(IB(1)),DSQRT(Q2FACT(IB(1)) - $ )) + IF (DSQRT(Q2FACT(IB(1))).EQ.0D0) THEN + QSCALE=0D0 + DO I=3,NEXTERNAL + QSCALE=QSCALE+DSQRT(MAX(0D0,(PP(0,I)+PP(3,I))*(PP(0,I) + $ -PP(3,I)))) + ENDDO + QSCALE=QSCALE/2D0 + ELSE + QSCALE=DSQRT(Q2FACT(IB(1))) + ENDIF + CX1=PDG2PDF(LPP(IB(1)),-4, IB(1),XBK(IB(1)), QSCALE) + SX1=PDG2PDF(LPP(IB(1)),-3, IB(1),XBK(IB(1)), QSCALE) + UX1=PDG2PDF(LPP(IB(1)),-2, IB(1),XBK(IB(1)), QSCALE) + DX1=PDG2PDF(LPP(IB(1)),-1, IB(1),XBK(IB(1)), QSCALE) ENDIF IF (ABS(LPP(IB(2))).GE.1) THEN !LP=SIGN(1,LPP(IB(2))) - CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) - DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)),DSQRT(Q2FACT(IB(2)) - $ )) + IF (DSQRT(Q2FACT(IB(2))).NE.0D0) THEN + QSCALE=DSQRT(Q2FACT(IB(2))) + ENDIF + CX2=PDG2PDF(LPP(IB(2)),-4, IB(2),XBK(IB(2)), QSCALE) + SX2=PDG2PDF(LPP(IB(2)),-3, IB(2),XBK(IB(2)), QSCALE) + UX2=PDG2PDF(LPP(IB(2)),-2, IB(2),XBK(IB(2)), QSCALE) + DX2=PDG2PDF(LPP(IB(2)),-1, IB(2),XBK(IB(2)), QSCALE) ENDIF PD(0) = 0D0 IPROC = 0 diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/matrix1.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/matrix1.f index b71e9c09c0..7897026c9e 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/matrix1.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/P2_uxux_ttxuxux/matrix1.f @@ -544,30 +544,30 @@ REAL*8 FUNCTION MATRIX1(P,NHEL,IC, IHEL,AMP2, JAMP2, IVEC) TMP_JAMP(3) = AMP(1) + AMP(4) ! used 3 times TMP_JAMP(2) = AMP(2) + AMP(5) ! used 3 times TMP_JAMP(1) = AMP(1) + AMP(2) ! used 3 times - TMP_JAMP(16) = TMP_JAMP(8) + TMP_JAMP(5) ! used 2 times - TMP_JAMP(15) = TMP_JAMP(9) + TMP_JAMP(5) ! used 2 times - TMP_JAMP(14) = TMP_JAMP(9) + TMP_JAMP(8) ! used 2 times - TMP_JAMP(13) = TMP_JAMP(10) + TMP_JAMP(4) ! used 2 times - TMP_JAMP(12) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times - TMP_JAMP(11) = TMP_JAMP(10) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(16) = TMP_JAMP(10) + TMP_JAMP(4) ! used 2 times + TMP_JAMP(15) = TMP_JAMP(10) + TMP_JAMP(1) ! used 2 times + TMP_JAMP(14) = TMP_JAMP(9) + TMP_JAMP(5) ! used 2 times + TMP_JAMP(13) = TMP_JAMP(9) + TMP_JAMP(8) ! used 2 times + TMP_JAMP(12) = TMP_JAMP(8) + TMP_JAMP(5) ! used 2 times + TMP_JAMP(11) = TMP_JAMP(4) + TMP_JAMP(1) ! used 2 times JAMP(1,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(13)+(2.500000000000000D-01) - $ *TMP_JAMP(2)+(8.333333333333333D-02)*TMP_JAMP(16) + $ *TMP_JAMP(2)+(8.333333333333333D-02)*TMP_JAMP(12) JAMP(2,1) = ((0.000000000000000D+00,2.500000000000000D-01)) $ *AMP(8)+(-2.500000000000000D-01)*AMP(12)+(-2.500000000000000D - $ -01)*TMP_JAMP(6)+(-8.333333333333333D-02)*TMP_JAMP(11) + $ -01)*TMP_JAMP(6)+(-8.333333333333333D-02)*TMP_JAMP(15) JAMP(3,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(8)+(-2.500000000000000D-01)*AMP(11)+(-2.500000000000000D - $ -01)*TMP_JAMP(7)+(-8.333333333333333D-02)*TMP_JAMP(12) - JAMP(4,1) = (2.777777777777778D-02)*TMP_JAMP(4) + $ -01)*TMP_JAMP(7)+(-8.333333333333333D-02)*TMP_JAMP(11) + JAMP(4,1) = (2.777777777777778D-02)*TMP_JAMP(10) $ +(2.777777777777778D-02)*TMP_JAMP(11)+(8.333333333333333D-02) - $ *TMP_JAMP(14) + $ *TMP_JAMP(13) JAMP(5,1) = ((0.000000000000000D+00,-2.500000000000000D-01)) $ *AMP(3)+(2.500000000000000D-01)*AMP(14)+(2.500000000000000D-01) - $ *TMP_JAMP(3)+(8.333333333333333D-02)*TMP_JAMP(15) - JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(5)+( - $ -8.333333333333333D-02)*TMP_JAMP(13)+(-2.777777777777778D-02) - $ *TMP_JAMP(14) + $ *TMP_JAMP(3)+(8.333333333333333D-02)*TMP_JAMP(14) + JAMP(6,1) = (-2.777777777777778D-02)*TMP_JAMP(9)+( + $ -2.777777777777778D-02)*TMP_JAMP(12)+(-8.333333333333333D-02) + $ *TMP_JAMP(16) IF(INIT_MODE)THEN DO I=1, NGRAPHS diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/cudacpp.mk b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/cudacpp.mk index 43cee0977e..15669185ad 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/cudacpp.mk +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/cudacpp.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: different names (e.g. cudacpp.mk and cudacpp_src.mk) are used in the Subprocess and src directories @@ -86,6 +86,14 @@ endif #------------------------------------------------------------------------------- +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(MAKECMDGOALS)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + +#------------------------------------------------------------------------------- + #=== Configure the C++ compiler CXXFLAGS = $(OPTFLAGS) -std=c++17 $(INCFLAGS) -Wall -Wshadow -Wextra @@ -103,70 +111,73 @@ endif #------------------------------------------------------------------------------- -#=== Configure the CUDA compiler - -# If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) -# This is because it is impossible to pass this to "CUFLAGS += -ccbin " below -ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside - $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") - override CUDA_HOME=disabled -endif - -# If CUDA_HOME is not set, try to set it from the location of nvcc -ifndef CUDA_HOME - CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) - $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") -endif - -# Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists -ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) - NVCC = $(CUDA_HOME)/bin/nvcc - USE_NVTX ?=-DUSE_NVTX - # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html - # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). - # Embed device code for 70, and PTX for 70+. - # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). - # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). - MADGRAPH_CUDA_ARCHITECTURE ?= 70 - ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 - ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 - comma:=, - CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) - CUINC = -I$(CUDA_HOME)/include/ - CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! - CUOPTFLAGS = -lineinfo - CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math - ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow - ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) - CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h - # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) - ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) -else ifneq ($(origin REQUIRE_CUDA),undefined) - # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) - $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) -else - # No cuda. Switch cuda compilation off and go to common random numbers in C++ - $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) - override NVCC= - override USE_NVTX= - override CUINC= - override CURANDLIBFLAGS= -endif -export NVCC -export CUFLAGS +#=== Configure the CUDA compiler for the CUDA target -# Set the host C++ compiler for nvcc via "-ccbin " -# (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) -CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) +ifneq (,$(findstring $(MAKECMDGOALS),cuda-gcheck-runGcheck-runFGcheck-cmpFGcheck-memcheck)) + # If CXX is not a single word (example "clang++ --gcc-toolchain...") then disable CUDA builds (issue #505) + # This is because it is impossible to pass this to "CUFLAGS += -ccbin " below + ifneq ($(words $(subst ccache ,,$(CXX))),1) # allow at most "CXX=ccache " from outside + $(warning CUDA builds are not supported for multi-word CXX "$(CXX)") + override CUDA_HOME=disabled + endif -# Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) -ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) -CUFLAGS += -allow-unsupported-compiler -endif + # If CUDA_HOME is not set, try to set it from the location of nvcc + ifndef CUDA_HOME + CUDA_HOME = $(patsubst %bin/nvcc,%,$(shell which nvcc 2>/dev/null)) + $(warning CUDA_HOME was not set: using "$(CUDA_HOME)") + endif + + # Set NVCC as $(CUDA_HOME)/bin/nvcc if it exists + ifneq ($(wildcard $(CUDA_HOME)/bin/nvcc),) + NVCC = $(CUDA_HOME)/bin/nvcc + USE_NVTX ?=-DUSE_NVTX + # See https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html + # See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ + # Default: use compute capability 70 for V100 (CERN lxbatch, CERN itscrd, Juwels Cluster). + # Embed device code for 70, and PTX for 70+. + # Export MADGRAPH_CUDA_ARCHITECTURE (comma-separated list) to use another value or list of values (see #533). + # Examples: use 60 for P100 (Piz Daint), 80 for A100 (Juwels Booster, NVidia raplab/Curiosity). + MADGRAPH_CUDA_ARCHITECTURE ?= 70 + ###CUARCHFLAGS = -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=compute_$(MADGRAPH_CUDA_ARCHITECTURE) -gencode arch=compute_$(MADGRAPH_CUDA_ARCHITECTURE),code=sm_$(MADGRAPH_CUDA_ARCHITECTURE) # Older implementation (AV): go back to this one for multi-GPU support #533 + ###CUARCHFLAGS = --gpu-architecture=compute_$(MADGRAPH_CUDA_ARCHITECTURE) --gpu-code=sm_$(MADGRAPH_CUDA_ARCHITECTURE),compute_$(MADGRAPH_CUDA_ARCHITECTURE) # Newer implementation (SH): cannot use this as-is for multi-GPU support #533 + comma:=, + CUARCHFLAGS = $(foreach arch,$(subst $(comma), ,$(MADGRAPH_CUDA_ARCHITECTURE)),-gencode arch=compute_$(arch),code=compute_$(arch) -gencode arch=compute_$(arch),code=sm_$(arch)) + CUINC = -I$(CUDA_HOME)/include/ + CURANDLIBFLAGS = -L$(CUDA_HOME)/lib64/ -lcurand # NB: -lcuda is not needed here! + CUOPTFLAGS = -lineinfo + CUFLAGS = $(foreach opt, $(OPTFLAGS), -Xcompiler $(opt)) $(CUOPTFLAGS) $(INCFLAGS) $(CUINC) $(USE_NVTX) $(CUARCHFLAGS) -use_fast_math + ###CUFLAGS += -Xcompiler -Wall -Xcompiler -Wextra -Xcompiler -Wshadow + ###NVCC_VERSION = $(shell $(NVCC) --version | grep 'Cuda compilation tools' | cut -d' ' -f5 | cut -d, -f1) + CUFLAGS += -std=c++17 # need CUDA >= 11.2 (see #333): this is enforced in mgOnGpuConfig.h + # Without -maxrregcount: baseline throughput: 6.5E8 (16384 32 12) up to 7.3E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 160 # improves throughput: 6.9E8 (16384 32 12) up to 7.7E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 128 # improves throughput: 7.3E8 (16384 32 12) up to 7.6E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 96 # degrades throughput: 4.1E8 (16384 32 12) up to 4.5E8 (65536 128 12) + ###CUFLAGS+= --maxrregcount 64 # degrades throughput: 1.7E8 (16384 32 12) flat at 1.7E8 (65536 128 12) + else ifneq ($(origin REQUIRE_CUDA),undefined) + # If REQUIRE_CUDA is set but no cuda is found, stop here (e.g. for CI tests on GPU #443) + $(error No cuda installation found (set CUDA_HOME or make nvcc visible in PATH)) + else + # No cuda. Switch cuda compilation off and go to common random numbers in C++ + $(warning CUDA_HOME is not set or is invalid: export CUDA_HOME to compile with cuda) + override NVCC= + override USE_NVTX= + override CUINC= + override CURANDLIBFLAGS= + endif + export NVCC + export CUFLAGS + + # Set the host C++ compiler for nvcc via "-ccbin " + # (NB issue #505: this must be a single word, "clang++ --gcc-toolchain..." is not supported) + CUFLAGS += -ccbin $(shell which $(subst ccache ,,$(CXX))) + + # Allow newer (unsupported) C++ compilers with older versions of CUDA if ALLOW_UNSUPPORTED_COMPILER_IN_CUDA is set (#504) + ifneq ($(origin ALLOW_UNSUPPORTED_COMPILER_IN_CUDA),undefined) + CUFLAGS += -allow-unsupported-compiler + endif + +endif # ($(MAKECMDGOALS),cuda) #------------------------------------------------------------------------------- @@ -226,32 +237,6 @@ override OMPFLAGS = -fopenmp ###override OMPFLAGS = # disable OpenMP MT (default before #575) endif -# Set the default AVX (vectorization) choice -ifeq ($(AVX),) - ifeq ($(UNAME_P),ppc64le) - ###override AVX = none - override AVX = sse4 - else ifeq ($(UNAME_P),arm) - ###override AVX = none - override AVX = sse4 - else ifeq ($(wildcard /proc/cpuinfo),) - override AVX = none - $(warning Using AVX='$(AVX)' because host SIMD features cannot be read from /proc/cpuinfo) - else ifeq ($(shell grep -m1 -c avx512vl /proc/cpuinfo)$(shell $(CXX) --version | grep ^clang),1) - override AVX = 512y - ###$(info Using AVX='$(AVX)' as no user input exists) - else - override AVX = avx2 - ifneq ($(shell grep -m1 -c avx512vl /proc/cpuinfo),1) - $(warning Using AVX='$(AVX)' because host does not support avx512vl) - else - $(warning Using AVX='$(AVX)' because this is faster than avx512vl for clang) - endif - endif -else - ###$(info Using AVX='$(AVX)' according to user input) -endif - # Set the default FPTYPE (floating point type) choice ifeq ($(FPTYPE),) override FPTYPE = d @@ -276,6 +261,21 @@ ifeq ($(RNDGEN),) endif endif +# set the correct AVX based on avxcpp target +ifeq ($(MAKECMDGOALS),cppnone) # no SIMD + override AVX = none +else ifeq ($(MAKECMDGOALS),cppsse4) # SSE4.2 with 128 width (xmm registers) + override AVX = sse4 +else ifeq ($(MAKECMDGOALS),cppavx2) # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + override AVX = avx2 +else ifeq ($(MAKECMDGOALS),cpp512y) # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + override AVX = 512y +else ifeq ($(MAKECMDGOALS),cpp512z) # AVX512 with 512 width (zmm registers) + override AVX = 512z +else + override AVX = none +endif + # Export AVX, FPTYPE, HELINL, HRDCOD, RNDGEN, OMPFLAGS so that it is not necessary to pass them to the src Makefile too export AVX export FPTYPE @@ -295,50 +295,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(findstring cpp,$(MAKECMDGOALS)),cpp) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") $(info FPTYPE=$(FPTYPE)) @@ -389,11 +391,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ifeq ($(USEBUILDDIR),1) @@ -448,9 +458,9 @@ endif testmain=$(BUILDDIR)/runTest.exe ifneq ($(GTESTLIBS),) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) $(testmain) else -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so $(cu_main) $(cxx_main) $(fcu_main) $(fcxx_main) endif # Target (and build options): debug @@ -460,27 +470,20 @@ debug: CUOPTFLAGS = -G debug: MAKEDEBUG := debug debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -$(BUILDDIR)/.build.$(TAG): - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @if [ "$(oldtagsb)" != "" ]; then echo "Cannot build for tag=$(TAG) as old builds exist for other tags:"; echo " $(oldtagsb)"; echo "Please run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @touch $(BUILDDIR)/.build.$(TAG) - # Generic target and build rules: objects from CUDA compilation ifneq ($(NVCC),) -$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cu *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c $< -o $@ -$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ endif # Generic target and build rules: objects from C++ compilation # (NB do not include CUINC here! add it only for NVTX or curand #679) -$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h ../../src/*.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ @@ -532,7 +535,7 @@ endif # Target (and build rules): common (src) library commonlib : $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so -$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(BUILDDIR)/.build.$(TAG) +$(LIBDIR)/lib$(MG5AMC_COMMONLIB).so: ../../src/*.h ../../src/*.cc $(MAKE) -C ../../src $(MAKEDEBUG) -f $(CUDACPP_SRC_MAKEFILE) #------------------------------------------------------------------------------- @@ -711,35 +714,27 @@ endif # Target: build all targets in all AVX modes (each AVX mode in a separate build directory) # Split the avxall target into five separate targets to allow parallel 'make -j avxall' builds # (Hack: add a fbridge.inc dependency to avxall, to ensure it is only copied once for all AVX modes) -avxnone: - @echo - $(MAKE) USEBUILDDIR=1 AVX=none -f $(CUDACPP_MAKEFILE) +cppnone: $(cxx_main) -avxsse4: - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 -f $(CUDACPP_MAKEFILE) +cppsse4: $(cxx_main) -avxavx2: - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 -f $(CUDACPP_MAKEFILE) +cppavx2: $(cxx_main) -avx512y: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y -f $(CUDACPP_MAKEFILE) +cpp512y: $(cxx_main) -avx512z: - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z -f $(CUDACPP_MAKEFILE) +cpp512z: $(cxx_main) + +cuda: $(cu_main) ifeq ($(UNAME_P),ppc64le) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ifeq ($(UNAME_P),arm) ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 -avxall: avxnone avxsse4 +cppall: cppnone cppsse4 else ###avxall: $(INCDIR)/fbridge.inc avxnone avxsse4 avxavx2 avx512y avx512z -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: cppnone cppsse4 cppavx2 cpp512y cpp512z endif #------------------------------------------------------------------------------- @@ -747,21 +742,31 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, Only one build directory found.) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) else - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so endif $(MAKE) -C ../../src clean -f $(CUDACPP_SRC_MAKEFILE) -### rm -rf $(INCDIR) cleanall: @echo - $(MAKE) USEBUILDDIR=0 clean -f $(CUDACPP_MAKEFILE) + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + rm -f $(LIBDIR)/lib$(MG5AMC_CXXLIB).so $(LIBDIR)/lib$(MG5AMC_CULIB).so @echo - $(MAKE) USEBUILDDIR=0 -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) + $(MAKE) -C ../../src cleanall -f $(CUDACPP_SRC_MAKEFILE) rm -rf build.* # Target: clean the builds as well as the gtest installation(s) @@ -771,6 +776,42 @@ ifneq ($(wildcard $(TESTDIRCOMMON)),) endif $(MAKE) -C $(TESTDIRLOCAL) clean +# Target: clean different builds +cleannone: + rm -rf build.none_* + rm -f ../../lib/build.none_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleannone -f $(CUDACPP_SRC_MAKEFILE) + +cleansse4: + rm -rf build.sse4_* + rm -f ../../lib/build.sse4_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleansse4 -f $(CUDACPP_SRC_MAKEFILE) + +cleanavx2: + rm -rf build.avx2_* + rm -f ../../lib/build.avx2_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src cleanavx2 -f $(CUDACPP_SRC_MAKEFILE) + +clean512y: + rm -rf build.512y_* + rm -f ../../lib/build.512y_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512y -f $(CUDACPP_SRC_MAKEFILE) + +clean512z: + rm -rf build.512z_* + rm -f ../../lib/build.512z_*/lib$(MG5AMC_CXXLIB).so + $(MAKE) -C ../../src clean512z -f $(CUDACPP_SRC_MAKEFILE) + +cleancuda: + rm -rf build.cuda_* + rm -f ../../lib/build.cuda_*/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleancuda -f $(CUDACPP_SRC_MAKEFILE) + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../../lib/lib$(MG5AMC_CXXLIB).so ../../lib/lib$(MG5AMC_CULIB).so + $(MAKE) -C ../../src cleandir -f $(CUDACPP_SRC_MAKEFILE) + #------------------------------------------------------------------------------- # Target: show system and compiler information @@ -817,13 +858,10 @@ endif #------------------------------------------------------------------------------- -# Target: check (run the C++ test executable) +# Target: check/gcheck (run the C++ test executable) # [NB THIS IS WHAT IS USED IN THE GITHUB CI!] -ifneq ($(NVCC),) -check: runTest cmpFcheck cmpFGcheck -else check: runTest cmpFcheck -endif +gcheck: runTest cmpFGcheck # Target: runTest (run the C++ test executable runTest.exe) runTest: all.$(TAG) @@ -863,4 +901,4 @@ cmpFGcheck: all.$(TAG) memcheck: all.$(TAG) $(RUNTIME) $(CUDA_HOME)/bin/cuda-memcheck --check-api-memory-access yes --check-deprecated-instr yes --check-device-heap yes --demangle full --language c --leak-check full --racecheck-report all --report-api-errors all --show-backtrace yes --tool memcheck --track-unused-memory yes $(BUILDDIR)/gcheck.exe -p 2 32 2 -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- \ No newline at end of file diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/dummy_fct.f b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/dummy_fct.f index 076cf29d67..4f7a204b8f 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/dummy_fct.f +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/dummy_fct.f @@ -32,7 +32,7 @@ logical FUNCTION dummy_cuts(P) LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL) logical do_cuts(nexternal) COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY, - . IS_A_ONIUM, do_cuts + & IS_A_ONIUM, do_cuts dummy_cuts=.true. @@ -118,15 +118,16 @@ double precision function user_dynamical_scale(P) C ************************************************************ -C default for the library implementing a dummt bias function +C default for the library implementing a dummy bias function C ************************************************************ subroutine bias_wgt_custom(p, original_weight, bias_weight) - implicit none + implicit none C C Parameters C include 'nexternal.inc' -C + +C C Arguments C double precision p(0:3, nexternal) @@ -161,3 +162,4 @@ subroutine bias_wgt_custom(p, original_weight, bias_weight) return end subroutine bias_wgt_custom + diff --git a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/makefile b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/makefile index 74db44d848..093bc84271 100644 --- a/epochX/cudacpp/pp_tt012j.mad/SubProcesses/makefile +++ b/epochX/cudacpp/pp_tt012j.mad/SubProcesses/makefile @@ -9,6 +9,33 @@ FFLAGS+= -cpp # Compile counters with -O3 as in the cudacpp makefile (avoid being "unfair" to Fortran #740) CXXFLAGS = -O3 -Wall -Wshadow -Wextra +# Sets correct target based on MAKECMDGOALS +ifeq ($(MAKECMDGOALS),) + TARGET := undefined +else + ifeq ($(shell grep -q madevent_ <<< $(MAKECMDGOALS)a),) + TARGET := $(word 2,($(subst _, ,$(MAKECMDGOALS)))) + else + TARGET := $(MAKECMDGOALS) + endif +endif + +# Sets correct cppavx target as dependency when compiling Fortran +ifeq ($(shell grep -q cpp <<< $(MAKECMDGOALS)a),) + ifeq ($(TARGET),cpp) + CPPTARGET := cppavx2 + else + CPPTARGET := $(TARGET) + endif +endif + +# Default goal +.DEFAULT_GOAL := usage + +# Target if user does not specify target +usage: + $(error Unknown target='$(TARGET)': only 'cppnone', 'cppsse4', 'cppavx2', 'cpp512y', 'cpp512z' and 'cuda' are supported!) + # Enable ccache if USECCACHE=1 ifeq ($(USECCACHE)$(shell echo $(CXX) | grep ccache),1) override CXX:=ccache $(CXX) @@ -48,10 +75,10 @@ CUDACPP_MAKEFILE=cudacpp.mk # NB2 Use '|&' in CUDACPP_BUILDDIR to avoid confusing errors about googletest #507 # NB3 Do not add a comment inlined "CUDACPP_BUILDDIR=$(shell ...) # comment" as otherwise a trailing space is included... # NB4 The variables relevant to the cudacpp Makefile must be explicitly passed to $(shell...) -CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|AVX|FPTYPE|HELINL|HRDCOD)") +CUDACPP_MAKEENV:=$(shell echo '$(.VARIABLES)' | tr " " "\n" | egrep "(USEBUILDDIR|FPTYPE|HELINL|HRDCOD)") ###$(info CUDACPP_MAKEENV=$(CUDACPP_MAKEENV)) ###$(info $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))")) -CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn |& awk '/Building/{print $$3}' | sed s/BUILDDIR=//) +CUDACPP_BUILDDIR:=$(shell $(MAKE) $(foreach v,$(CUDACPP_MAKEENV),$(v)="$($(v))") -f $(CUDACPP_MAKEFILE) -pn $(TARGET) 2>/dev/null | awk '/Building/{print $$3}' | sed s/BUILDDIR=//) ifeq ($(CUDACPP_BUILDDIR),) $(error CUDACPP_BUILDDIR='$(CUDACPP_BUILDDIR)' should not be empty!) else @@ -89,7 +116,7 @@ SYMMETRY = symmetry.o idenparts.o # Binaries -LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 +#LDFLAGS+=-Wl,--no-relax # avoid 'failed to convert GOTPCREL relocation' error #458 (flag not universal -> skip?) all: $(PROG)_fortran $(CUDACPP_BUILDDIR)/$(PROG)_cpp # also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (#503) @@ -115,10 +142,6 @@ $(LIBS): .libs cd ../../Source; make touch $@ -$(CUDACPP_BUILDDIR)/.cudacpplibs: - $(MAKE) -f $(CUDACPP_MAKEFILE) - touch $@ - # On Linux, set rpath to LIBDIR to make it unnecessary to use LD_LIBRARY_PATH # Use relative paths with respect to the executables ($ORIGIN on Linux) # On Darwin, building libraries with absolute paths in LIBDIR makes this unnecessary @@ -130,26 +153,47 @@ else override LIBFLAGSRPATH = -Wl,-rpath,'$$ORIGIN/$(LIBDIR)' endif -.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link +.PHONY: madevent_fortran_link madevent_cuda_link madevent_cpp_link madevent_cppnone_link madevent_cppsse4_link madevent_cppavx2_link madevent_cpp512y_link madevent_cpp512z_link madevent_fortran_link: $(PROG)_fortran rm -f $(PROG) ln -s $(PROG)_fortran $(PROG) +# Only used for testing, should be removed in the future madevent_cpp_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) +madevent_cppnone_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppsse4_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cppavx2_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512y_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + +madevent_cpp512z_link: $(CUDACPP_BUILDDIR)/$(PROG)_cpp + rm -f $(PROG) + ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROG) + madevent_cuda_link: $(CUDACPP_BUILDDIR)/$(PROG)_cuda rm -f $(PROG) ln -s $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROG) # Building $(PROG)_cpp also builds $(PROG)_cuda if $(CUDACPP_CULIB) exists (improved patch for cpp-only builds #503) -$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CUDACPP_BUILDDIR)/.cudacpplibs +$(CUDACPP_BUILDDIR)/$(PROG)_cpp: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o $(CPPTARGET) $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CXXLIB) $(LIBFLAGSRPATH) $(LDFLAGS) - if [ -f $(LIBDIR)/$(CUDACPP_BUILDDIR)/lib$(CUDACPP_CULIB).* ]; then $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS); fi -$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(CUDACPP_BUILDDIR)/$(PROG)_cpp +$(CUDACPP_BUILDDIR)/$(PROG)_cuda: $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(LIBS) $(MATRIX) counters.o ompnumthreads.o cuda + $(FC) -o $(CUDACPP_BUILDDIR)/$(PROG)_cuda $(PROCESS) $(DSIG_cudacpp) auto_dsig.o $(MATRIX) $(LINKLIBS) $(BIASDEPENDENCIES) $(OMPFLAGS) counters.o ompnumthreads.o -L$(LIBDIR)/$(CUDACPP_BUILDDIR) -l$(CUDACPP_COMMONLIB) -l$(CUDACPP_CULIB) $(LIBFLAGSRPATH) $(LDFLAGS) counters.o: counters.cc timer.h $(CXX) $(CXXFLAGS) -c $< -o $@ @@ -215,49 +259,105 @@ genps.o: .libs UNAME_P := $(shell uname -p) ifeq ($(UNAME_P),ppc64le) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else ifeq ($(UNAME_P),arm) -avxall: avxnone avxsse4 +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 else -avxall: avxnone avxsse4 avxavx2 avx512y avx512z +cppall: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z endif -avxnone: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=none +ALL: + $(MAKE) USEBUILDDIR=1 cppnone + $(MAKE) USEBUILDDIR=1 cppsse4 + $(MAKE) USEBUILDDIR=1 cppavx2 + $(MAKE) USEBUILDDIR=1 cpp512y + $(MAKE) USEBUILDDIR=1 cpp512z + $(MAKE) USEBUILDDIR=1 cuda -avxsse4: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=sse4 +cppnone: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppnone -avxavx2: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=avx2 +cppsse4: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppsse4 -avx512y: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512y +cppavx2: + $(MAKE) -f $(CUDACPP_MAKEFILE) cppavx2 -avx512z: $(PROG)_fortran $(DSIG_cudacpp) - @echo - $(MAKE) USEBUILDDIR=1 AVX=512z +cpp512y: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512y -###endif +cpp512z: + $(MAKE) -f $(CUDACPP_MAKEFILE) cpp512z + +cuda: + $(MAKE) -f $(CUDACPP_MAKEFILE) cuda # Clean (NB: 'make clean' in Source calls 'make clean' in all P*) -clean: # Clean builds: fortran in this Pn; cudacpp executables for one AVX in this Pn - $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel $(CUDACPP_BUILDDIR)/$(PROG)_cpp $(CUDACPP_BUILDDIR)/$(PROG)_cuda +BUILD_DIRS := $(wildcard build.*) +BUILD_TARGET_DIR := $(shell echo $(BUILD_DIRS) | awk -F '[._]' '{print $$2}') +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + +clean: +ifeq ($(USEBUILDDIR),1) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only cleaning build dir.) + $(RM) -r $(BUILD_DIRS) + $(MAKE) -f $(CUDACPP_MAKEFILE) clean$(BUILD_TARGET_DIR) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no build directories are found.) +else + $(error Multiple BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + $(info USEBUILDDIR=0 only cleaning build with no dir.) + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel ./$(PROG)_* + $(MAKE) -f $(CUDACPP_MAKEFILE) cleandir + $(RM) $(CUDACPP_BUILDDIR)/.*libs +endif + +cleannone: # Clean builds: fortran in this Pn; cpp executables for one AVX in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.none_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleannone + +cleansse4: # Clean build: fortran in this Pn; cpp executables for cppsse4 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.sse4_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleansse4 + +cleanavx2: # Clean build: fortran in this Pn; cpp executables for cppavx2 in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.avx2_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) cleanavx2 + +clean512y: # Clean build: fortran in this Pn; cpp executables for cpp512y in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512y_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512y + +clean512z: # Clean build: fortran in this Pn; cpp executables for cpp512z in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.512z_*/$(PROG)_cpp + $(MAKE) -f $(CUDACPP_MAKEFILE) clean512z + +cleancuda: # Clean build: fortran in this Pn; cuda executables in this Pn + $(RM) *.o gensym $(PROG) $(PROG)_fortran $(PROG)_forhel build.cuda_*/$(PROG)_cuda + $(MAKE) -f $(CUDACPP_MAKEFILE) cleancuda cleanavxs: clean # Clean builds: fortran in this Pn; cudacpp for all AVX in this Pn and in src $(MAKE) -f $(CUDACPP_MAKEFILE) cleanall - rm -f $(CUDACPP_BUILDDIR)/.cudacpplibs - rm -f .libs + $(RM) $(CUDACPP_BUILDDIR)/.*libs + $(RM) .libs cleanall: # Clean builds: fortran in all P* and in Source; cudacpp for all AVX in all P* and in src make -C ../../Source cleanall - rm -rf $(LIBDIR)libbias.$(libext) - rm -f ../../Source/*.mod ../../Source/*/*.mod + $(RM) -r $(LIBDIR)libbias.$(libext) + $(RM) ../../Source/*.mod ../../Source/*/*.mod distclean: cleanall # Clean all fortran and cudacpp builds as well as the googletest installation $(MAKE) -f $(CUDACPP_MAKEFILE) distclean diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/generate_events b/epochX/cudacpp/pp_tt012j.mad/bin/generate_events index 107313b25d..5577cc66a0 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/generate_events +++ b/epochX/cudacpp/pp_tt012j.mad/bin/generate_events @@ -46,7 +46,7 @@ if __debug__ and (not os.path.exists(pjoin(root_path,'../..', 'bin','create_rele sys.path.append(pjoin(root_path,'bin','internal')) import madevent_interface as ME - +import misc as misc import logging import logging.config @@ -160,17 +160,31 @@ if '__main__' == __name__: # Check that python version is valid set_configuration() - argument = sys.argv + argument = sys.argv + + # check for plugin customization of the launch command + launch_interface = ME.MadEventCmdShell + if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + + try: if '-h' in argument or '--help' in argument: - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.exec_cmd('help generate_events') sys.exit() elif len(argument) > 1 and argument[1] in ['0', '1', '2']: argument = treat_old_argument(argument) with ME.MadEventCmdShell.RunWebHandling(root_path, ): - launch = ME.MadEventCmdShell(me_dir=root_path, force_run=True) + launch = launch_interface(me_dir=root_path, force_run=True) launch.run_cmd('generate_events %s' % ' '.join(argument[1:])) launch.run_cmd('quit') except ME.MadEventAlreadyRunning as message: diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/banner.py b/epochX/cudacpp/pp_tt012j.mad/bin/internal/banner.py index 7624b9f557..824815f47b 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/internal/banner.py +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/banner.py @@ -537,7 +537,7 @@ def charge_card(self, tag): self.param_card = param_card_reader.ParamCard(param_card) return self.param_card elif tag == 'mgruncard': - self.run_card = RunCard(self[tag]) + self.run_card = RunCard(self[tag], unknown_warning=False) return self.run_card elif tag == 'mg5proccard': proc_card = self[tag].split('\n') @@ -1002,13 +1002,14 @@ def __init__(self, finput=None, **opt): self.allowed_value = {} self.default_setup() + self.plugin_input(finput) # if input is define read that input if isinstance(finput, (file, str, StringIO.StringIO)): self.read(finput, **opt) - self.plugin_input(finput) + def plugin_input(self, finput=None): @@ -2624,6 +2625,7 @@ class RunCard(ConfigFile): default_include_file = 'run_card.inc' default_autodef_file = 'run.inc' donewarning = [] + include_as_parameter = [] def plugin_input(self, finput): @@ -2670,18 +2672,40 @@ def __new__(cls, finput=None, **opt): elif isinstance(finput, cls): target_class = finput.__class__ elif isinstance(finput, str): + path = finput if '\n' not in finput: finput = open(finput).read() if 'req_acc_FO' in finput: target_class = RunCardNLO else: target_class = RunCardLO + if MADEVENT and os.path.exists(pjoin(MEDIR, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(MEDIR, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + elif not MADEVENT and os.path.exists(path.replace('run_card.dat', '../bin/internal/launch_plugin.py')): + misc.sprint('try to use plugin class') + pydir = path.replace('run_card.dat', '../bin/internal/') + with misc.TMP_variable(sys, 'path', sys.path + [pydir]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + target_class = launch_plugin.RunCard + else: return None target_class.fill_post_set_from_blocks() - - return super(RunCard, cls).__new__(target_class, finput, **opt) + out = super(RunCard, cls).__new__(target_class, finput, **opt) + if not isinstance(out, RunCard): #should not happen but in presence of missmatch of library loaded. + out.__init__(finput, **opt) + return out else: return super(RunCard, cls).__new__(cls, finput, **opt) @@ -2709,7 +2733,7 @@ def __init__(self, *args, **opts): self.system_default = {} self.display_block = [] # set some block to be displayed - + self.fct_mod = {} # {param: (fct_pointer, *argument, **opts)} self.cut_class = {} self.warned=False @@ -2746,7 +2770,7 @@ def get_lepton_densities(cls): def add_param(self, name, value, fortran_name=None, include=True, hidden=False, legacy=False, cut=False, system=False, sys_default=None, - autodef=False, + autodef=False, fct_mod=None, **opts): """ add a parameter to the card. value is the default value and defines the type (int/float/bool/str) of the input. @@ -2760,6 +2784,7 @@ def add_param(self, name, value, fortran_name=None, include=True, If a path (Source/PDF/pdf.inc) the definition will be added within that file Default is False (does not add the definition) entry added in the run_card will automatically have this on True. + fct_mod: defines a function to run if the parameter is modify in the include file options of **opts: - allowed: list of valid options. '*' means anything else should be allowed. empty list means anything possible as well. @@ -2784,8 +2809,12 @@ def add_param(self, name, value, fortran_name=None, include=True, if autodef: self.definition_path[autodef].append(name) self.user_set.add(name) + # function to trigger if a value is modified in the include file + # main target is action to force correct recompilation (like for compilation flag/...) + if fct_mod: + self.fct_mod[name] = fct_mod - def read(self, finput, consistency=True): + def read(self, finput, consistency=True, unknown_warning=True): """Read the input file, this can be a path to a file, a file object, a str with the content of the file.""" @@ -2793,6 +2822,7 @@ def read(self, finput, consistency=True): if "\n" in finput: finput = finput.split('\n') elif os.path.isfile(finput): + self.path = finput finput = open(finput) else: raise Exception("No such file %s" % finput) @@ -2807,7 +2837,7 @@ def read(self, finput, consistency=True): name = name.lower().strip() if name not in self: #looks like an entry added by a user -> add it nicely - self.add_unknown_entry(name, value) + self.add_unknown_entry(name, value, unknown_warning) else: self.set( name, value, user=True) # parameter not set in the run_card can be set to compatiblity value @@ -2819,7 +2849,7 @@ def read(self, finput, consistency=True): logger.warning(str(error)) else: raise - def add_unknown_entry(self, name, value): + def add_unknown_entry(self, name, value, unknow_warning): """function to add an entry to the run_card when the associated parameter does not exists. This is based on the guess_entry_fromname for the various syntax providing input. This then call add_param accordingly. @@ -2858,7 +2888,7 @@ def add_unknown_entry(self, name, value): raise Exception("dictionary need to have at least one entry") default['dict']['__type__'] = default[self.guess_type_from_value(default_value[0])] - if name not in RunCard.donewarning: + if name not in RunCard.donewarning and unknow_warning: logger.warning("Found unexpected entry in run_card: \"%s\" with value \"%s\".\n"+\ " The type was assigned to %s. \n"+\ " The definition of that variable will %sbe automatically added to fortran file %s\n"+\ @@ -2896,7 +2926,16 @@ def valid_line(self, line, tmp): return False else: return True - + + + def reset_simd(self, old_value, new_value, name, *args, **opts): + raise Exception('pass in reset simd') + + def make_clean(self,old_value, new_value, name, dir): + raise Exception('pass make clean for ', dir) + + def make_Ptouch(self,old_value, new_value, name, reset): + raise Exception('pass Ptouch for ', reset) def write(self, output_file, template=None, python_template=False, write_hidden=False, template_options=None, **opt): @@ -3071,6 +3110,77 @@ def write(self, output_file, template=None, python_template=False, else: output_file.write(text) + def get_last_value_include(self, output_dir): + """For paraeter in self.fct_mod + parse the associate inc file to get the value of the previous run. + We return a dictionary {name: old_value} + if inc file does not exist we will return the current value (i.e. set has no change) + """ + + #remember that + # default_include_file is a class variable + # self.includepath is on the form include_path : [list of param ] + out = {} + + # setup inc_to_parse to be like self.includepath (include_path : [list of param ]) + # BUT only containing the parameter that need to be tracked for the fct_mod option + inc_to_parse = {} + for inc_file, params in self.includepath.items(): + if not inc_file: + continue + if any(p in params for p in self.fct_mod): + inc_to_parse[inc_file] = [name for name in self.includepath[inc_file] if name in self.fct_mod] + + # now loop over the files and ask the associate function + for inc_file, params in inc_to_parse.items(): + if inc_file is True: + inc_file = self.default_include_file + out.update(self.get_value_from_include(inc_file, params, output_dir)) + + return out + + def get_value_from_include(self, path, list_of_params, output_dir): + """for a given include file return the current value of the requested parameter + return a dictionary {name: value} + if path does not exists return the current value in self for all parameter""" + + #WARNING DOES NOT HANDLE LIST/DICT so far + + # handle case where file is missing + if not os.path.exists(pjoin(output_dir,path)): + misc.sprint("include file not existing", pjoin(output_dir,path)) + out = {name: self[name] for name in list_of_params} + + with open(pjoin(output_dir,path), 'r') as fsock: + text = fsock.read() + + for name in list_of_params: + misc.sprint(name, name in self.fortran_name) + misc.sprint(self.fortran_name[name] if name in self.fortran_name[name] else name) + to_track = [self.fortran_name[name] if name in self.fortran_name else name for name in list_of_params] + pattern = re.compile(r"\(?(%(names)s)\s?=\s?([^)]*)\)?" % {'names':'|'.join(to_track)}, re.I) + out = dict(pattern.findall(text)) + misc.sprint(out) + for name in list_of_params: + if name in self.fortran_name: + value = out[self.fortran_name[name]] + del out[self.fortran_name[name]] + out[name] = value + + for name, value in out.items(): + try: + out[name] = self.format_variable(value, type(self[name])) + except Exception: + continue + + if len(out) != len(list_of_params): + misc.sprint(list_of_params) + misc.sprint(to_track) + misc.sprint(self.fortran_name) + misc.sprint(text) + raise Exception + return out + def get_default(self, name, default=None, log_level=None): """return self[name] if exist otherwise default. log control if we @@ -3361,71 +3471,93 @@ def write_include_file(self, output_dir, output_file=None): #ensusre that system only parameter are correctly set self.update_system_parameter_for_include() + value_in_old_include = self.get_last_value_include(output_dir) + + if output_dir: self.write_autodef(output_dir, output_file=None) # check/fix status of customised functions self.edit_dummy_fct_from_file(self["custom_fcts"], os.path.dirname(output_dir)) for incname in self.includepath: - if incname is True: - pathinc = self.default_include_file - elif incname is False: - continue - else: - pathinc = incname + self.write_one_include_file(output_dir, incname, output_file) + + for name,value in value_in_old_include.items(): + if value != self[name]: + self.fct_mod[name][0](value, self[name], name, *self.fct_mod[name][1],**self.fct_mod[name][2]) - if output_file: - fsock = output_file + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + misc.sprint(incname) + if incname is True: + pathinc = self.default_include_file + elif incname is False: + return + else: + pathinc = incname + + if output_file: + fsock = output_file + else: + fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) + + + for key in self.includepath[incname]: + #define the fortran name + if key in self.fortran_name: + fortran_name = self.fortran_name[key] else: - fsock = file_writers.FortranWriter(pjoin(output_dir,pathinc+'.tmp')) - for key in self.includepath[incname]: - #define the fortran name - if key in self.fortran_name: - fortran_name = self.fortran_name[key] + fortran_name = key + + if incname in self.include_as_parameter: + fsock.writelines('INTEGER %s\n' % fortran_name) + #get the value with warning if the user didn't set it + value = self.get_default(key) + if hasattr(self, 'mod_inc_%s' % key): + value = getattr(self, 'mod_inc_%s' % key)(value) + # Special treatment for strings containing a list of + # strings. Convert it to a list of strings + if isinstance(value, list): + # in case of a list, add the length of the list as 0th + # element in fortran. Only in case of integer or float + # list (not for bool nor string) + targettype = self.list_parameter[key] + if targettype is bool: + pass + elif targettype is int: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) + fsock.writelines(line) + elif targettype is float: + line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) + fsock.writelines(line) + # output the rest of the list in fortran + for i,v in enumerate(value): + line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) + fsock.writelines(line) + elif isinstance(value, dict): + for fortran_name, onevalue in value.items(): + line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) + fsock.writelines(line) + elif isinstance(incname,str) and 'compile' in incname: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, value) else: - fortran_name = key - - #get the value with warning if the user didn't set it - value = self.get_default(key) - if hasattr(self, 'mod_inc_%s' % key): - value = getattr(self, 'mod_inc_%s' % key)(value) - # Special treatment for strings containing a list of - # strings. Convert it to a list of strings - if isinstance(value, list): - # in case of a list, add the length of the list as 0th - # element in fortran. Only in case of integer or float - # list (not for bool nor string) - targettype = self.list_parameter[key] - if targettype is bool: - pass - elif targettype is int: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(len(value))) - fsock.writelines(line) - elif targettype is float: - line = '%s(%s) = %s \n' % (fortran_name, 0, self.f77_formatting(float(len(value)))) - fsock.writelines(line) - # output the rest of the list in fortran - for i,v in enumerate(value): - line = '%s(%s) = %s \n' % (fortran_name, i+1, self.f77_formatting(v)) - fsock.writelines(line) - elif isinstance(value, dict): - for fortran_name, onevalue in value.items(): - line = '%s = %s \n' % (fortran_name, self.f77_formatting(onevalue)) - fsock.writelines(line) - elif isinstance(incname,str) and 'compile' in incname: line = '%s = %s \n' % (fortran_name, value) - fsock.write(line) + fsock.write(line) + else: + if incname in self.include_as_parameter: + line = 'PARAMETER (%s=%s)' %( fortran_name, self.f77_formatting(value)) else: line = '%s = %s \n' % (fortran_name, self.f77_formatting(value)) - fsock.writelines(line) - if not output_file: - fsock.close() - path = pjoin(output_dir,pathinc) - if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): - files.mv(path+'.tmp', path) - else: - os.remove(path+'.tmp') - + fsock.writelines(line) + if not output_file: + fsock.close() + path = pjoin(output_dir,pathinc) + if not os.path.exists(path) or not filecmp.cmp(path, path+'.tmp'): + files.mv(path+'.tmp', path) + else: + os.remove(path+'.tmp') def write_autodef(self, output_dir, output_file=None): """ Add the definition of variable to run.inc if the variable is set with autodef. @@ -3764,13 +3896,14 @@ def remove_all_cut(self): %(tmin_for_channel)s = tmin_for_channel ! limit the non-singular reach of --some-- channel of integration related to T-channel diagram (value between -1 and 0), -1 is no impact %(survey_splitting)s = survey_splitting ! for loop-induced control how many core are used at survey for the computation of a single iteration. %(survey_nchannel_per_job)s = survey_nchannel_per_job ! control how many Channel are integrated inside a single job on cluster/multicore - %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) + %(refine_evt_by_job)s = refine_evt_by_job ! control the maximal number of events for the first iteration of the refine (larger means less jobs) #********************************************************************* -# Compilation flag. No automatic re-compilation (need manual "make clean" in Source) +# Compilation flag. #********************************************************************* %(global_flag)s = global_flag ! fortran optimization flag use for the all code. %(aloha_flag)s = aloha_flag ! fortran optimization flag for aloha function. Suggestions: '-ffast-math' %(matrix_flag)s = matrix_flag ! fortran optimization flag for matrix.f function. Suggestions: '-O3' + %(vector_size)s = vector_size ! size designed for SIMD/OpenMP/GPU (number of events in lockstep) """ template_off = '# To see advanced option for Phase-Space optimization: type "update psoptim"' @@ -3926,9 +4059,12 @@ class RunCardLO(RunCard): "get_dummy_x1_x2": pjoin("SubProcesses","dummy_fct.f"), "dummy_boostframe": pjoin("SubProcesses","dummy_fct.f"), "user_dynamical_scale": pjoin("SubProcesses","dummy_fct.f"), + "bias_wgt_custom": pjoin("SubProcesses","dummy_fct.f"), "user_": pjoin("SubProcesses","dummy_fct.f") # all function starting by user will be added to that file } + include_as_parameter = ['vector.inc'] + if MG5DIR: default_run_card = pjoin(MG5DIR, "internal", "default_run_card_lo.dat") @@ -4162,10 +4298,15 @@ def default_setup(self): self.add_param('hel_splitamp', True, hidden=True, include=False, comment='decide if amplitude aloha call can be splitted in two or not when doing helicity per helicity optimization.') self.add_param('hel_zeroamp', True, hidden=True, include=False, comment='decide if zero amplitude can be removed from the computation when doing helicity per helicity optimization.') self.add_param('SDE_strategy', 1, allowed=[1,2], fortran_name="sde_strat", comment="decide how Multi-channel should behaves \"1\" means full single diagram enhanced (hep-ph/0208156), \"2\" use the product of the denominator") - self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check') - self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math') - self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3') - + self.add_param('global_flag', '-O', include=False, hidden=True, comment='global fortran compilation flag, suggestion -fbound-check', + fct_mod=(self.make_clean, ('Source'),{})) + self.add_param('aloha_flag', '', include=False, hidden=True, comment='global fortran compilation flag, suggestion: -ffast-math', + fct_mod=(self.make_clean, ('Source/DHELAS'),{})) + self.add_param('matrix_flag', '', include=False, hidden=True, comment='fortran compilation flag for the matrix-element files, suggestion -O3', + fct_mod=(self.make_Ptouch, ('matrix'),{})) + self.add_param('vector_size', 1, include='vector.inc', hidden=True, comment='lockstep size for parralelism run', + fortran_name='VECSIZE_MEMMAX', fct_mod=(self.reset_simd,(),{})) + # parameter allowing to define simple cut via the pdg # Special syntax are related to those. (can not be edit directly) self.add_param('pt_min_pdg',{'__type__':0.}, include=False, cut=True) @@ -4187,8 +4328,7 @@ def default_setup(self): self.add_param('mxxmin4pdg',[-1.], system=True) self.add_param('mxxpart_antipart', [False], system=True) - # CUDACPP parameters - self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + def check_validity(self): """ """ diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/check_param_card.py b/epochX/cudacpp/pp_tt012j.mad/bin/internal/check_param_card.py index fe874a06a4..71089d7480 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/internal/check_param_card.py +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/check_param_card.py @@ -85,7 +85,7 @@ def load_str(self, text): self.value= ' '.join(data[len(self.lhacode):]) # check that lhacode are the first entry otherwise return invalid param. if ' '.join([str(i) for i in self.lhacode]) != ' '.join(data[:len(self.lhacode)]): - raise InvalidParam + raise InvalidParam("line was %s" % str(data)) else: self.value = data[-1] diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/common_run_interface.py b/epochX/cudacpp/pp_tt012j.mad/bin/internal/common_run_interface.py index 5d0187e3fa..14c7f310dc 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/internal/common_run_interface.py +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/common_run_interface.py @@ -749,13 +749,15 @@ def writeRunWeb(me_dir): class RunWebHandling(object): - def __init__(self, me_dir, crashifpresent=True, warnifpresent=True): + def __init__(self, me_dir, crashifpresent=True, warnifpresent=True, force_run=False): """raise error if RunWeb already exists me_dir is the directory where the write RunWeb""" self.remove_run_web = True self.me_dir = me_dir - + if force_run: + self.remove_run_web = False + return if crashifpresent or warnifpresent: if os.path.exists(pjoin(me_dir, 'RunWeb')): pid = open(pjoin(me_dir, 'RunWeb')).read() @@ -6574,7 +6576,7 @@ def reask(self, *args, **opt): fail_due_to_format = 0 #parameter to avoid infinite loop def postcmd(self, stop, line): - if line not in [None, '0', 'done', '']: + if line not in [None, '0', 'done', '',0]: ending_question = cmd.OneLinePathCompletion.postcmd(self,stop,line) else: ending_question = True @@ -7533,7 +7535,8 @@ def open_file(self, answer): else: raise if time.time() - start < .5: - self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y') + self.mother_interface.ask("Are you really that fast? If you are using an editor that returns directly. Please confirm that you have finised to edit the file", 'y', + timeout=False) self.reload_card(path) def reload_card(self, path): diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/extended_cmd.py b/epochX/cudacpp/pp_tt012j.mad/bin/internal/extended_cmd.py index a6a8609dce..2f37070580 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/internal/extended_cmd.py +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/extended_cmd.py @@ -1108,9 +1108,12 @@ def ask(self, question, default, choices=[], path_msg=None, if alias: choices += list(alias.keys()) + + question_instance = obj(question, allow_arg=choices, default=default, mother_interface=self, **opt) - + if fct_timeout is None: + fct_timeout = lambda x: question_instance.postcmd(x, default) if x and default else False if first_cmd: if isinstance(first_cmd, str): question_instance.onecmd(first_cmd) @@ -2271,6 +2274,9 @@ def postcmd(self, stop, line): if n: self.default(line) return self.postcmd(stop, line) + elif self.value is None and line: + self.default(line) + return self.postcmd(stop, line) if not self.casesensitive: for ans in self.allow_arg: if ans.lower() == self.value.lower(): diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/gen_ximprove.py b/epochX/cudacpp/pp_tt012j.mad/bin/internal/gen_ximprove.py index 3b8ec31215..a88d60b282 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/internal/gen_ximprove.py +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/gen_ximprove.py @@ -154,10 +154,15 @@ def get_helicity(self, to_submit=True, clean=True): p = misc.Popen(['./gensym'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=Pdir) #sym_input = "%(points)d %(iterations)d %(accuracy)f \n" % self.opts + (stdout, _) = p.communicate(''.encode()) stdout = stdout.decode('ascii',errors='ignore') - nb_channel = max([math.floor(float(d)) for d in stdout.split()]) - + try: + nb_channel = max([math.floor(float(d)) for d in stdout.split()]) + except Exception as error: + misc.sprint(stdout, 'no channel or error for %s' % Pdir) + continue + self.cmd.compile(['madevent_forhel'], cwd=Pdir) if not os.path.exists(pjoin(Pdir, 'madevent_forhel')): raise Exception('Error make madevent_forhel not successful') diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/launch_plugin.py b/epochX/cudacpp/pp_tt012j.mad/bin/internal/launch_plugin.py new file mode 100644 index 0000000000..23271b846e --- /dev/null +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/launch_plugin.py @@ -0,0 +1,100 @@ + +import logging +import os +import subprocess +pjoin = os.path.join +logger = logging.getLogger('cmdprint') # for stdout + +try: + import madgraph +except ImportError: + import internal.madevent_interface as madevent_interface + import internal.misc as misc + import internal.extended_cmd as extended_cmd + import internal.banner as banner_mod +else: + import madgraph.interface.madevent_interface as madevent_interface + import madgraph.various.misc as misc + import madgraph.interface.extended_cmd as extended_cmd + import madgraph.various.banner as banner_mod + +class CPPMEInterface(madevent_interface.MadEventCmdShell): + + def compile(self, *args, **opts): + """ """ + + import multiprocessing + if not self.options['nb_core'] or self.options['nb_core'] == 'None': + self.options['nb_core'] = multiprocessing.cpu_count() + + if args and args[0][0] == 'madevent' and hasattr(self, 'run_card'): + import pathlib + import os + pjoin = os.path.join + + + + + cudacpp_backend = self.run_card['cudacpp_backend'].upper() # the default value is defined in banner.py + logger.info("Building madevent in madevent_interface.py with '%s' matrix elements"%cudacpp_backend) + if cudacpp_backend == 'FORTRAN': + args[0][0] = 'madevent_fortran_link' + elif cudacpp_backend == 'CPP': + args[0][0] = 'madevent_cpp_link' + elif cudacpp_backend == 'CUDA': + args[0][0] = 'madevent_cuda_link' + else: + raise Exception("Invalid cudacpp_backend='%s': only 'FORTRAN', 'CPP', 'CUDA' are supported") + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + else: + return misc.compile(nb_core=self.options['nb_core'], *args, **opts) + +class CPPRunCard(banner_mod.RunCardLO): + + def reset_simd(self, old_value, new_value, name): + if not hasattr(self, 'path'): + raise Exception + + if name == "vector_size" and new_value <= int(old_value): + # code can handle the new size -> do not recompile + return + + Sourcedir = pjoin(os.path.dirname(os.path.dirname(self.path)), 'Source') + subprocess.call(['make', 'cleanavx'], cwd=Sourcedir, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + + def plugin_input(self, finput): + return + + def default_setup(self): + super().default_setup() + self.add_param('cudacpp_backend', 'CPP', include=False, hidden=False) + + + def write_one_include_file(self, output_dir, incname, output_file=None): + """write one include file at the time""" + + if incname == "vector.inc" and 'vector_size' not in self.user_set: + return + super().write_one_include_file(output_dir, incname, output_file) + + + def check_validity(self): + """ensure that PLUGIN information are consistent""" + + super().check_validity() + + if self['SDE_strategy'] != 1: + logger.warning('SDE_strategy different of 1 is not supported with SMD/GPU mode') + self['sde_strategy'] = 1 + + if self['hel_recycling']: + self['hel_recycling'] = False + +class GPURunCard(CPPRunCard): + + def default_setup(self): + super(CPPRunCard, self).default_setup() + self.add_param('cudacpp_backend', 'CUDA', include=False, hidden=False) + +MEINTERFACE = CPPMEInterface +RunCard = CPPRunCard diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/madevent_interface.py b/epochX/cudacpp/pp_tt012j.mad/bin/internal/madevent_interface.py index 920e07a926..d722702891 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/internal/madevent_interface.py +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/madevent_interface.py @@ -3796,9 +3796,11 @@ def do_combine_events(self, line): if self.run_card['bias_module'].lower() not in ['dummy', 'none'] and nb_event: self.correct_bias() - + elif self.run_card['custom_fcts']: + self.correct_bias() + logger.info("combine events done in %s", time.time()-start) - + self.to_store.append('event') diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot new file mode 100755 index 0000000000..7deee7ac88 --- /dev/null +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_unweighted_events.lhe.gz ]];then + gunzip -c ${run}_unweighted_events.lhe.gz > unweighted_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e unweighted_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir $run + cd $run + echo "../unweighted_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl $run parton + mv plots.html ${run}_plots.html +fi + diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_delphes b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_delphes new file mode 100755 index 0000000000..975f410d0e --- /dev/null +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_delphes @@ -0,0 +1,46 @@ +#!/bin/bash +# +# This runs MadAnalysis on the delphes_events.lhco +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_delphes_events.lhco.gz ]];then + gunzip -c ${run}_delphes_events.lhco.gz > delphes_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e delphes_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_delphes + cd ${run}_delphes + echo "../delphes_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_delphes Delphes + mv plots.html ${run}_plots_delphes.html +fi diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pgs b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pgs new file mode 100755 index 0000000000..e7a36ef344 --- /dev/null +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pgs @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin + +if [[ $run != "" && -e ${run}_pgs_events.lhco.gz ]];then + gunzip -c ${run}_pgs_events.lhco.gz > pgs_events.lhco +fi + +if [[ (-x $MAdir/plot_events) && (-e pgs_events.lhco) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pgs + cd ${run}_pgs + echo "../pgs_events.lhco" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pgs PGS + mv plots.html ${run}_plots_pgs.html +fi + diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pythia b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pythia new file mode 100755 index 0000000000..532bfb4b7b --- /dev/null +++ b/epochX/cudacpp/pp_tt012j.mad/bin/internal/run_plot_pythia @@ -0,0 +1,50 @@ +#!/bin/bash +# +# This runs MadAnalysis on the unweighted_events.lhe +# +# Usage: run_plot run_name [madir [tddir]] +# where madir is the path to the MadAnalysis package + +main=`pwd` + +if [ "$1" != "" ] +then + run=$1 +else + echo "Usage: run_plot runname [MAdir [tddir]]" + exit +fi + +if [ "$2" != "" ] +then + MAdir=$main/$2 +else + MAdir=$main/../../MadAnalysis +fi + +if [ "$3" != "" ]; then + td=$main/$3 +else + td=$main/../../td +fi + +dirbin=$main/../bin/internal + +if [[ $run != "" && -e ${run}_pythia_events.lhe.gz ]];then + gunzip -c ${run}_pythia_events.lhe.gz > pythia_events.lhe +fi + +if [[ (-x $MAdir/plot_events) && (-e pythia_events.lhe) && (-e ../Cards/plot_card.dat) ]]; then + echo "Creating Plots" + mkdir ${run}_pythia + cd ${run}_pythia + echo "../pythia_events.lhe" > events.list + $dirbin/plot $MAdir $td > plot.log + cd .. + $dirbin/plot_page-pl ${run}_pythia Pythia + mv plots.html ${run}_plots_pythia.html + $dirbin/gen_crossxhtml-pl $run +else + echo "Not creating plots" +fi + diff --git a/epochX/cudacpp/pp_tt012j.mad/bin/madevent b/epochX/cudacpp/pp_tt012j.mad/bin/madevent index c944aa1faf..dff9711b73 100755 --- a/epochX/cudacpp/pp_tt012j.mad/bin/madevent +++ b/epochX/cudacpp/pp_tt012j.mad/bin/madevent @@ -32,6 +32,7 @@ except ImportError: import os +pjoin = os.path.join import optparse # Get the directory of the script real path (bin) @@ -160,13 +161,30 @@ except: pass import internal.madevent_interface as cmd_interface +# check for plugin customization of the launch command +launch_interface = cmd_interface.MadEventCmdShell +if os.path.exists(pjoin(root_path, 'bin','internal', 'launch_plugin.py')): + with misc.TMP_variable(sys, 'path', sys.path + [pjoin(root_path, 'bin', 'internal')]): + from importlib import reload + try: + reload('launch_plugin') + except Exception as error: + import launch_plugin + launch_interface = launch_plugin.MEINTERFACE + + +#Source use this executable for compilation always allow it +force_run = False +if (args and args[0] == 'treatcards'): + force_run=True + # Call the cmd interface main loop try: if '-h' in args or '--help' in args: - launch = ME.MadEventCmdShell(me_dir=os.path.dirname(root_path), force_run=True) + launch = launch_interface(me_dir=os.path.dirname(root_path), force_run=True) launch.exec_cmd('help generate_events') sys.exit(0) - with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), ): + with cmd_interface.MadEventCmdShell.RunWebHandling(os.path.dirname(root_path), force_run=force_run): if (args and os.path.isfile(args[0])): # They are an input file input_file = args[0] @@ -178,7 +196,7 @@ try: cmd_line.run_cmd('import command ' + input_file) cmd_line.run_cmd('quit') else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) cmd_line.use_rawinput = False cmd_line.haspiping = False cmd_line.run_cmd('import command ' + input_file) @@ -188,7 +206,7 @@ try: if options.web: cmd_line = cmd_interface.MadEventCmd(force_run=True) else: - cmd_line = cmd_interface.MadEventCmdShell(force_run=True) + cmd_line = launch_interface(force_run=True) if not hasattr(cmd_line, 'do_%s' % args[0]): if parser_error: print( parser_error) diff --git a/epochX/cudacpp/pp_tt012j.mad/src/HelAmps_sm.h b/epochX/cudacpp/pp_tt012j.mad/src/HelAmps_sm.h index 9cea8bcbe7..9b946c21e1 100644 --- a/epochX/cudacpp/pp_tt012j.mad/src/HelAmps_sm.h +++ b/epochX/cudacpp/pp_tt012j.mad/src/HelAmps_sm.h @@ -863,6 +863,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -873,6 +874,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -886,6 +888,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -896,6 +899,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) ALWAYS_INLINE; @@ -908,6 +912,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) ALWAYS_INLINE; @@ -920,6 +925,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) ALWAYS_INLINE; @@ -934,6 +940,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -945,6 +952,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -959,6 +967,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -970,6 +979,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -984,6 +994,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) ALWAYS_INLINE; //-------------------------------------------------------------------------- @@ -995,6 +1006,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) ALWAYS_INLINE; @@ -1008,6 +1020,7 @@ namespace mg5amcCpu const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1042,6 +1055,7 @@ namespace mg5amcCpu VVV1P0_1( const fptype allV2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1080,6 +1094,7 @@ namespace mg5amcCpu const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1103,6 +1118,7 @@ namespace mg5amcCpu FFV1_1( const fptype allF2[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allF1[] ) @@ -1134,6 +1150,7 @@ namespace mg5amcCpu FFV1_2( const fptype allF1[], const fptype allV3[], const fptype allCOUP[], + const double Ccoeff, const fptype M2, const fptype W2, fptype allF2[] ) @@ -1165,6 +1182,7 @@ namespace mg5amcCpu FFV1P0_3( const fptype allF1[], const fptype allF2[], const fptype allCOUP[], + const double Ccoeff, const fptype M3, const fptype W3, fptype allV3[] ) @@ -1197,6 +1215,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1225,6 +1244,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1260,6 +1280,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1288,6 +1309,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) @@ -1323,6 +1345,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, fptype allvertexes[] ) { mgDebug( 0, __FUNCTION__ ); @@ -1351,6 +1374,7 @@ namespace mg5amcCpu const fptype allV3[], const fptype allV4[], const fptype allCOUP[], + const double Ccoeff, const fptype M1, const fptype W1, fptype allV1[] ) diff --git a/epochX/cudacpp/pp_tt012j.mad/src/cudacpp_src.mk b/epochX/cudacpp/pp_tt012j.mad/src/cudacpp_src.mk index 554d7a704c..750986464e 100644 --- a/epochX/cudacpp/pp_tt012j.mad/src/cudacpp_src.mk +++ b/epochX/cudacpp/pp_tt012j.mad/src/cudacpp_src.mk @@ -1,7 +1,7 @@ # Copyright (C) 2020-2023 CERN and UCLouvain. # Licensed under the GNU Lesser General Public License (version 3 or later). # Created by: S. Roiser (Feb 2020) for the MG5aMC CUDACPP plugin. -# Further modified by: O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. +# Further modified by: J. Teig, O. Mattelaer, S. Roiser, A. Valassi (2020-2023) for the MG5aMC CUDACPP plugin. #=== Determine the name of this makefile (https://ftp.gnu.org/old-gnu/Manuals/make-3.80/html_node/make_17.html) #=== NB: assume that the same name (e.g. cudacpp.mk, Makefile...) is used in the Subprocess and src directories @@ -88,50 +88,52 @@ CXXFLAGS += $(OMPFLAGS) # Set the build flags appropriate to each AVX choice (example: "make AVX=none") # [NB MGONGPU_PVW512 is needed because "-mprefer-vector-width=256" is not exposed in a macro] # [See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96476] -$(info AVX=$(AVX)) -ifeq ($(UNAME_P),ppc64le) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) - endif -else ifeq ($(UNAME_P),arm) - ifeq ($(AVX),sse4) - override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) - endif -else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 - ifeq ($(AVX),none) - override AVXFLAGS = -mno-sse3 # no SIMD - else ifeq ($(AVX),sse4) - override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) +ifeq ($(NVCC),) + $(info AVX=$(AVX)) + ifeq ($(UNAME_P),ppc64le) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # Power9 VSX with 128 width (VSR registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on PowerPC for the moment) + endif + else ifeq ($(UNAME_P),arm) + ifeq ($(AVX),sse4) + override AVXFLAGS = -D__SSE4_2__ # ARM NEON with 128 width (Q/quadword registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none' and 'sse4' are supported on ARM for the moment) + endif + else ifneq ($(shell $(CXX) --version | grep ^nvc++),) # support nvc++ #531 + ifeq ($(AVX),none) + override AVXFLAGS = -mno-sse3 # no SIMD + else ifeq ($(AVX),sse4) + override AVXFLAGS = -mno-avx # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif else - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) - endif -else - ifeq ($(AVX),none) - override AVXFLAGS = -march=x86-64 # no SIMD (see #588) - else ifeq ($(AVX),sse4) - override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) - else ifeq ($(AVX),avx2) - override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] - else ifeq ($(AVX),512y) - override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] - else ifeq ($(AVX),512z) - override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) - else ifneq ($(AVX),none) - $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + ifeq ($(AVX),none) + override AVXFLAGS = -march=x86-64 # no SIMD (see #588) + else ifeq ($(AVX),sse4) + override AVXFLAGS = -march=nehalem # SSE4.2 with 128 width (xmm registers) + else ifeq ($(AVX),avx2) + override AVXFLAGS = -march=haswell # AVX2 with 256 width (ymm registers) [DEFAULT for clang] + else ifeq ($(AVX),512y) + override AVXFLAGS = -march=skylake-avx512 -mprefer-vector-width=256 # AVX512 with 256 width (ymm registers) [DEFAULT for gcc] + else ifeq ($(AVX),512z) + override AVXFLAGS = -march=skylake-avx512 -DMGONGPU_PVW512 # AVX512 with 512 width (zmm registers) + else ifneq ($(AVX),none) + $(error Unknown AVX='$(AVX)': only 'none', 'sse4', 'avx2', '512y' and '512z' are supported) + endif endif + # For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? + CXXFLAGS+= $(AVXFLAGS) endif -# For the moment, use AVXFLAGS everywhere: eventually, use them only in encapsulated implementations? -CXXFLAGS+= $(AVXFLAGS) # Set the build flags appropriate to each FPTYPE choice (example: "make FPTYPE=f") ###$(info FPTYPE=$(FPTYPE)) @@ -175,11 +177,19 @@ endif # Build directory "short" tag (defines target and path to the optional build directory) # (Rationale: keep directory names shorter, e.g. do not include random number generator choice) -override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +ifneq ($(NVCC),) + override DIRTAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +else + override DIRTAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD) +endif # Build lockfile "full" tag (defines full specification of build options that cannot be intermixed) # (Rationale: avoid mixing of CUDA and no-CUDA environment builds with different random number generators) -override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +ifneq ($(NVCC),) + override TAG = cuda_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +else + override TAG = $(AVX)_$(FPTYPE)_inl$(HELINL)_hrd$(HRDCOD)_$(RNDGEN) +endif # Build directory: current directory by default, or build.$(DIRTAG) if USEBUILDDIR==1 ###$(info Current directory is $(shell pwd)) @@ -216,35 +226,21 @@ endif MG5AMC_COMMONLIB = mg5amc_common # First target (default goal) -all.$(TAG): $(BUILDDIR)/.build.$(TAG) $(LIBDIR)/.build.$(TAG) $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so +all.$(TAG): $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so # Target (and build options): debug debug: OPTFLAGS = -g -O0 debug: all.$(TAG) -# Target: tag-specific build lockfiles -override oldtagsb=`if [ -d $(BUILDDIR) ]; then find $(BUILDDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` -override oldtagsl=`if [ -d $(LIBDIR) ]; then find $(LIBDIR) -maxdepth 1 -name '.build.*' ! -name '.build.$(TAG)' -exec echo $(shell pwd)/{} \; ; fi` - -$(BUILDDIR)/.build.$(TAG): $(LIBDIR)/.build.$(TAG) - -$(LIBDIR)/.build.$(TAG): - @if [ "$(oldtagsl)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(LIBDIR) for other tags:\n$(oldtagsl)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ "$(oldtagsb)" != "" ]; then echo -e "Cannot build for tag=$(TAG) as old builds exist in $(BUILDDIR) for other tags:\n$(oldtagsb)\nPlease run 'make clean' first\nIf 'make clean' is not enough: run 'make clean USEBUILDDIR=1 AVX=$(AVX) FPTYPE=$(FPTYPE)' or 'make cleanall'"; exit 1; fi - @if [ ! -d $(LIBDIR) ]; then echo "mkdir -p $(LIBDIR)"; mkdir -p $(LIBDIR); fi - @touch $(LIBDIR)/.build.$(TAG) - @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi - @touch $(BUILDDIR)/.build.$(TAG) - #------------------------------------------------------------------------------- # Generic target and build rules: objects from C++ compilation -$(BUILDDIR)/%.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -c $< -o $@ # Generic target and build rules: objects from CUDA compilation -$(BUILDDIR)/%_cu.o : %.cc *.h $(BUILDDIR)/.build.$(TAG) +$(BUILDDIR)/%_cu.o : %.cc *.h @if [ ! -d $(BUILDDIR) ]; then echo "mkdir -p $(BUILDDIR)"; mkdir -p $(BUILDDIR); fi $(NVCC) $(CPPFLAGS) $(CUFLAGS) -Xcompiler -fPIC -c -x cu $< -o $@ @@ -271,20 +267,61 @@ endif # Target: clean the builds .PHONY: clean +BUILD_DIRS := $(wildcard build.*) +NUM_BUILD_DIRS := $(words $(BUILD_DIRS)) + clean: ifeq ($(USEBUILDDIR),1) - rm -rf $(LIBDIR) - rm -rf $(BUILDDIR) +ifeq ($(NUM_BUILD_DIRS),1) + $(info USEBUILDDIR=1, only one src build directory found.) + rm -rf ../lib/$(BUILD_DIRS) + rm -rf $(BUILD_DIRS) +else ifeq ($(NUM_BUILD_DIRS),0) + $(error USEBUILDDIR=1, but no src build directories are found.) else - rm -f $(LIBDIR)/.build.* $(LIBDIR)/lib$(MG5AMC_COMMONLIB).so - rm -f $(BUILDDIR)/.build.* $(BUILDDIR)/*.o $(BUILDDIR)/*.exe + $(error Multiple src BUILDDIR's found! Use 'cleannone', 'cleansse4', 'cleanavx2', 'clean512y','clean512z', 'cleancuda' or 'cleanall'.) +endif +else + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe endif cleanall: @echo - $(MAKE) clean -f $(THISMK) + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.exe @echo - rm -rf $(LIBDIR)/build.* + rm -rf ../lib/build.* rm -rf build.* +# Target: clean different builds + +cleannone: + rm -rf ../lib/build.none_* + rm -rf build.none_* + +cleansse4: + rm -rf ../lib/build.sse4_* + rm -rf build.sse4_* + +cleanavx2: + rm -rf ../lib/build.avx2_* + rm -rf build.avx2_* + +clean512y: + rm -rf ../lib/build.512y_* + rm -rf build.512y_* + +clean512z: + rm -rf ../lib/build.512z_* + rm -rf build.512z_* + +cleancuda: + rm -rf ../lib/build.cuda_* + rm -rf build.cuda_* + +cleandir: + rm -f ./*.o ./*.exe + rm -f ../lib/lib$(MG5AMC_COMMONLIB).so + #-------------------------------------------------------------------------------