Skip to content

Commit

Permalink
Add LoopTools
Browse files Browse the repository at this point in the history
* Add LoopTools v2.16.
   - c.f. https://feynarts.de/looptools/
* Looptools currently only supports static linking, so following CFEP-18.
   - c.f. https://github.com/conda-forge/cfep/blob/main/cfep-18.md
  • Loading branch information
matthewfeickert committed Nov 20, 2024
1 parent 70c49fe commit fa84830
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 0 deletions.
29 changes: 29 additions & 0 deletions recipes/looptools/examples/example01.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <stdio.h>
#include "clooptools.h"

#define MH2 (126.*126.)
#define MZ2 (91.188*91.188)
#define MW2 (80.4*80.4)
#define Alfa (1./137.0359895)
#define pi 3.14159265358979

#define SW2 (1. - MW2/MZ2)

static ComplexType SigmaH(double k2) {
return Alfa/(32*pi*SW2*MW2)*
( 3*MH2*A0(MH2) + 9*MH2*MH2*B0(k2, MH2, MH2)
+ 2*(MH2*MH2 - 4*MW2*(k2 - 3*MW2))*B0(k2, MW2, MW2)
+ 2*(6*MW2 + MH2)*A0(MW2) - 24*MW2*MW2
+ (MH2*MH2 - 4*MZ2*(k2 - 3*MZ2))*B0(k2, MZ2, MZ2)
+ (6*MZ2 + MH2)*A0(MZ2) - 12*MZ2*MZ2 );
}

int main() {
RealType s;
ltini();
for( s = 100; s <= 1000; s += 50 ) {
ComplexType sig = SigmaH(s);
printf("%g\t%g%+gi\n", s, Re(sig), Im(sig));
}
ltexi();
}
80 changes: 80 additions & 0 deletions recipes/looptools/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{% set name = "looptools" %}
{% set version = "2.16" %}

package:
# FIXME: c.f. comment below in 'build' on dynamic linking
# c.f. https://github.com/conda-forge/cfep/blob/383bb3026c9a06c12df3c74eeb59ce1f6d53e07d/cfep-18.md
name: {{ name }}-static
version: {{ version }}

source:
url: https://feynarts.de/looptools/LoopTools-{{ version }}.tar.gz
sha256: 4113467575db3a14405d62d9e516b3b90410b73ea8d20c8eb8d70a30fc5cc9cb

build:
skip: true # [win]
number: 0
run_exports:
- {{ pin_subpackage('looptools-static', max_pin='x.x') }}
ignore_run_exports_from:
- {{ compiler('cxx') }}
script:
# FIXME: Avoid error from trying to create directories that exist
- sed -i 's/mkdir /mkdir -p /g' makefile.in
- ./configure --help
# FIXME: Author has disabled builds with dynamic linking
# c.f. https://github.com/hep-packaging-coordination/packaging-hep-simulation-stack/issues/4#issuecomment-2489198926
# - ./configure --prefix=$PREFIX --dynamic --64 --native
- ./configure --prefix=$PREFIX --64 # [build_platform != target_platform]
- ./configure --prefix=$PREFIX --64 --native # [build_platform == target_platform]
- make
- make install
- ln -s -f $PREFIX/lib64/libooptools.a $PREFIX/lib/libooptools.a
- rm -rf build

requirements:
build:
- {{ stdlib('c') }}
- {{ compiler('cxx') }}
- {{ compiler('fortran') }}
- make
- sed
- gawk

test:
files:
- examples/
requires:
- {{ compiler('cxx') }}
- gfortran
commands:
- test -f $PREFIX/lib64/libooptools.a
- test -f $PREFIX/lib/libooptools.a # [linux]
- test -f $PREFIX/include/looptools.h
- test -f $PREFIX/include/clooptools.h
- test -f $PREFIX/bin/lt
- test -f $PREFIX/bin/fcc
- test -f $PREFIX/bin/f++ # [linux]

- fcc --help
- f++ --help

- cd examples
- $CXX example01.cpp -o example01 $CXXFLAGS $LDFLAGS -looptools -lgfortran
- ./example01

about:
home: https://feynarts.de/looptools/
summary: 'looptools: A package for evaluation of scalar and tensor one-loop integrals'
description: |
LoopTools is a package for evaluation of scalar and tensor one-loop integrals
based on the FF package by G.J. van Oldenborgh. It features an easy Fortran,
C++, and Mathematica interface to the scalar one-loop functions of FF and
in addition provides the 2-, 3-, and 4-point tensor coefficient functions.
license: GPL-3.0-only
license_family: GPL
license_file: COPYING

extra:
recipe-maintainers:
- matthewfeickert

0 comments on commit fa84830

Please sign in to comment.