New port: math/tmv: Fast, intuitive linear algebra library for C++

This library can be useful to anybody who needs to write code that
involves matrix and vector computations.

Please see the documentation here:
https://github.com/rmjarvis/tmv/blob/master/doc/TMV_Documentation.pdf

Approved by:	tcberner (mentor)
Differential Revision:	D13689
This commit is contained in:
Yuri Victorovich 2018-01-26 23:14:51 +00:00
parent 02dd41460e
commit 1ec427a17d
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=460061
6 changed files with 182 additions and 0 deletions

View file

@ -741,6 +741,7 @@
SUBDIR += testu01 SUBDIR += testu01
SUBDIR += tetgen SUBDIR += tetgen
SUBDIR += timbl SUBDIR += timbl
SUBDIR += tmv
SUBDIR += tomsfastmath SUBDIR += tomsfastmath
SUBDIR += topaz SUBDIR += topaz
SUBDIR += triangle SUBDIR += triangle

31
math/tmv/Makefile Normal file
View file

@ -0,0 +1,31 @@
# $FreeBSD$
PORTNAME= tmv
DISTVERSIONPREFIX= v
DISTVERSION= 0.75
CATEGORIES= math
MAINTAINER= yuri@FreeBSD.org
COMMENT= Fast, intuitive linear algebra library for C++
LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/TMV_LICENSE
LIB_DEPENDS= libomp.so:devel/openmp
USES= gmake blaslapack:netlib localbase
USE_GITHUB= yes
GH_ACCOUNT= rmjarvis
USE_LDCONFIG= yes
BUILD_WRKSRC= ${WRKSRC}/src
INSTALL_WRKSRC= ${BUILD_WRKSRC}
MAKEFILE= ${FILESDIR}/Makefile
OPTIONS_DEFINE= DOCS
post-install-DOCS-on:
@${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/doc/TMV_Documentation.pdf ${STAGEDIR}${DOCSDIR}
.include <bsd.port.mk>

3
math/tmv/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1514521249
SHA256 (rmjarvis-tmv-v0.75_GH0.tar.gz) = f0ed1b500c5f4ee12f9d018a7d6a883f06df4a345a1010e3f96223410c9b3dea
SIZE (rmjarvis-tmv-v0.75_GH0.tar.gz) = 1676639

33
math/tmv/files/Makefile Normal file
View file

@ -0,0 +1,33 @@
# $FreeBSD$
# lib/libtmv.so
LST1= TMV_Vector TMV_MultVV TMV_AddVV TMV_MultXV TMV_BaseMatrix TMV_Matrix TMV_MultXM TMV_AddMM TMV_MultMV TMV_Rank1_VVM TMV_MultMM_CCC TMV_MultMM_CRC TMV_MultMM_RCC TMV_MultMM_Block TMV_IntegerDet TMV_DiagMatrix TMV_MultDV TMV_AddDM TMV_MultDM TMV_TriMatrix TMV_TriDiv TMV_MultUV TMV_MultXU TMV_AddUU TMV_MultUM TMV_MultUL TMV_MultUU TMV_MultDU TMV_Givens TMV_Householder TMV_LUD TMV_LUDecompose TMV_LUDiv TMV_LUInverse TMV_QRD TMV_QRDecompose TMV_QRDiv TMV_PackedQ TMV_QRInverse TMV_GetQFromQR TMV_QRUpdate TMV_QRDowndate TMV_QRPD TMV_SVD TMV_SVDecompose TMV_SVDecompose_Bidiag TMV_SVDecompose_QR TMV_SVDiv TMV_TriDiv_V TMV_TriDiv_M TMV_TriDiv_L TMV_TriInverse TMV_MultMM TMV_MultMM_OpenMP TMV_SVDecompose_DC TMV_QRPDecompose
LIB1= libtmv.so.0
# lib/libtmv_symband.so
LST2= TMV_BandMatrix TMV_MultBV TMV_MultXB TMV_AddBB TMV_MultBM TMV_MultBB TMV_BandIntegerDet TMV_SymMatrix TMV_MultSV TMV_AddSS TMV_Rank1_VVS TMV_Rank2_VVS TMV_MultSM TMV_RankK_MMS TMV_Rank2K_MMS TMV_RankK_ULS TMV_RankK_LUS TMV_SymMultMMS TMV_SymIntegerDet TMV_SymBandMatrix TMV_MultsBV TMV_AddsBsB TMV_MultsBM TMV_MultsBB TMV_SymBandIntegerDet TMV_BandLUD TMV_BandLUDecompose TMV_BandLUDiv TMV_BandLUInverse TMV_BandTriDiv_V TMV_BandTriDiv_M TMV_BandQRD TMV_BandQRDecompose TMV_BandQRDiv TMV_BandQRInverse TMV_BandSVD TMV_BandSVDecompose TMV_SymHouseholder TMV_SymLDLD TMV_SymLDLDecompose TMV_SymLDLDiv TMV_SymLDLInverse TMV_SymLDLPseudo TMV_SymSquare TMV_SymCHD TMV_SymCHDecompose TMV_SymCHDiv TMV_SymCHInverse TMV_SymSVD TMV_SymSVInverse TMV_IsNaN TMV_SymSVDecompose_Tridiag TMV_SymSVDecompose_QR TMV_SymBandCHD TMV_SymBandCHDecompose TMV_SymBandCHDiv TMV_SymBandCHInverse TMV_SymBandSVD TMV_SymBandSVDecompose TMV_SymSVDecompose_DC TMV_SymSVDecompose
LIB2= libtmv_symband.so.0
CXXFLAGS+= -I../include -fopenmp -fPIC -DTMV_NDEBUG -DFBLAS -DNOLAP
LDFLAGS+= -lblas -lomp
SRCS1= $(addsuffix .cpp, $(LST1))
SRCS2= $(addsuffix .cpp, $(LST2))
OBJS1= $(addsuffix .o, $(LST1))
OBJS2= $(addsuffix .o, $(LST2))
all: $(LIB1) $(LIB2)
$(LIB1): $(OBJS1)
$(CXX) -shared -fopenmp -Wl,-soname,$(LIB1) $(LDFLAGS) -o $(LIB1) $(OBJS1)
$(LIB2): $(OBJS2)
$(CXX) -shared -fopenmp -Wl,-soname,$(LIB2) $(LDFLAGS) -o $(LIB2) $(OBJS2)
install:
mkdir -p $(DESTDIR)$(PREFIX)/include/tmv $(DESTDIR)$(PREFIX)/lib
install ../include/TMV*.h $(DESTDIR)$(PREFIX)/include
install ../include/tmv/TMV*.h $(DESTDIR)$(PREFIX)/include/tmv
${BSD_INSTALL_LIB} $(LIB1) $(DESTDIR)$(PREFIX)/lib
${BSD_INSTALL_LIB} $(LIB2) $(DESTDIR)$(PREFIX)/lib
cd $(DESTDIR)$(PREFIX)/lib && ln -s $(LIB1) $(LIB1:.0=) && ln -s $(LIB2) $(LIB2:.0=)

8
math/tmv/pkg-descr Normal file
View file

@ -0,0 +1,8 @@
The Template Matrix/Vector (TMV) Library is a C++ class library designed to
make writing code with vectors and matrices both transparent and fast.
Transparency means that when you look at your code months later, it is obvious
what the code does, making it easier to debug. Fast means the execution time of
the code should be as fast as possible - this is mostly algorithm dependent, so
we want the underlying library code to use the fastest algorithms possible.
WWW: https://github.com/rmjarvis/tmv

106
math/tmv/pkg-plist Normal file
View file

@ -0,0 +1,106 @@
include/TMV.h
include/TMV_Band.h
include/TMV_Diag.h
include/TMV_Small.h
include/TMV_Sym.h
include/TMV_SymBand.h
include/TMV_Tri.h
include/tmv/TMV_Array.h
include/tmv/TMV_AuxAllDiv.h
include/tmv/TMV_AuxMatComposite1.h
include/tmv/TMV_AuxMatComposite2.h
include/tmv/TMV_AuxMatComposite3.h
include/tmv/TMV_AuxProdMM.h
include/tmv/TMV_AuxProdMMa.h
include/tmv/TMV_AuxProdXM.h
include/tmv/TMV_AuxProdXV.h
include/tmv/TMV_AuxQuotMM.h
include/tmv/TMV_AuxQuotMMa.h
include/tmv/TMV_AuxQuotXM.h
include/tmv/TMV_AuxQuotXMa.h
include/tmv/TMV_AuxSumMM.h
include/tmv/TMV_AuxSumMMa.h
include/tmv/TMV_AuxSumMMb.h
include/tmv/TMV_AuxSumMX.h
include/tmv/TMV_AuxTQuotMM.h
include/tmv/TMV_AuxTQuotMMa.h
include/tmv/TMV_AuxVecComposite.h
include/tmv/TMV_BandLUD.h
include/tmv/TMV_BandMatrix.h
include/tmv/TMV_BandMatrixArith.h
include/tmv/TMV_BandMatrixArithFunc.h
include/tmv/TMV_BandQRD.h
include/tmv/TMV_BandSVD.h
include/tmv/TMV_BandSymArith.h
include/tmv/TMV_BandSymBandArith.h
include/tmv/TMV_Base.h
include/tmv/TMV_BaseBandMatrix.h
include/tmv/TMV_BaseDiagMatrix.h
include/tmv/TMV_BaseMatrix.h
include/tmv/TMV_BaseSymBandMatrix.h
include/tmv/TMV_BaseSymMatrix.h
include/tmv/TMV_BaseTriMatrix.h
include/tmv/TMV_BaseVector.h
include/tmv/TMV_DiagBandArith.h
include/tmv/TMV_DiagMatrix.h
include/tmv/TMV_DiagMatrixArith.h
include/tmv/TMV_DiagMatrixArithFunc.h
include/tmv/TMV_DiagSymArith.h
include/tmv/TMV_DiagSymBandArith.h
include/tmv/TMV_DiagTriArith.h
include/tmv/TMV_DiagTriArithFunc.h
include/tmv/TMV_Divider.h
include/tmv/TMV_Givens.h
include/tmv/TMV_Householder.h
include/tmv/TMV_IOStyle.h
include/tmv/TMV_LUD.h
include/tmv/TMV_ListInit.h
include/tmv/TMV_MIt.h
include/tmv/TMV_Matrix.h
include/tmv/TMV_MatrixArith.h
include/tmv/TMV_MatrixArithFunc.h
include/tmv/TMV_PackedQ.h
include/tmv/TMV_Permutation.h
include/tmv/TMV_PermutationArith.h
include/tmv/TMV_QRD.h
include/tmv/TMV_QRPD.h
include/tmv/TMV_SVD.h
include/tmv/TMV_SimpleMatrix.h
include/tmv/TMV_SmallMatrix.h
include/tmv/TMV_SmallMatrixArith.h
include/tmv/TMV_SmallMatrixArithFunc.h
include/tmv/TMV_SmallMatrixDiv.h
include/tmv/TMV_SmallVector.h
include/tmv/TMV_SmallVectorArith.h
include/tmv/TMV_SmallVectorArithFunc.h
include/tmv/TMV_SymBandCHD.h
include/tmv/TMV_SymBandMatrix.h
include/tmv/TMV_SymBandMatrixArith.h
include/tmv/TMV_SymBandMatrixArithFunc.h
include/tmv/TMV_SymBandSVD.h
include/tmv/TMV_SymCHD.h
include/tmv/TMV_SymDivider.h
include/tmv/TMV_SymHouseholder.h
include/tmv/TMV_SymLDLD.h
include/tmv/TMV_SymMatrix.h
include/tmv/TMV_SymMatrixArith.h
include/tmv/TMV_SymMatrixArithFunc.h
include/tmv/TMV_SymSVD.h
include/tmv/TMV_SymSymBandArith.h
include/tmv/TMV_TriBandArith.h
include/tmv/TMV_TriBandArithFunc.h
include/tmv/TMV_TriDiv.h
include/tmv/TMV_TriMatrix.h
include/tmv/TMV_TriMatrixArith.h
include/tmv/TMV_TriMatrixArithFunc.h
include/tmv/TMV_TriSymArith.h
include/tmv/TMV_TriSymBandArith.h
include/tmv/TMV_VIt.h
include/tmv/TMV_Vector.h
include/tmv/TMV_VectorArith.h
include/tmv/TMV_VectorArithFunc.h
lib/libtmv.so
lib/libtmv.so.0
lib/libtmv_symband.so
lib/libtmv_symband.so.0
%%PORTDOCS%%%%DOCSDIR%%/TMV_Documentation.pdf