Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
7f88342
Record NinjaRS integration plan and reproducible benchmark baseline
huashengshao Oct 20, 2026
165fd1b
Record reproducible original MadLoop benchmark dependencies
huashengshao Oct 20, 2026
d47f0bc
Add installable NinjaRS backend and precision bridge to MadLoop
huashengshao Oct 20, 2026
ca62a86
Validate NinjaRS source installation and portable standalone and NLO …
huashengshao Oct 20, 2026
f0a3da5
Add numerical rescue controls and reproducible benchmark validation
huashengshao Oct 20, 2026
f934704
Optimize generated Fortran wavefunction traversal with exact regressions
huashengshao Oct 20, 2026
49b4af3
Preserve GNU Fortran binary128 runtime when linking NinjaRS
huashengshao Oct 20, 2026
ecbf011
Ship the NinjaRS Fortran interface source with installed dependencies
huashengshao Oct 20, 2026
80fca66
Retain regenerated process validation and strict Zgg performance evid…
huashengshao Oct 20, 2026
a630fd9
Validate four core processes and retain failed-series provenance
huashengshao Oct 20, 2026
06b1fca
Preserve binary128 precision in generated model arithmetic
huashengshao Oct 20, 2026
fd72f89
Skip exact-zero QP polynomial products with legacy fallbacks
huashengshao Oct 20, 2026
c864738
Retain audited performance experiments and reduction diagnostics
huashengshao Oct 20, 2026
27d790b
Validate corrected model references with immutable benchmark policy v2
huashengshao Oct 20, 2026
8d20308
Revalidate benchmark proof without disposable build directories
huashengshao Oct 20, 2026
85795cc
Fix elemental QP classifier compilation in FKS NLO exports
huashengshao Oct 20, 2026
5501168
Isolate scalar and tensor sources of the extra Zgg rescue
huashengshao Oct 20, 2026
d2cd554
Bind benchmark worker proof to reducer libraries and interfaces
huashengshao Oct 20, 2026
c23891a
Retain guarded compensated tensor expansion oracle experiments
huashengshao Oct 20, 2026
4c45dc4
Validate pinned installation and relocated standalone and NLO exports
huashengshao Oct 20, 2026
b152b00
Require precision parity coverage for each exact linked runtime
huashengshao Oct 20, 2026
38b5315
Retain full-process compensated tensor diagnostics and overhead evidence
huashengshao Oct 20, 2026
e9f59e6
Retain legacy precision parity and eight corrected-reference builds
huashengshao Oct 20, 2026
a01d71d
Bind report generation times to the measured candidate sources
huashengshao Oct 20, 2026
06b3e20
Retain explicit compensated DP retry validation and overhead measurem…
huashengshao Oct 20, 2026
5babb8a
Prepare fresh CLI exports for the committed ABI3 candidate
huashengshao Oct 20, 2026
6422904
Retain measured terminal QP optimization and numerical controls
huashengshao Oct 20, 2026
5a1f079
Extend symmetric tensor accumulation research from recursive construc…
huashengshao Oct 20, 2026
6b2e7e8
Prepare ABI3 export recertification and candidate worker coverage
huashengshao Oct 20, 2026
e2717da
Skip unconsumed terminal QP wavefunction components with guarded Fort…
huashengshao Oct 20, 2026
c5496ca
Add an explicit compensated NinjaRS DP retry with ABI3 integration
huashengshao Oct 20, 2026
7264e01
Retain ABI3 CLI generation and diagnosed NLO export failure
huashengshao Oct 20, 2026
b44d20e
Fix terminal QP declarations for unprefixed NLO batches
huashengshao Oct 20, 2026
d8f3c7b
Bind diagnostic CPU profiles to measured workers and report their costs
huashengshao Oct 20, 2026
a8f65b7
Retain corrected ABI3 builds and prepare complete numerical validation
huashengshao Oct 20, 2026
2922277
Validate pinned and local NinjaRS installs with relocated standalone …
huashengshao Oct 20, 2026
9bd0b0d
Retain QCD4 warm-up profile identifying quadruple tensor accumulation…
huashengshao Oct 20, 2026
f64813f
Validate refreshed ABI3 representative runtime groups and genuine rescue
huashengshao Oct 20, 2026
d1f0f25
Validate complete loop-induced mixed-order and complex-mass control c…
huashengshao Oct 20, 2026
d0e78aa
Measure symmetric tensor gather and product sharing without promoting…
huashengshao Oct 20, 2026
defb265
Validate rotations changing-state contexts and near-singular rescue a…
huashengshao Oct 20, 2026
b68ba4b
Audit final focused controls and verify physical propagator reversal …
huashengshao Oct 20, 2026
7e88702
Index completed final-source checks and retain QCD4 warm-up policy di…
huashengshao Oct 20, 2026
76b3e4f
Profile tensor-sharing limits and prove reusable momentum-dependent c…
huashengshao Oct 20, 2026
9b27b6d
Explain high-multiplicity reference cost with complete source operati…
huashengshao Oct 20, 2026
9ca19cc
Retain reference startup timeout and extend collection window
huashengshao Oct 20, 2026
35eec84
Validate guarded tensor factorization and retain inconclusive timing
huashengshao Oct 20, 2026
d13fd77
Record reference CPU confinement and current validation plans
huashengshao Oct 20, 2026
a0b8cbd
Confirm tensor timing gain and reproducible PDF metadata
huashengshao Oct 20, 2026
92d4c06
Retain exact-oracle and IEEE controls for DP tensor factorization
huashengshao Oct 20, 2026
a762338
Retain warmed NinjaRS profile and held tensor refresh chain
huashengshao Oct 20, 2026
f4bffc6
Share guarded QP FFV tensor contractions in generated Fortran
huashengshao Oct 20, 2026
fc09de0
Verify thirteen clean tensor exports and DP factor controls
huashengshao Oct 20, 2026
93bad98
Validate refreshed QP exports and exact MP allocation prototype
huashengshao Oct 20, 2026
7c563c3
Retain fixed tensor performance plans before measurement
huashengshao Oct 20, 2026
71b8162
Validate refreshed complex-mass and process-state controls
huashengshao Oct 20, 2026
7e516ff
Capture matched numerator and geometry inputs at rescue points
huashengshao Oct 20, 2026
9baaa95
Retain complete negative DP tensor timing study
huashengshao Oct 20, 2026
9f13d10
Preserve binary128 signed zeros when widening MP input
huashengshao Oct 20, 2026
335b426
Freeze corrected-runtime refresh and native Float256 study plans
huashengshao Oct 20, 2026
ffcf2d4
Retain complete precision replay and tensor guard source audit
huashengshao Oct 20, 2026
9b97a94
Measure exact MP tensor allocation savings over fixed paired blocks
huashengshao Oct 20, 2026
4b334c5
Record user-requested pause and preserved job checkpoints
huashengshao Oct 20, 2026
160966d
Resume final validation campaign and remove cached bytecode
huashengshao Oct 20, 2026
ffbca3d
Validate corrected transport through installed standalone and NLO exp…
huashengshao Oct 20, 2026
ecdf397
Save second user-requested pause with test and job state
huashengshao Oct 20, 2026
c8761a9
Validate combined allocation transport and close reuse research
huashengshao Oct 20, 2026
81a4adf
Add upstream and installer boundary regressions with actionable missi…
huashengshao Oct 20, 2026
e0c6596
Recover interrupted reference campaign without altering historical data
huashengshao Oct 20, 2026
4537502
Validate MG7 Fortran and export regressions with reviewed fixtures
huashengshao Oct 20, 2026
df6193c
Audit numerical ABI and preserve unresolved precision observations
huashengshao Oct 20, 2026
28c49f5
Prepare source-bound loop-induced stability and precision reporting
huashengshao Oct 20, 2026
956b4e1
Checkpoint interrupted final studies and untested release drafts at u…
huashengshao Oct 20, 2026
5fc2e4f
Publish required runtime proof metadata and exclude experiment binaries
huashengshao Oct 21, 2026
c52242d
Validate transactional NinjaRS installation and stress report rendering
huashengshao Oct 21, 2026
5adca78
Validate generic four-particle stress controls and visible reference …
huashengshao Oct 21, 2026
dfd7d77
Measure full MadLoop tensor allocation gains with exact regression ag…
huashengshao Oct 21, 2026
c2b48e9
Freeze measured tensor allocation candidate for final precision and e…
huashengshao Oct 21, 2026
d05b59f
Correct owned Float arithmetic in final precision tests and retain fa…
huashengshao Oct 21, 2026
9fdc8f7
Validate final precision candidate and close native kernel study with…
huashengshao Oct 21, 2026
2bf47cd
Validate final NinjaRS installation and relocated standalone NLO exports
huashengshao Oct 21, 2026
573c2b3
Prepare frozen final precision and generic stress campaigns and remov…
huashengshao Oct 21, 2026
b0ea105
Seal final scratch cleanup and preserve its deferred ignore rules
huashengshao Oct 21, 2026
295f0c6
Validate eight frozen exports precision rescue and loop-induced agree…
huashengshao Oct 21, 2026
9d33d46
Validate complex mixed-order and genuine quadruple state reuse controls
huashengshao Oct 21, 2026
50dddda
Preserve external-backend failures and qualify benchmark presentation
huashengshao Oct 21, 2026
0f84597
Validate NinjaRS independently and qualify paired benchmark reporting
huashengshao Oct 21, 2026
e7f3f1f
Qualify pinned release cohorts and benchmark process ownership
huashengshao Oct 21, 2026
856e76e
Pin final NinjaRS dependencies and add transactional install updates
huashengshao Oct 21, 2026
552aee1
Validate final NinjaRS installation, precision and fresh exports
huashengshao Oct 21, 2026
22cedd6
Publish legacy reference closure and four-tool timing producer
huashengshao Oct 21, 2026
6902020
Add four-tool stability analysis and audited legacy controls
huashengshao Oct 21, 2026
aec2e50
Make benchmark tests portable and qualify DP observer controls
huashengshao Oct 21, 2026
9b5abb3
Validate matched Ninja and NinjaRS benchmark preparation
huashengshao Oct 21, 2026
21e2583
Qualify native DP stability diagnostics and report metadata
huashengshao Oct 21, 2026
235901b
Validate final pinned NinjaRS on all eight core processes
huashengshao Oct 21, 2026
ea6fec8
Prefer installed NinjaRS and retain reproducible profile diagnostics
huashengshao Oct 21, 2026
17cbbf0
Retain audited numerical qualification and scoped NinjaRS benchmarks
huashengshao Oct 21, 2026
fa6a67f
Fix MadLoop stability profiling in explicit output directories
huashengshao Oct 21, 2026
68417dc
Qualify complete NinjaRS profiling and multi-Higgs controls
huashengshao Oct 21, 2026
464b441
Verify CLI timing metadata against native card and library layouts
huashengshao Oct 21, 2026
c68d90f
Retain final twelve-process timing and stability evidence
huashengshao Oct 22, 2026
19d67c8
Publish final NinjaRS timing and stability benchmark report
huashengshao Oct 22, 2026
76a81ba
Merge main into madloop_ninjars before final review
huashengshao Oct 22, 2026
2c21e91
Move benchmark report to doc and archive development artifacts
huashengshao Oct 22, 2026
2cd45dc
Fix NinjaRS CI configuration and generated-output references
huashengshao Oct 22, 2026
d816e1b
Refresh optimized and MatchBox export references
huashengshao Oct 22, 2026
235fc09
Add bare-loop UV/IR pole selection for NinjaRS and COLLIER
huashengshao Oct 23, 2026
3ed442f
Share pole selector requests across MadLoop subprocesses
huashengshao Oct 23, 2026
cc6f6fe
Use published upstream UV/IR pole APIs in MadLoop
huashengshao Oct 23, 2026
94cbe71
Address NinjaRS review feedback on dispatch, defaults and reporting
ValentinHirschi Oct 29, 2026
e5a4a65
Keep optional benchmark binaries outside source checkouts
ValentinHirschi Oct 29, 2026
9228fc5
Merge main and refresh MadLoop generated references
ValentinHirschi Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
.gitattributes export-ignore
.pre-commit-config.yaml export-ignore
.bzrignore export-ignore

# Preserve the frozen report bytes and keep compressed PDF streams out of diffs.
doc/benchmarkfolder/*.pdf binary
9 changes: 9 additions & 0 deletions .github/workflows/unittest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,15 @@ jobs:
- uses: actions/checkout@v5
- uses: ./.github/actions/clean_tmp

- name: "MadLoop NinjaRS interfaces, defaults, and reporting"
if: ${{ !cancelled() }}
run: |
cd $GITHUB_WORKSPACE
command -v gfortran
python3 -m unittest discover -s tests/unit_tests/loop -p 'test_ninjars*.py'
python3 -m unittest discover -s tests/unit_tests/various -p 'test_ninjars*.py'
python3 -m unittest tests.unit_tests.loop.test_loop_poles tests.unit_tests.interface.test_madevent_loop_warnings

# ---- unittest_0 ----
- name: "unittest_0"
if: ${{ !cancelled() }}
Expand Down
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
*~
.benchmark-work/
.ninjars-build/
vendor/ninjars/target/
vendor/ninjars/smoke
vendor/ninjars/ninjars-native-libs.txt
vendor/ninjars/ninjars-link-before.txt
__pycache__
*.o
*.pyc
Expand Down Expand Up @@ -81,6 +87,12 @@ tests/input_files/IOTestsComparison/**/*.BackUp
# output of ./tests/test_manager.py
UNITTEST_proc/

# Local development references and report plotting caches.
/references/
/doc/benchmarkfolder/final-report-v1/.mpl-cache/
/doc/benchmarkfolder/final-report-v1/cli-report.json.gz
/doc/benchmarkfolder/final-report-v1/fonts/*.otf

# models/ only holds UFO models: downloaded ones are ignored, shipped ones kept
models/*
!models/sm/
Expand Down
7 changes: 7 additions & 0 deletions Template/LO/Source/dsample.f
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,9 @@ subroutine output_run_statistics(outUnit)
c
c Global
c
INTEGER NINJARS_DP_USAGE,NINJARS_QP_USAGE
COMMON/NINJARSSTATS/NINJARS_DP_USAGE,NINJARS_QP_USAGE
DATA NINJARS_DP_USAGE,NINJARS_QP_USAGE/0,0/
INTEGER U_RETURN_CODES(0:9)
INTEGER T_RETURN_CODES(0:9)
INTEGER H_RETURN_CODES(0:9)
Expand Down Expand Up @@ -468,6 +471,10 @@ subroutine output_run_statistics(outUnit)

write(outUnit,*) '<run_statistics> '
write(outUnit,33) '<u_return_code>',U_RETURN_CODES,'</u_return_code>'
write(outUnit,'(A,I0,A)') '<ninjars_dp_usage>',NINJARS_DP_USAGE,
& '</ninjars_dp_usage>'
write(outUnit,'(A,I0,A)') '<ninjars_qp_usage>',NINJARS_QP_USAGE,
& '</ninjars_qp_usage>'
write(outUnit,33) '<t_return_code>',T_RETURN_CODES,'</t_return_code>'
write(outUnit,33) '<h_return_code>',H_RETURN_CODES,'</h_return_code>'
write(outUnit,*) '<average_time>'//trim(toStr_real(AVG_TIMING))
Expand Down
6 changes: 6 additions & 0 deletions Template/NLO/SubProcesses/BinothLHA.f
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ subroutine BinothLHA(p,born_wgt,virt_wgt)
integer nsqso, MLResArrayDim
c statistics for MadLoop
double precision avgPoleRes(2),PoleDiff(2)
INTEGER NINJARS_DP_USAGE,NINJARS_QP_USAGE
COMMON/NINJARSSTATS/NINJARS_DP_USAGE,NINJARS_QP_USAGE
integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
parameter (nbadmax = 5)
Expand Down Expand Up @@ -495,6 +497,10 @@ subroutine BinothLHA(p,born_wgt,virt_wgt)
n10=n10+1 ! no known ret_code (10)
endif
n1(mod(ret_code,10))=n1(mod(ret_code,10))+1 ! unit ret code distribution
if (ret_code/100.eq.2.and.mod(ret_code,10).eq.8)
$ NINJARS_DP_USAGE=NINJARS_DP_USAGE+1
if (ret_code/100.eq.3.and.mod(ret_code,10).eq.2)
$ NINJARS_QP_USAGE=NINJARS_QP_USAGE+1

c Write out the unstable, non-rescued phase-space points (MadLoop return
c code is in the four hundreds) or the ones that are found by the pole
Expand Down
6 changes: 6 additions & 0 deletions Template/NLO/SubProcesses/driver_mintFO.f
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ Program DRIVER
common/SHevents/Hevents
character*10 dum
c statistics for MadLoop
INTEGER NINJARS_DP_USAGE,NINJARS_QP_USAGE
COMMON/NINJARSSTATS/NINJARS_DP_USAGE,NINJARS_QP_USAGE
integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1

Expand Down Expand Up @@ -127,6 +129,8 @@ Program DRIVER
do i=0,9
n1(i)=0
enddo
NINJARS_DP_USAGE=0
NINJARS_QP_USAGE=0

call setrun !Sets up run parameters
call setpara('param_card.dat') !Sets up couplings and masses
Expand Down Expand Up @@ -248,6 +252,8 @@ Program DRIVER
write(*,*) "#Unit ",j," = ",n1(j)
endif
enddo
write(*,*) '#NinjaRS DP = ',NINJARS_DP_USAGE
write(*,*) '#NinjaRS QP = ',NINJARS_QP_USAGE
endif

write (*,*) 'counters for the granny resonances'
Expand Down
6 changes: 6 additions & 0 deletions Template/NLO/SubProcesses/driver_mintMC.f
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ Program DRIVER
character*10 dum
integer iFKS_picked
c statistics for MadLoop
INTEGER NINJARS_DP_USAGE,NINJARS_QP_USAGE
COMMON/NINJARSSTATS/NINJARS_DP_USAGE,NINJARS_QP_USAGE
integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1

Expand Down Expand Up @@ -133,6 +135,8 @@ Program DRIVER
do i=0,9
n1(i)=0
enddo
NINJARS_DP_USAGE=0
NINJARS_QP_USAGE=0

call setrun !Sets up run parameters
call setpara('param_card.dat') !Sets up couplings and masses
Expand Down Expand Up @@ -340,6 +344,8 @@ Program DRIVER
write(*,*) "#Unit ",j," = ",n1(j)
endif
enddo
write(*,*) '#NinjaRS DP = ',NINJARS_DP_USAGE
write(*,*) '#NinjaRS QP = ',NINJARS_QP_USAGE
endif

write (*,*) 'counters for the granny resonances'
Expand Down
18 changes: 17 additions & 1 deletion Template/loop_material/StandAlone/Cards/MadLoopParams.dat
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,26 @@
! 5 | Samurai
! 6 | Ninja
! 7 | COLLIER
! 8 | NinjaRS (oneloopmaster scalar integrals)
! One can use the combinations to reduce integral,e.g.
! 1|2|3 means first use CutTools, if it is not stable, use PJFry++,
! if it is still unstable, use IREGI. If it failed, use QP of CutTools.
! Notice that any reduction tool not available on the system will be automatically
! skipped.

! When using quadruple precision with Ninja or CutTools, the reduction will
#LoopPoleMode
!-1
! Default :: -1
! Select poles of the bare loop integral, leaving finite terms and
! counterterms/R2 unchanged: -1 = legacy backend behavior, 0 = UV+IR,
! 1 = UV only, 2 = IR only, 3 = no poles.
! Modes 1, 2 and 3 require MLReductionLib containing only NinjaRS (8)
! and/or COLLIER (7), including all rescue backends.
! An explicit mode overrides COLLIERComputeUVpoles/IRpoles; -1 keeps
! those legacy switches active for COLLIER and both poles for NinjaRS.
! For example, use MLReductionLib=8|7 and LoopPoleMode=1 for UV poles.

! When using quadruple precision with Ninja, NinjaRS or CutTools, the reduction will
! always be done in quadruple precision, but the parameters below allow you to
! chose if you want to also recompute the *integrand* in quadruple precision.
! Doing so is slow but might improve the accuracy in some situation.
Expand All @@ -30,6 +43,9 @@
#UseQPIntegrandForNinja
!.TRUE.
! Default :: .TRUE.
#UseQPIntegrandForNinjaRS
!.TRUE.
! Default :: .TRUE.
!

! =================================================================================
Expand Down
29 changes: 22 additions & 7 deletions Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.inc
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ C Not stable.
C U == 1
C Stable with CutTools in double precision.
C U == 2
C Stable with PJFry++.
C Stable with PJFry++ (H=2), or NinjaRS in quadruple precision (H=3).
C U == 3
C Stable with IREGI.
C U == 4
Expand All @@ -282,7 +282,7 @@ C Stable with Ninja in double precision.
C U == 7
C Stable with COLLIER.
C U == 8
C Stable with Ninja in quadruple precision.
C Stable with Ninja in quadruple precision (H=3), or NinjaRS in double precision (H=2).
C U == 9
C Stable with CutTools in quadruple precision.
C
Expand Down Expand Up @@ -315,14 +315,17 @@ C
ELSEIF(MLRed.EQ.6)THEN
SET_RET_CODE_U=8
RETURN
ELSE
STOP 'Only CutTools and Ninja can use quardruple precision'
ELSEIF(MLRed.EQ.8)THEN
SET_RET_CODE_U=2
RETURN
ELSE
STOP 'Only CutTools, Ninja and NinjaRS can use quadruple precision'
ENDIF
ENDIF
IF(MLRed.GE.1.AND.MLRed.LE.7)THEN
IF(MLRed.GE.1.AND.MLRed.LE.8)THEN
SET_RET_CODE_U=MLRed
ELSE
STOP 'Only CutTools, PJFry++, IREGI, Golem95, Samurai, Ninja and COLLIER are available'
STOP 'Unknown MadLoop reduction library; supported IDs are 1 through 8'
ENDIF
END

Expand Down Expand Up @@ -370,8 +373,11 @@ C Ninja
ELSEIF(LIBNUM.EQ.7)THEN
C Collier
CALL DETECT_COLLIER(NLOOPLINE,RANK,complex_mass,LPASS)
ELSEIF(LIBNUM.EQ.8)THEN
C NinjaRS
CALL DETECT_NINJARS(NLOOPLINE,RANK,complex_mass,LPASS)
ELSE
STOP 'Only CutTools, PJFry++, IREGI, Golem95, Samurai, Ninja and COLLIER are available'
STOP 'Unknown MadLoop reduction library; supported IDs are 1 through 8'
ENDIF
RETURN
END
Expand Down Expand Up @@ -479,6 +485,15 @@ C It can easily be increased if necessary.
RETURN
END

SUBROUTINE DETECT_NINJARS(NLOOPLINE,RANK,complex_mass,LPASS)
C NinjaRS tensor reduction supports rank at most n+2 in both precisions.
IMPLICIT NONE
INTEGER NLOOPLINE,RANK
LOGICAL complex_mass,LPASS
LPASS=NLOOPLINE.GE.1.AND.RANK.GE.0.AND.
& RANK.LE.NLOOPLINE+2
END

## if(collier_available){
SUBROUTINE DETECT_COLLIER(NLOOPLINE,RANK,complex_mass,LPASS)
C
Expand Down
Loading
Loading