add HEFT gg_bb to the repo (with additional fixes for underflow FPEs)#832
add HEFT gg_bb to the repo (with additional fixes for underflow FPEs)#832valassi merged 160 commits intomadgraph5:masterfrom
Conversation
…=1" to generate heft_gg_bb with 4 diagrams (3 SM + 1 HEFT) instead of only 3
…eft_gg_bb CUDACPP_RUNTEST_DUMPEVENTS=1 ./runTest.exe cp ../../test/ref/dump_CPUTest.Sigma_heft_gg_bbx.txt ../../../CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/test/ref/ git add ../../test/ref/dump_CPUTest.Sigma_heft_gg_bbx.txt ../../../CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/test/ref/
…issues for f ./tput/teeThroughputX.sh -flt -hrd -makej -heftggbb -makeclean STARTED AT Thu Apr 4 06:15:25 PM CEST 2024 ENDED AT Thu Apr 4 06:23:19 PM CEST 2024 The problem is again a FPE madgraph5#831 cmpExe /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/heft_gg_bb.mad/SubProcesses/P1_gg_bbx/build.none_f_inl0_hrd0/check.exe --common -p 2 64 2 cmpExe /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/heft_gg_bb.mad/SubProcesses/P1_gg_bbx/build.none_f_inl0_hrd0/fcheck.exe 2 64 2 Floating Point Exception (CPU) Avg ME (C++/C++) = Avg ME (F77/C++) = 4.3135739049175754 File "<string>", line 1 me1=; me2=4.3135739049175754; reldif=abs((me2-me1)/me1); print('Relative difference =', reldif); ok = reldif <= 5E-3; print ( '%s (relative difference %s 5E-3)' % ( ('OK','<=') if ok else ('ERROR','>') ) ) ^ SyntaxError: invalid syntax
…this is needed to simplify FPE handling in runTest.exe for madgraph5#831) (NB: the reason why main is added to testxxx.cc instead of runTest.cc is that it is easier to define all FPE signal handlers in testxxx.cc)
…n() function, for all tests in runTest.exe As expected, now runTest.exe throws an FPE also in MadgraphTest madgraph5#831 [----------] 1 test from SIGMA_HEFT_GG_BBX_CPU/MadgraphTest [ RUN ] SIGMA_HEFT_GG_BBX_CPU/MadgraphTest.CompareMomentaAndME/0 INFO: Opening reference file ../../test/ref/dump_CPUTest.Sigma_heft_gg_bbx.txt INFO: The application is built for nehalem (SSE4.2) and the host supports it Thread 1 "runTest.exe" received signal SIGFPE, Arithmetic exception. 0x0000000000410807 in mg5amcCpu::calculate_wavefunctions(int, float const*, float const*, float*, float __vector(4)*, int) (ihel=0, allmomenta=0x67e480, allcouplings=0x1492ec0, allMEs=0x683700, jamp2_sv=0x0, ievt00=4) at CPPProcess.cc:434 434 fptype2_sv deltaMEs2 = ( jampRi_sv * ztempR_sv + jampIi_sv * ztempI_sv ); Missing separate debuginfos, use: dnf debuginfo-install glibc-2.34-60.el9.x86_64 libgcc-11.3.1-4.3.el9.alma.x86_64 libgomp-11.3.1-4.3.el9.alma.x86_64 libstdc++-11.3.1-4.3.el9.alma.x86_64 nvidia-driver-cuda-libs-530.30.02-1.el9.x86_64 (gdb) where 0 0x0000000000410807 in mg5amcCpu::calculate_wavefunctions(int, float const*, float const*, float*, float __vector(4)*, int) (ihel=0, allmomenta=0x67e480, allcouplings=0x1492ec0, allMEs=0x683700, jamp2_sv=0x0, ievt00=4) at CPPProcess.cc:434 1 0x0000000000410f38 in mg5amcCpu::sigmaKin_getGoodHel (allmomenta=0x67e480, allcouplings=0x1492ec0, allMEs=0x683700, isGoodHel=0x1494740, nevt=256) at CPPProcess.cc:787 2 0x000000000041e979 in mg5amcCpu::MatrixElementKernelHost::computeGoodHelicities (this=0x7fffffffcbe0) at MatrixElementKernels.cc:70 3 0x0000000000456cb6 in CPUTest::runSigmaKin (this=0x67c170, iiter=0) at runTest.cc:103
…(flush-to-zero jamp values whose square is below FLT_MIN)
However now runTest.exe may still fail as follows (should avoid using relDelta!)
[----------] 1 test from SIGMA_HEFT_GG_BBX_CPU/MadgraphTest
[ RUN ] SIGMA_HEFT_GG_BBX_CPU/MadgraphTest.CompareMomentaAndME/0
INFO: Opening reference file ../../test/ref/dump_CPUTest.Sigma_heft_gg_bbx.txt
INFO: The application is built for nehalem (SSE4.2) and the host supports it
[New Thread 0x7fffedeec000 (LWP 2405183)]
[New Thread 0x7fffed6eb000 (LWP 2405184)]
[New Thread 0x7fffeceea000 (LWP 2405185)]
Thread 1 "runTest.exe" received signal SIGFPE, Arithmetic exception.
0x0000000000453c82 in MadgraphTest_CompareMomentaAndME_Test::TestBody (this=0x148f850)
at /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/heft_gg_bb.sa/SubProcesses/P1_Sigma_heft_gg_bbx/MadgraphTest.h:298
298 const fptype relDelta = fabs( ( pMadg - pOrig ) / pOrig );
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.34-60.el9.x86_64 libgcc-11.3.1-4.3.el9.alma.x86_64 libgomp-11.3.1-4.3.el9.alma.x86_64 libstdc++-11.3.1-4.3.el9.alma.x86_64 nvidia-driver-cuda-libs-530.30.02-1.el9.x86_64
(gdb) where
0 0x0000000000453c82 in MadgraphTest_CompareMomentaAndME_Test::TestBody (this=0x148f850)
at /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/heft_gg_bb.sa/SubProcesses/P1_Sigma_heft_gg_bbx/MadgraphTest.h:298
… reference, instead of comparing relative delta to tolerance (computing relDelta may lead to FPEs)
…emove -gtest_main (this is needed to simplify FPE handling in runTest.exe for madgraph5#831) (NB: the reason why main is added to testxxx.cc instead of runTest.cc is that it is easier to define all FPE signal handlers in testxxx.cc)
…ndling, via the main() function, for all tests in runTest.exe As expected, now heft_gg_bb runTest.exe throws an FPE also in MadgraphTest madgraph5#831
…w FPE madgraph5#831 (flush-to-zero jamp values whose square is below FLT_MIN) However now runTest.exe may still fail with FPEs in relDelta (should avoid using relDelta!)
… to tolerance times reference, instead of comparing relative delta to tolerance (computing relDelta may lead to FPEs)
…but not for f ./teeMadX.sh -heftggbb -mix -d +10x 24 /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/tmad/logs_heftggbb_mad/log_heftggbb_mad_d_inl0_hrd0.txt 1 /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/tmad/logs_heftggbb_mad/log_heftggbb_mad_f_inl0_hrd0.txt 24 /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/tmad/logs_heftggbb_mad/log_heftggbb_mad_m_inl0_hrd0.txt The problem is a mismatch of the LHE file between fortran and cpp madgraph5#833 *** (2-none) Compare MADEVENT_CPP x1 events.lhe to MADEVENT_FORTRAN events.lhe reference (including colors and helicities) *** ERROR! events.lhe.cpp.1 and events.lhe.ref.1 differ! diff /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/heft_gg_bb.mad/SubProcesses/P1_gg_bbx/events.lhe.cpp.1 /data/avalassi/GPU2023/madgraph4gpuX/epochX/cudacpp/heft_gg_bb.mad/SubProcesses/P1_gg_bbx/events.lhe.ref.1 | head -20 6206,6207c6206,6207 < 21 -1 0 0 502 503 -0.00000000000E+00 -0.00000000000E+00 -0.59936081260E+01 0.59936081260E+01 0.00000000000E+00 0. -1. < 5 1 1 2 501 0 0.45273385612E+02 -0.31131305296E+02 0.47763304676E+03 0.48080583916E+03 0.47000000000E+01 0. 1. --- > 21 -1 0 0 502 503 -0.00000000000E+00 -0.00000000000E+00 -0.59936081260E+01 0.59936081260E+01 0.00000000000E+00 0. 1. > 5 1 1 2 501 0 0.45273385612E+02 -0.31131305296E+02 0.47763304676E+03 0.48080583916E+03 0.47000000000E+01 0. -1. 8306,8307c8306,8307 < 21 -1 0 0 502 503 -0.00000000000E+00 -0.00000000000E+00 -0.23857997239E+02 0.23857997239E+02 0.00000000000E+00 0. 1. < 5 1 1 2 501 0 -0.34843521722E+02 0.35239303629E+02 0.13219496682E+02 0.51504607743E+02 0.47000000000E+01 0. -1. --- > 21 -1 0 0 502 503 -0.00000000000E+00 -0.00000000000E+00 -0.23857997239E+02 0.23857997239E+02 0.00000000000E+00 0. -1. > 5 1 1 2 501 0 -0.34843521722E+02 0.35239303629E+02 0.13219496682E+02 0.51504607743E+02 0.47000000000E+01 0. 1. 9606,9619d9605 < 4 1 1E-03 0.1250139E+03 0.7546771E-02 0.1235066E+00 < 21 -1 0 0 503 502 0.00000000000E+00 0.00000000000E+00 0.94948250004E+03 0.94948250004E+03 0.00000000000E+00 0. 1. < 21 -1 0 0 502 503 -0.00000000000E+00 -0.00000000000E+00 -0.41149990002E+01 0.41149990002E+01 0.00000000000E+00 0. -1. < 5 1 1 2 501 0 -0.96459450317E+01 -0.34409175043E+02 0.83136584965E+02 0.90613560477E+02 0.47000000000E+01 0. -1. < -5 1 1 2 0 501 0.96459450317E+01 0.34409175043E+02 0.86223091608E+03 0.86298393857E+03 0.47000000000E+01 0. 1. < <mgrwt> < <rscale> 0 0.12501391E+03</rscale>
…s a=0 but returns a failure status code!
…d underflow FPE madgraph5#831... note that now FPTYPE=f is ok but FPTYPE=m is not
…t only d/f (now 102 logs total, were 94)
…fter initial patch for FPEs madgraph5#831: mix fptype fails, as expected ./tput/teeThroughputX.sh -mix -hrd -makej -heftggbb -makeclean
…m scalar (still fails for vector)
…sues in the patch to avoid underflow FPE madgraph5#831 (fix handling of FPTYPE=f and add FPTYPE=m)
STARTED AT Sat Apr 13 08:57:22 PM CEST 2024 ./tput/teeThroughputX.sh -mix -hrd -makej -eemumu -ggtt -ggttg -ggttgg -gqttq -ggttggg -makeclean ENDED(1) AT Sat Apr 13 09:23:53 PM CEST 2024 [Status=0] ./tput/teeThroughputX.sh -flt -hrd -makej -eemumu -ggtt -ggttgg -inlonly -makeclean ENDED(2) AT Sat Apr 13 09:34:23 PM CEST 2024 [Status=0] ./tput/teeThroughputX.sh -makej -eemumu -ggtt -ggttg -gqttq -ggttgg -ggttggg -flt -bridge -makeclean ENDED(3) AT Sat Apr 13 09:42:52 PM CEST 2024 [Status=0] ./tput/teeThroughputX.sh -eemumu -ggtt -ggttgg -flt -rmbhst ENDED(4) AT Sat Apr 13 09:45:01 PM CEST 2024 [Status=0] ./tput/teeThroughputX.sh -eemumu -ggtt -ggttgg -flt -curhst ENDED(5) AT Sat Apr 13 09:46:08 PM CEST 2024 [Status=0] ./tput/teeThroughputX.sh -eemumu -ggtt -ggttgg -flt -common ENDED(6) AT Sat Apr 13 09:48:20 PM CEST 2024 [Status=0] ./tput/teeThroughputX.sh -mix -hrd -makej -susyggtt -susyggt1t1 -smeftggtttt -heftggbb -makeclean ENDED(7) AT Sat Apr 13 10:00:27 PM CEST 2024 [Status=0]
STARTED AT Sat Apr 13 10:00:27 PM CEST 2024 (SM tests) ENDED(1) AT Sun Apr 14 01:29:37 AM CEST 2024 [Status=0] (BSM tests) ENDED(1) AT Sun Apr 14 01:36:02 AM CEST 2024 [Status=0] 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_eemumu_mad/log_eemumu_mad_d_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_eemumu_mad/log_eemumu_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_eemumu_mad/log_eemumu_mad_m_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttggg_mad/log_ggttggg_mad_d_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttggg_mad/log_ggttggg_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttggg_mad/log_ggttggg_mad_m_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttgg_mad/log_ggttgg_mad_d_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttgg_mad/log_ggttgg_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttgg_mad/log_ggttgg_mad_m_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttg_mad/log_ggttg_mad_d_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttg_mad/log_ggttg_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggttg_mad/log_ggttg_mad_m_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggtt_mad/log_ggtt_mad_d_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggtt_mad/log_ggtt_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_ggtt_mad/log_ggtt_mad_m_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_gqttq_mad/log_gqttq_mad_d_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_gqttq_mad/log_gqttq_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_gqttq_mad/log_gqttq_mad_m_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_heftggbb_mad/log_heftggbb_mad_d_inl0_hrd0.txt 1 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_heftggbb_mad/log_heftggbb_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_heftggbb_mad/log_heftggbb_mad_m_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_smeftggtttt_mad/log_smeftggtttt_mad_d_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_smeftggtttt_mad/log_smeftggtttt_mad_f_inl0_hrd0.txt 20 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_smeftggtttt_mad/log_smeftggtttt_mad_m_inl0_hrd0.txt 0 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_susyggt1t1_mad/log_susyggt1t1_mad_d_inl0_hrd0.txt 0 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_susyggt1t1_mad/log_susyggt1t1_mad_f_inl0_hrd0.txt 0 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_susyggt1t1_mad/log_susyggt1t1_mad_m_inl0_hrd0.txt 0 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_susyggtt_mad/log_susyggtt_mad_d_inl0_hrd0.txt 0 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_susyggtt_mad/log_susyggtt_mad_f_inl0_hrd0.txt 0 /data/avalassi/GPU2024/madgraph4gpuX/epochX/cudacpp/tmad/logs_susyggtt_mad/log_susyggtt_mad_m_inl0_hrd0.txt
(Did not rerun tests on AMD GPUs - LUMI in maintenance for one week)
|
Hi @oliviermattelaer I confirm I have finished. This is good to merge for me after your review. Thanks |
oliviermattelaer
left a comment
There was a problem hiding this comment.
For me this is good to go,
maybe one detail would be to remove the special case for
'mdl_G__exp__2' and similar but that's ok if you want to keep it.
…handling of mdl_G__exp__2/3 as suggested by Olivier ./CODEGEN/generateAndCompare.sh -q heft_gg_bb ./CODEGEN/generateAndCompare.sh -q susy_gg_tt ./CODEGEN/generateAndCompare.sh -q susy_gg_t1t1 ./CODEGEN/generateAndCompare.sh -q smeft_gg_tttt
…p__2/3 as suggested by Olivier
…ut in SUSY mdl_G__exp__2 is complex again? (mg5amcnlo#89 is not fixed?) ./CODEGEN/generateAndCompare.sh -q heft_gg_bb ./CODEGEN/generateAndCompare.sh -q susy_gg_tt ./CODEGEN/generateAndCompare.sh -q susy_gg_t1t1 ./CODEGEN/generateAndCompare.sh -q smeft_gg_tttt
…without the fix for mg5amcnlo#89 (G^2 is real or complex) in commit 619f5db Will try to regenerate the code again and see what happens
…h for mg5amcnlo#89 - only change is mdl_G__exp__3 becmes complex in SMEFT Running summary below Without Olivier's patch for mg5amcnlo#89 Without special handling of mdl_G__exp__2 and mdl_G__exp__3 in cudacpp: - mdl_G__exp__2 is double in HEFT and SMEFT (correct) - mdl_G__exp__2 is complex in SUSY (incorrect) - mdl_G__exp__3 is complex in SMEFT (incorrect)
…ix for mg5amcnlo#89 (G^2 is real or complex) in commit 619f5db
…or mg5amcnlo#89 - fixes mdl_G__exp__3 in SMEFT (but SUSY is wrong here, WITHOUT The additional cudacpp patch) Running summary below Without Olivier's patch for mg5amcnlo#89 Without special handling of mdl_G__exp__2 and mdl_G__exp__3 in cudacpp: - mdl_G__exp__2 is double in HEFT and SMEFT (correct) - mdl_G__exp__2 is complex in SUSY (incorrect) <--- FIXME - mdl_G__exp__3 is complex in SMEFT (incorrect) <--- FIXME WITH Olivier's patch for mg5amcnlo#89 Without special handling of mdl_G__exp__2 and mdl_G__exp__3 in cudacpp: - mdl_G__exp__2 is double in HEFT and SMEFT (correct) - mdl_G__exp__2 is complex in SUSY (incorrect) <--- FIXME - mdl_G__exp__3 is double in SMEFT (correct) <=== NOW FIXED
…ne for mdl_G__exp__3, now fixed by Olivier)
…amcnlo#89, WITH cudacpp patch for mdl_G__exp__2, WITHOUT cudacpp patch for mdl_G__exp__3 Now all is ok again for both SUSY and SMEFT/HEFT Running summary below Without Olivier's patch for mg5amcnlo#89 Without special handling of mdl_G__exp__2 and mdl_G__exp__3 in cudacpp: - mdl_G__exp__2 is double in HEFT and SMEFT (correct) - mdl_G__exp__2 is complex in SUSY (incorrect) <--- FIXME - mdl_G__exp__3 is complex in SMEFT (incorrect) <--- FIXME WITH Olivier's patch for mg5amcnlo#89 Without special handling of mdl_G__exp__2 and mdl_G__exp__3 in cudacpp: - mdl_G__exp__2 is double in HEFT and SMEFT (correct) - mdl_G__exp__2 is complex in SUSY (incorrect) <--- FIXME - mdl_G__exp__3 is double in SMEFT (correct) <=== NOW FIXED WITH Olivier's patch for mg5amcnlo#89 WITH special handling of mdl_G__exp__2 in cudacpp: Without special handling of mdl_G__exp__3 in cudacpp: - mdl_G__exp__2 is double in HEFT and SMEFT (correct) - mdl_G__exp__2 is double in SUSY (correct) <=== NOW FIXED - mdl_G__exp__3 is double in SMEFT (correct) <=== NOW FIXED
…except for cosmetics in G^3 of smeft_gg_tttt.mad)
Hi Olivier, thanks a lot. I had a look at the 'mdl_G__exp__2' and 'mdl_G__exp__3' issue. It seems that your patch fixed 'mdl_G__exp__3' but NOT 'mdl_G__exp__2'. I will add a comment in mg5amcnlo/mg5amcnlo#89. So anyway here I have removed my cudacpp patch for G^3 but kept it for G^2. I regenerated all code and am realunching the CI. I will merge when the CI is ok. I will reopen mg5amcnlo/mg5amcnlo#89 so that you can have a look. If/when you create a new patch I will test it in a separate madgraph4gpu PR. Thanks again Andrea |
|
There are some issues on Mac see #838, I am trying to debug them and work around them |
…workaround for Mac segfault madgraph5#838
|
My workaround for #838 was ok on ee_mumu. I am applying it on CODEGEN and all processes and relaunching the CI |
|
Ok the MacOS tests succeed after disabling testmisc (workaround for #838 - real fixes will be needed in #839 and #840). All CI tests succeed. I am merging this. Thanks again @oliviermattelaer for the review and the approval. (I still need to add a comment on mg5amcnlo/mg5amcnlo#89, I will do that now. I got distracted bythe MacOS issues). |
…adgraph5#832) into jtmk Fix conflicts: epochX/cudacpp/CODEGEN/PLUGIN/CUDACPP_SA_OUTPUT/madgraph/iolibs/template_files/gpu/cudacpp.mk epochX/cudacpp/tput/teeThroughputX.sh epochX/cudacpp/tput/throughputX.sh
This is a WIP PR that logically follows the SUSY and SMEFT PRs. In particular it includes #632 which includes #824.
The main change is that I added heft_gg_bb to the repo (and am removing heft_gg_h).
Concerning heft_gg_bb, this now includes 4 diagrams (3 SM and also 1 HEFT) after fixing #828. This essentially means adding one diagram even if it is suppressed.
Now, the fact that the contribution is suppressed is probably why I start getting FPE underflows #831. I have now also fixed this (essentially by flushing to 0 all values of jamp_sv below E-18, so that their square is still above E-36 and fits in a float.
This is still WIP as I am running a few more tests.