diff --git a/pkgs/applications/science/math/palp/default.nix b/pkgs/applications/science/math/palp/default.nix new file mode 100644 index 000000000000..3484c369db3b --- /dev/null +++ b/pkgs/applications/science/math/palp/default.nix @@ -0,0 +1,67 @@ +{ stdenv +, fetchurl +, dimensions ? 6 # works for <= dimensions dimensions, but is only optimized for that exact value +, doSymlink ? true # symlink the executables to the default location (without dimension postfix) +}: + +stdenv.mkDerivation rec { + version = "2.1"; + dim = toString dimensions; + name = "palp-${dim}d-${version}"; + + src = fetchurl { + url = "http://hep.itp.tuwien.ac.at/~kreuzer/CY/palp/palp-${version}.tar.gz"; + sha256 = "1s7s2lc5f0ig1yy7ygsh3sddm3sbq4mxwybqsj8lp9wjdxs7qfrs"; + }; + + hardeningDisable = [ "format" ]; + + preBuild = '' + echo Building PALP optimized for ${dim} dimensions + sed -i "s/^#define[^a-zA-Z]*POLY_Dmax.*/#define POLY_Dmax ${dim}/" Global.h + ''; + + installPhase = '' + mkdir -p "$out/bin" + for file in poly class cws nef mori; do + cp -p $file.x "$out/bin/$file-${dim}d.x" + done + '' + stdenv.lib.optionalString doSymlink '' + cd "$out/bin" + for file in poly class cws nef mori; do + ln -sf $file-6d.x $file.x + done + ''; + + meta = with stdenv.lib; { + description = "A Package for Analyzing Lattice Polytopes"; + longDescription = '' + A Package for Analyzing Lattice Polytopes (PALP) is a set of C + programs for calculations with lattice polytopes and applications to + toric geometry. + + It contains routines for vertex and facet enumeration, computation of + incidences and symmetries, as well as completion of the set of lattice + points in the convex hull of a given set of points. In addition, there + are procedures specialised to reflexive polytopes such as the + enumeration of reflexive subpolytopes, and applications to toric + geometry and string theory, like the computation of Hodge data and + fibration structures for toric Calabi-Yau varieties. The package is + well tested and optimised in speed as it was used for time consuming + tasks such as the classification of reflexive polyhedra in 4 + dimensions and the creation and manipulation of very large lists of + 5-dimensional polyhedra. + + While originally intended for low-dimensional applications, the + algorithms work in any dimension and our key routine for vertex and + facet enumeration compares well with existing packages. + ''; + homepage = http://hep.itp.tuwien.ac.at/~kreuzer/CY/CYpalp.html; + # Just a link on the website pointing to gpl -- now gplv3. When the last + # version was released that pointed to gplv2 however, so thats probably + # the right license. + license = licenses.gpl2; + maintainers = with maintainers; [ timokau ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a3a0f572fd74..bda907901025 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -20268,6 +20268,8 @@ with pkgs; gp2c = callPackage ../applications/science/math/pari/gp2c.nix { }; pari-unstable = callPackage ../applications/science/math/pari/unstable.nix {}; + palp = callPackage ../applications/science/math/palp { }; + ratpoints = callPackage ../applications/science/math/ratpoints {}; calc = callPackage ../applications/science/math/calc { };