SUMMARY="A C++ template library for linear algebra, vectors and more" DESCRIPTION="Eigen is a versatile, fast, elegant and reliable template library \ that supports all matrix sizes, from small fixed-size matrices to arbitrarily \ large dense matrices, and even sparse matrices. - It supports all standard numeric types, including std::complex, integers, \ and is easily extensible to custom numeric types. - It supports various matrix decompositions and geometry features. - Its ecosystem of unsupported modules provides many specialized features \ such as non-linear optimization, matrix functions, a polynomial solver, FFT, \ and much more. - Expression templates allow to intelligently remove temporaries and enable \ lazy evaluation, when that is appropriate. - Explicit vectorization is performed for SSE 2/3/4, AVX, FMA, AVX512, \ ARM NEON (32-bit and 64-bit), PowerPC instruction sets, and now S390x SIMD \ (ZVector) with graceful fallback to non-vectorized code. - Fixed-size matrices are fully optimized: dynamic memory allocation is \ avoided, and the loops are unrolled when that makes sense. - For large matrices, special attention is paid to cache-friendliness. - Algorithms are carefully selected for reliability. Reliability trade-offs \ are clearly documented and extremely safe decompositions are available. - Eigen is thoroughly tested through its own test suite (over 500 executables) \ the standard BLAS test suite, and parts of the LAPACK test suite. - The API is extremely clean and expressive while feeling natural to C++ \ programmers, thanks to expression templates. - Implementing an algorithm on top of Eigen feels like just copying pseudocode." HOMEPAGE="http://eigen.tuxfamily.org" COPYRIGHT="2006-2011 Benoit Jacob 2008-2012 Gael Guennebaud, et al." LICENSE="MPL v2" REVISION="4" SOURCE_URI="http://gitlab.com/libeigen/eigen/-/archive/$portVersion/eigen-$portVersion.tar.gz" CHECKSUM_SHA256="7985975b787340124786f092b3a07d594b2e9cd53bbfe5f3d9b1daee7d55f56f" PATCHES="eigen-$portVersion.patchset" ARCHITECTURES="all !x86_gcc2" SECONDARY_ARCHITECTURES="x86" PROVIDES=" eigen$secondaryArchSuffix = $portVersion devel:eigen$secondaryArchSuffix = $portVersion " REQUIRES=" haiku$secondaryArchSuffix devel:libboost_system$secondaryArchSuffix devel:libcholmod$secondaryArchSuffix devel:libfftw3f$secondaryArchSuffix devel:libGL$secondaryArchSuffix devel:libgmp$secondaryArchSuffix devel:libmetis$secondaryArchSuffix devel:libmpfr$secondaryArchSuffix devel:libopenblas$secondaryArchSuffix devel:libumfpack$secondaryArchSuffix devel:libsuperlu$secondaryArchSuffix devel:libspqr$secondaryArchSuffix devel:libtbb$secondaryArchSuffix " BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel devel:libboost_system$secondaryArchSuffix >= 1.69.0 devel:libcholmod$secondaryArchSuffix devel:libfftw3f$secondaryArchSuffix devel:libGL$secondaryArchSuffix devel:libgmp$secondaryArchSuffix devel:libmetis$secondaryArchSuffix devel:libmpfr$secondaryArchSuffix >= 6 devel:libopenblas$secondaryArchSuffix devel:libumfpack$secondaryArchSuffix devel:libsuperlu$secondaryArchSuffix devel:libspqr$secondaryArchSuffix devel:libtbb$secondaryArchSuffix " BUILD_PREREQUIRES=" cmd:cmake cmd:gcc$secondaryArchSuffix cmd:gfortran$secondaryArchSuffix cmd:make cmd:pkg_config$secondaryArchSuffix " BUILD() { mkdir -p build cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=$prefix \ -DINCLUDE_INSTALL_DIR=$relativeIncludeDir make $jobArgs } INSTALL() { cd build make install PREFIX=$prefix mv $prefix/share/eigen3 $dataDir mkdir -p $developLibDir mv $prefix/share/pkgconfig $developLibDir rmdir $prefix/share fixPkgconfig } TEST() { cd build make check -j 4 }