Re-organization: moving all files.

I re-organized into original cpp directory and 4 additional directories: base, geometry, slam, and tests.
cpp will be further renamed/sub-divided and contains the core library.
I wanted it not depend on geometry or slam, which necessitated moving complicated tests to a dedicated directory.
release/4.3a0
Frank Dellaert 2010-07-12 07:16:31 +00:00
parent 0bb661e847
commit fea5beb638
186 changed files with 6951 additions and 2228 deletions

983
.cproject

File diff suppressed because it is too large Load Diff

View File

@ -1,35 +0,0 @@
# Makefile to compile the unit test library, will end up in $(LIBDIR)
.PHONY: all install clean
all: libCppUnitLite.a
CC ?= gcc
CXX ?= g++
CPP ?= cpp
CXXFLAGS += -O2
sources = $(shell ls *.cpp)
objects = $(sources:.cpp=.o)
library = libCppUnitLite.a
$(library): $(objects)
ar crsv $@ $(objects)
ranlib $(library)
clean:
rm -f *.o *.*~ $(library)
check:
echo 'no check for CppUnitLite'
distdir:
# Richard: added the following dependencies so that recursive make works:
install: all
distclean: clean
check: all

12
CppUnitLite/Makefile.am Normal file
View File

@ -0,0 +1,12 @@
#----------------------------------------------------------------------------------------------------
# CppUnitLite
# replaced Makefile with automake for easy linking
#----------------------------------------------------------------------------------------------------
headers = TestHarness.h
sources = Failure.cpp SimpleString.cpp Test.cpp TestRegistry.cpp TestResult.cpp
headers += $(sources:.cpp=.h)
noinst_HEADERS = $(headers)
noinst_LIBRARIES = libCppUnitLite.a
libCppUnitLite_a_SOURCES = $(sources)

489
CppUnitLite/Makefile.in Normal file
View File

@ -0,0 +1,489 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#----------------------------------------------------------------------------------------------------
# CppUnitLite
# replaced Makefile with automake for easy linking
#----------------------------------------------------------------------------------------------------
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CppUnitLite
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
ARFLAGS = cru
libCppUnitLite_a_AR = $(AR) $(ARFLAGS)
libCppUnitLite_a_LIBADD =
am__objects_1 = Failure.$(OBJEXT) SimpleString.$(OBJEXT) \
Test.$(OBJEXT) TestRegistry.$(OBJEXT) TestResult.$(OBJEXT)
am_libCppUnitLite_a_OBJECTS = $(am__objects_1)
libCppUnitLite_a_OBJECTS = $(am_libCppUnitLite_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libCppUnitLite_a_SOURCES)
DIST_SOURCES = $(libCppUnitLite_a_SOURCES)
HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
boost = @boost@
boost_serialization = @boost_serialization@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
toolbox = @toolbox@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
headers = TestHarness.h $(sources:.cpp=.h)
sources = Failure.cpp SimpleString.cpp Test.cpp TestRegistry.cpp TestResult.cpp
noinst_HEADERS = $(headers)
noinst_LIBRARIES = libCppUnitLite.a
libCppUnitLite_a_SOURCES = $(sources)
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CppUnitLite/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CppUnitLite/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
libCppUnitLite.a: $(libCppUnitLite_a_OBJECTS) $(libCppUnitLite_a_DEPENDENCIES)
-rm -f libCppUnitLite.a
$(libCppUnitLite_a_AR) libCppUnitLite.a $(libCppUnitLite_a_OBJECTS) $(libCppUnitLite_a_LIBADD)
$(RANLIB) libCppUnitLite.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Failure.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleString.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestRegistry.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResult.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES) $(HEADERS)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLIBRARIES ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

11
LICENSE
View File

@ -1 +1,12 @@
The GTSAM library has not been licensed yet. See also COPYING
GTSAM depends on the following packages that are built locally:
UFconfig
Copyright (c) 2006-2009, Timothy A. Davis. Distributed under the GNU LGPL license.
CCOLAMD
Copyright (c) 1998-2007, University of Florida. Author: Timothy A. Davis, Siva Rajamanickam,
and Stefan Larimore. The COLAMD algorithm was developed in collaboration Esmond Ng and John Gilbert.
Distributed under the GNU LGPL license.

View File

@ -1,46 +1,49 @@
#----------------------------------------------------------------------------------------------------
# GTSAM top-level automake file
#----------------------------------------------------------------------------------------------------
#The option -I m4 tells Autoconf to look for additional Autoconf macros in the m4 subdirectory.
ACLOCAL_AMFLAGS = -I m4
# make automake install some standard but missing files
AUTOMAKE_OPTIONS = foreign
SUBDIRS = colamd CppUnitLite ldl spqr_mini cpp wrap
# install the matlab toolbox
# All the sub-directories that need to be built
SUBDIRS = CppUnitLite colamd ldl spqr_mini base cpp geometry slam . tests wrap
# And the corresponding libraries produced
SUBLIBS = colamd/libcolamd.la ldl/libldl.la \
base/libbase.la cpp/libcpp.la geometry/libgeometry.la slam/libslam.la
if USE_LAPACK
SUBLIBS += spqr_mini/libspqr_mini.la
endif
EXTRA_DIST = autogen.sh configure.ac THANKS
# The following lines specify the actual shared library to be built with libtool
lib_LTLIBRARIES = libgtsam.la
libgtsam_la_SOURCES =
libgtsam_la_LIBADD = $(SUBLIBS)
libgtsam_la_LDFLAGS = -version-info 0:0:0
# TODO: UFconfig, CCOLAMD, and LDL automake magic without adding or touching any file
# in those directories as to not invalidate the LGPL license
# See some possibilities in
# http://www.gnu.org/software/hello/manual/automake/Third_002dParty-Makefiles.html
# install the headers and matlab toolbox
install-exec-hook:
install -d ${toolbox}/gtsam && \
cp -rf toolbox/* ${toolbox}/gtsam && \
install -d ${prefix}/include/wrap && \
cp -f wrap/wrap-matlab.h ${prefix}/include/wrap/matlab.h && \
install -d $(prefix)/include && \
install -d $(prefix)/include/colamd && \
cp -f colamd/colamd.h $(prefix)/include/colamd/ && \
cp -f colamd/ccolamd.h $(prefix)/include/colamd/ && \
cp -f colamd/UFconfig.h $(prefix)/include/colamd/ && \
cp -f colamd/libcolamd.a $(prefix)/lib/ && \
install -d $(prefix)/include/ldl && \
cp -f ldl/ldl.h $(prefix)/include/ldl/ && \
cp -f ldl/UFconfig.h $(prefix)/include/ldl/ && \
cp -f ldl/libldl.a $(prefix)/lib/
cp -f wrap/wrap-matlab.h ${prefix}/include/wrap/matlab.h
# Todo: Also do CppUnitLite with automake
dist-hook:
mkdir $(distdir)/CppUnitLite
cp -p $(srcdir)/CppUnitLite/Makefile $(distdir)/CppUnitLite
cp -p $(srcdir)/CppUnitLite/*.h $(distdir)/CppUnitLite
cp -p $(srcdir)/CppUnitLite/*.cpp $(distdir)/CppUnitLite
mkdir $(distdir)/colamd
cp -p $(srcdir)/colamd/Makefile $(distdir)/colamd
cp -p $(srcdir)/colamd/*.h $(distdir)/colamd
cp -p $(srcdir)/colamd/*.c $(distdir)/colamd
cp -p $(srcdir)/colamd/*.cpp $(distdir)/colamd
mkdir $(distdir)/ldl
cp -p $(srcdir)/ldl/Makefile $(distdir)/ldl
cp -p $(srcdir)/ldl/*.h $(distdir)/ldl
cp -p $(srcdir)/ldl/*.c $(distdir)/ldl
cp -p $(srcdir)/ldl/*.cpp $(distdir)/ldl
mkdir $(distdir)/spqr_mini
cp -p $(srcdir)/spqr_mini/Makefile $(distdir)/spqr_mini
cp -p $(srcdir)/spqr_mini/*.h $(distdir)/spqr_mini
cp -p $(srcdir)/spqr_mini/*.c $(distdir)/spqr_mini
cp -p $(srcdir)/spqr_mini/*.cpp $(distdir)/spqr_mini
mkdir $(distdir)/config
mkdir $(distdir)/matlab
cp -p $(srcdir)/matlab/*.m $(distdir)/matlab
cp -r $(srcdir)/wrap/expected $(distdir)/wrap

18
THANKS Normal file
View File

@ -0,0 +1,18 @@
GTSAM was made possible by the efforts of many collaborators at Georgia Tech
Doru Balcan
Alex Cunningham
Alireza Fathi
Eohan George
Viorela Ila
Yong-Dian Jian
Michael Kaess
Kai Ni
Carlos Nieto
Manohar Paluri
Christian Potthast
Richard Roberts
Grant Schindler
Many thanks for your hard work!!!!
Frank Dellaert

View File

@ -20,8 +20,6 @@
namespace gtsam {
class Symbol;
template <class Key>
class DSF : protected BTree<Key, Key> {
@ -153,6 +151,5 @@ namespace gtsam {
// shortcuts
typedef DSF<int> DSFInt;
typedef DSF<Symbol> DSFSymbol;
} // namespace gtsam

86
base/Makefile.am Normal file
View File

@ -0,0 +1,86 @@
#----------------------------------------------------------------------------------------------------
# GTSAM base
# provides some base Math and data structures, as well as test-related utilities
#----------------------------------------------------------------------------------------------------
headers =
sources =
check_PROGRAMS =
# base Math
sources += Vector.cpp svdcmp.cpp Matrix.cpp
check_PROGRAMS += testVector testMatrix
if USE_LAPACK
sources += SPQRUtil.cpp
check_PROGRAMS += testSPQRUtil
endif
# Testing
headers += Testable.h numericalDerivative.h
# Lie Groups
headers += Lie.h Lie-inl.h
# Data structures
headers += BTree.h DSF.h
sources += DSFVector.cpp
check_PROGRAMS += testBTree testDSF testDSFVector
# Timing tests
noinst_PROGRAMS = timeMatrix
#----------------------------------------------------------------------------------------------------
# Create a libtool library that is not installed
# It will be packaged in the toplevel libgtsam.la as specfied in ../Makefile.am
# The headers are installed in $(includedir)/gtsam:
#----------------------------------------------------------------------------------------------------
headers += $(sources:.cpp=.h)
pkginclude_HEADERS = $(headers)
noinst_LTLIBRARIES = libbase.la
libbase_la_SOURCES = $(sources)
AM_CPPFLAGS = -I$(boost)
if USE_BLAS
AM_CPPFLAGS += -DGT_USE_CBLAS
endif
if USE_LAPACK
AM_CPPFLAGS += -DGT_USE_LAPACK
endif
# On Mac, we compile using the BLAS/LAPACK headers in the Accelerate framework
if USE_ACCELERATE_MACOS
AM_CPPFLAGS += -F Accelerate
endif
#----------------------------------------------------------------------------------------------------
# rules to build local programs
#----------------------------------------------------------------------------------------------------
TESTS = $(check_PROGRAMS)
AM_DEFAULT_SOURCE_EXT = .cpp
AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization)
LDADD = libbase.la ../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
if USE_BLAS_LINUX
AM_LDFLAGS += -lcblas -latlas
endif
if USE_LAPACK
LDADD += ../spqr_mini/libspqr_mini.la
endif
if USE_LAPACK_LINUX
AM_LDFLAGS += -llapack
endif
if USE_ACCELERATE_MACOS
AM_LDFLAGS += -framework Accelerate
endif
# rule to run an executable
%.run: % $(LDADD)
./$^
#----------------------------------------------------------------------------------------------------

777
base/Makefile.in Normal file
View File

@ -0,0 +1,777 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#----------------------------------------------------------------------------------------------------
# GTSAM base
# provides some base Math and data structures, as well as test-related utilities
#----------------------------------------------------------------------------------------------------
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
check_PROGRAMS = testVector$(EXEEXT) testMatrix$(EXEEXT) \
$(am__EXEEXT_1) testBTree$(EXEEXT) testDSF$(EXEEXT) \
testDSFVector$(EXEEXT)
@USE_LAPACK_TRUE@am__append_1 = SPQRUtil.cpp
@USE_LAPACK_TRUE@am__append_2 = testSPQRUtil
noinst_PROGRAMS = timeMatrix$(EXEEXT)
@USE_BLAS_TRUE@am__append_3 = -DGT_USE_CBLAS
@USE_LAPACK_TRUE@am__append_4 = -DGT_USE_LAPACK
# On Mac, we compile using the BLAS/LAPACK headers in the Accelerate framework
@USE_ACCELERATE_MACOS_TRUE@am__append_5 = -F Accelerate
@USE_BLAS_LINUX_TRUE@am__append_6 = -lcblas -latlas
@USE_LAPACK_TRUE@am__append_7 = ../spqr_mini/libspqr_mini.la
@USE_LAPACK_LINUX_TRUE@am__append_8 = -llapack
@USE_ACCELERATE_MACOS_TRUE@am__append_9 = -framework Accelerate
subdir = base
DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libbase_la_LIBADD =
am__libbase_la_SOURCES_DIST = Vector.cpp svdcmp.cpp Matrix.cpp \
SPQRUtil.cpp DSFVector.cpp
@USE_LAPACK_TRUE@am__objects_1 = SPQRUtil.lo
am__objects_2 = Vector.lo svdcmp.lo Matrix.lo $(am__objects_1) \
DSFVector.lo
am_libbase_la_OBJECTS = $(am__objects_2)
libbase_la_OBJECTS = $(am_libbase_la_OBJECTS)
@USE_LAPACK_TRUE@am__EXEEXT_1 = testSPQRUtil$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
testBTree_SOURCES = testBTree.cpp
testBTree_OBJECTS = testBTree.$(OBJEXT)
testBTree_LDADD = $(LDADD)
testBTree_DEPENDENCIES = libbase.la ../ldl/libldl.la \
../CppUnitLite/libCppUnitLite.a $(am__append_7)
testDSF_SOURCES = testDSF.cpp
testDSF_OBJECTS = testDSF.$(OBJEXT)
testDSF_LDADD = $(LDADD)
testDSF_DEPENDENCIES = libbase.la ../ldl/libldl.la \
../CppUnitLite/libCppUnitLite.a $(am__append_7)
testDSFVector_SOURCES = testDSFVector.cpp
testDSFVector_OBJECTS = testDSFVector.$(OBJEXT)
testDSFVector_LDADD = $(LDADD)
testDSFVector_DEPENDENCIES = libbase.la ../ldl/libldl.la \
../CppUnitLite/libCppUnitLite.a $(am__append_7)
testMatrix_SOURCES = testMatrix.cpp
testMatrix_OBJECTS = testMatrix.$(OBJEXT)
testMatrix_LDADD = $(LDADD)
testMatrix_DEPENDENCIES = libbase.la ../ldl/libldl.la \
../CppUnitLite/libCppUnitLite.a $(am__append_7)
testSPQRUtil_SOURCES = testSPQRUtil.cpp
testSPQRUtil_OBJECTS = testSPQRUtil.$(OBJEXT)
testSPQRUtil_LDADD = $(LDADD)
testSPQRUtil_DEPENDENCIES = libbase.la ../ldl/libldl.la \
../CppUnitLite/libCppUnitLite.a $(am__append_7)
testVector_SOURCES = testVector.cpp
testVector_OBJECTS = testVector.$(OBJEXT)
testVector_LDADD = $(LDADD)
testVector_DEPENDENCIES = libbase.la ../ldl/libldl.la \
../CppUnitLite/libCppUnitLite.a $(am__append_7)
timeMatrix_SOURCES = timeMatrix.cpp
timeMatrix_OBJECTS = timeMatrix.$(OBJEXT)
timeMatrix_LDADD = $(LDADD)
timeMatrix_DEPENDENCIES = libbase.la ../ldl/libldl.la \
../CppUnitLite/libCppUnitLite.a $(am__append_7)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libbase_la_SOURCES) testBTree.cpp testDSF.cpp \
testDSFVector.cpp testMatrix.cpp testSPQRUtil.cpp \
testVector.cpp timeMatrix.cpp
DIST_SOURCES = $(am__libbase_la_SOURCES_DIST) testBTree.cpp \
testDSF.cpp testDSFVector.cpp testMatrix.cpp testSPQRUtil.cpp \
testVector.cpp timeMatrix.cpp
am__pkginclude_HEADERS_DIST = Testable.h numericalDerivative.h Lie.h \
Lie-inl.h BTree.h DSF.h Vector.h svdcmp.h Matrix.h SPQRUtil.h \
DSFVector.h
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(pkgincludedir)"
HEADERS = $(pkginclude_HEADERS)
ETAGS = etags
CTAGS = ctags
am__tty_colors = \
red=; grn=; lgn=; blu=; std=
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
boost = @boost@
boost_serialization = @boost_serialization@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
toolbox = @toolbox@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
# Testing
# Lie Groups
# Data structures
#----------------------------------------------------------------------------------------------------
# Create a libtool library that is not installed
# It will be packaged in the toplevel libgtsam.la as specfied in ../Makefile.am
# The headers are installed in $(includedir)/gtsam:
#----------------------------------------------------------------------------------------------------
headers = Testable.h numericalDerivative.h Lie.h Lie-inl.h BTree.h \
DSF.h $(sources:.cpp=.h)
# base Math
sources = Vector.cpp svdcmp.cpp Matrix.cpp $(am__append_1) \
DSFVector.cpp
pkginclude_HEADERS = $(headers)
noinst_LTLIBRARIES = libbase.la
libbase_la_SOURCES = $(sources)
AM_CPPFLAGS = -I$(boost) $(am__append_3) $(am__append_4) \
$(am__append_5)
#----------------------------------------------------------------------------------------------------
# rules to build local programs
#----------------------------------------------------------------------------------------------------
TESTS = $(check_PROGRAMS)
AM_DEFAULT_SOURCE_EXT = .cpp
AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization) $(am__append_6) \
$(am__append_8) $(am__append_9)
LDADD = libbase.la ../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a \
$(am__append_7)
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu base/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu base/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libbase.la: $(libbase_la_OBJECTS) $(libbase_la_DEPENDENCIES)
$(CXXLINK) $(libbase_la_OBJECTS) $(libbase_la_LIBADD) $(LIBS)
clean-checkPROGRAMS:
@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
clean-noinstPROGRAMS:
@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
testBTree$(EXEEXT): $(testBTree_OBJECTS) $(testBTree_DEPENDENCIES)
@rm -f testBTree$(EXEEXT)
$(CXXLINK) $(testBTree_OBJECTS) $(testBTree_LDADD) $(LIBS)
testDSF$(EXEEXT): $(testDSF_OBJECTS) $(testDSF_DEPENDENCIES)
@rm -f testDSF$(EXEEXT)
$(CXXLINK) $(testDSF_OBJECTS) $(testDSF_LDADD) $(LIBS)
testDSFVector$(EXEEXT): $(testDSFVector_OBJECTS) $(testDSFVector_DEPENDENCIES)
@rm -f testDSFVector$(EXEEXT)
$(CXXLINK) $(testDSFVector_OBJECTS) $(testDSFVector_LDADD) $(LIBS)
testMatrix$(EXEEXT): $(testMatrix_OBJECTS) $(testMatrix_DEPENDENCIES)
@rm -f testMatrix$(EXEEXT)
$(CXXLINK) $(testMatrix_OBJECTS) $(testMatrix_LDADD) $(LIBS)
testSPQRUtil$(EXEEXT): $(testSPQRUtil_OBJECTS) $(testSPQRUtil_DEPENDENCIES)
@rm -f testSPQRUtil$(EXEEXT)
$(CXXLINK) $(testSPQRUtil_OBJECTS) $(testSPQRUtil_LDADD) $(LIBS)
testVector$(EXEEXT): $(testVector_OBJECTS) $(testVector_DEPENDENCIES)
@rm -f testVector$(EXEEXT)
$(CXXLINK) $(testVector_OBJECTS) $(testVector_LDADD) $(LIBS)
timeMatrix$(EXEEXT): $(timeMatrix_OBJECTS) $(timeMatrix_DEPENDENCIES)
@rm -f timeMatrix$(EXEEXT)
$(CXXLINK) $(timeMatrix_OBJECTS) $(timeMatrix_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DSFVector.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Matrix.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SPQRUtil.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Vector.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svdcmp.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testBTree.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDSF.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDSFVector.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatrix.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSPQRUtil.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testVector.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeMatrix.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
$(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
done
uninstall-pkgincludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
check-TESTS: $(TESTS)
@failed=0; all=0; xfail=0; xpass=0; skip=0; \
srcdir=$(srcdir); export srcdir; \
list=' $(TESTS) '; \
$(am__tty_colors); \
if test -n "$$list"; then \
for tst in $$list; do \
if test -f ./$$tst; then dir=./; \
elif test -f $$tst; then dir=; \
else dir="$(srcdir)/"; fi; \
if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
all=`expr $$all + 1`; \
case " $(XFAIL_TESTS) " in \
*[\ \ ]$$tst[\ \ ]*) \
xpass=`expr $$xpass + 1`; \
failed=`expr $$failed + 1`; \
col=$$red; res=XPASS; \
;; \
*) \
col=$$grn; res=PASS; \
;; \
esac; \
elif test $$? -ne 77; then \
all=`expr $$all + 1`; \
case " $(XFAIL_TESTS) " in \
*[\ \ ]$$tst[\ \ ]*) \
xfail=`expr $$xfail + 1`; \
col=$$lgn; res=XFAIL; \
;; \
*) \
failed=`expr $$failed + 1`; \
col=$$red; res=FAIL; \
;; \
esac; \
else \
skip=`expr $$skip + 1`; \
col=$$blu; res=SKIP; \
fi; \
echo "$${col}$$res$${std}: $$tst"; \
done; \
if test "$$all" -eq 1; then \
tests="test"; \
All=""; \
else \
tests="tests"; \
All="All "; \
fi; \
if test "$$failed" -eq 0; then \
if test "$$xfail" -eq 0; then \
banner="$$All$$all $$tests passed"; \
else \
if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
fi; \
else \
if test "$$xpass" -eq 0; then \
banner="$$failed of $$all $$tests failed"; \
else \
if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
fi; \
fi; \
dashes="$$banner"; \
skipped=""; \
if test "$$skip" -ne 0; then \
if test "$$skip" -eq 1; then \
skipped="($$skip test was not run)"; \
else \
skipped="($$skip tests were not run)"; \
fi; \
test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
dashes="$$skipped"; \
fi; \
report=""; \
if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
report="Please report to $(PACKAGE_BUGREPORT)"; \
test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
dashes="$$report"; \
fi; \
dashes=`echo "$$dashes" | sed s/./=/g`; \
if test "$$failed" -eq 0; then \
echo "$$grn$$dashes"; \
else \
echo "$$red$$dashes"; \
fi; \
echo "$$banner"; \
test -z "$$skipped" || echo "$$skipped"; \
test -z "$$report" || echo "$$report"; \
echo "$$dashes$$std"; \
test "$$failed" -eq 0; \
else :; fi
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-pkgincludeHEADERS
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-pkgincludeHEADERS
.MAKE: check-am install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
clean-checkPROGRAMS clean-generic clean-libtool \
clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-pkgincludeHEADERS \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-pkgincludeHEADERS
# rule to run an executable
%.run: % $(LDADD)
./$^
#----------------------------------------------------------------------------------------------------
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -11,19 +11,16 @@
#include <fstream>
#ifdef GT_USE_CBLAS
#ifdef YA_BLAS
#include <vecLib/cblas.h>
#else
extern "C" {
#include <cblas.h>
#endif
}
#endif
#ifdef GT_USE_LAPACK
#ifdef YA_BLAS
#include <vecLib/clapack.h>
#else
extern "C" {
#include <cblas.h>
#include <clapack.h>
#endif
}
#endif
#include <boost/numeric/ublas/matrix_proxy.hpp>
@ -190,7 +187,7 @@ void multiplyAdd(double alpha, const Matrix& A, const Vector& x, Vector& e) {
// fill in parameters
const double beta = 1.0;
const int incx = 1, incy = 1, ida = n;
const size_t incx = 1, incy = 1, ida = n;
// execute blas call
cblas_dgemv(CblasRowMajor, CblasNoTrans, m, n, alpha, Aptr, ida, Xptr, incx, beta, Eptr, incy);
@ -201,9 +198,9 @@ void multiplyAdd(double alpha, const Matrix& A, const Vector& x, Vector& e) {
size_t m = A.size1(), n = A.size2();
double * ei = e.data().begin();
const double * aij = A.data().begin();
for (int i = 0; i < m; i++, ei++) {
for(size_t i = 0; i < m; i++, ei++) {
const double * xj = x.data().begin();
for (int j = 0; j < n; j++, aij++, xj++)
for(size_t j = 0; j < n; j++, aij++, xj++)
(*ei) += alpha * (*aij) * (*xj);
}
#endif
@ -218,9 +215,9 @@ void multiplyAdd(const Matrix& A, const Vector& x, Vector& e) {
size_t m = A.size1(), n = A.size2();
double * ei = e.data().begin();
const double * aij = A.data().begin();
for (int i = 0; i < m; i++, ei++) {
for(size_t i = 0; i < m; i++, ei++) {
const double * xj = x.data().begin();
for (int j = 0; j < n; j++, aij++, xj++)
for(size_t j = 0; j < n; j++, aij++, xj++)
(*ei) += (*aij) * (*xj);
}
#endif
@ -249,7 +246,7 @@ void transposeMultiplyAdd(double alpha, const Matrix& A, const Vector& e, Vector
// fill in parameters
const double beta = 1.0;
const int incx = 1, incy = 1, ida = n;
const size_t incx = 1, incy = 1, ida = n;
// execute blas call
cblas_dgemv(CblasRowMajor, CblasTrans, m, n, alpha, Aptr, ida, Eptr, incx, beta, Xptr, incy);
@ -259,10 +256,10 @@ void transposeMultiplyAdd(double alpha, const Matrix& A, const Vector& e, Vector
// TODO: use BLAS
size_t m = A.size1(), n = A.size2();
double * xj = x.data().begin();
for (int j = 0; j < n; j++,xj++) {
for(size_t j = 0; j < n; j++,xj++) {
const double * ei = e.data().begin();
const double * aij = A.data().begin() + j;
for (int i = 0; i < m; i++, aij+=n, ei++)
for(size_t i = 0; i < m; i++, aij+=n, ei++)
(*xj) += alpha * (*aij) * (*ei);
}
#endif
@ -276,10 +273,10 @@ void transposeMultiplyAdd(const Matrix& A, const Vector& e, Vector& x) {
#else
size_t m = A.size1(), n = A.size2();
double * xj = x.data().begin();
for (int j = 0; j < n; j++,xj++) {
for(size_t j = 0; j < n; j++,xj++) {
const double * ei = e.data().begin();
const double * aij = A.data().begin() + j;
for (int i = 0; i < m; i++, aij+=n, ei++)
for(size_t i = 0; i < m; i++, aij+=n, ei++)
(*xj) += (*aij) * (*ei);
}
#endif
@ -397,7 +394,7 @@ void solve(Matrix& A, Matrix& B)
pmatrix pm(A_.size1());
// perform LU-factorization
int res = lu_factorize(A_,pm);
size_t res = lu_factorize(A_,pm);
if( res != 0 ) throw runtime_error ("Matrix::solve: lu_factorize failed!");
// backsubstitute to get the inverse
@ -462,7 +459,7 @@ pair<Matrix,Matrix> qr(const Matrix& A) {
* on a number of different matrices for which all columns change.
*/
/* ************************************************************************* */
inline void householder_update_manual(Matrix &A, int j, double beta, const Vector& vjm) {
inline void householder_update_manual(Matrix &A, size_t j, double beta, const Vector& vjm) {
const size_t m = A.size1(), n = A.size2();
// w = beta*transpose(A(j:m,:))*v(j:m)
Vector w(n);
@ -486,7 +483,7 @@ inline void householder_update_manual(Matrix &A, int j, double beta, const Vecto
}
}
void householder_update(Matrix &A, int j, double beta, const Vector& vjm) {
void householder_update(Matrix &A, size_t j, double beta, const Vector& vjm) {
#if defined GT_USE_CBLAS
// CBLAS version not working, using manual approach
@ -551,7 +548,7 @@ void householder_update(Matrix &A, int j, double beta, const Vector& vjm) {
// update A, b
// A' \define A_{S}-ar and b'\define b-ad
// __attribute__ ((noinline)) // uncomment to prevent inlining when profiling
inline void updateAb_manual(Matrix& A, Vector& b, int j, const Vector& a,
inline void updateAb_manual(Matrix& A, Vector& b, size_t j, const Vector& a,
const Vector& r, double d) {
const size_t m = A.size1(), n = A.size2();
for (size_t i = 0; i < m; i++) { // update all rows
@ -568,7 +565,7 @@ inline void updateAb_manual(Matrix& A, Vector& b, int j, const Vector& a,
/**
* Perform updates of system matrices
*/
static void updateAb(Matrix& A, Vector& b, int j, const Vector& a,
static void updateAb(Matrix& A, Vector& b, size_t j, const Vector& a,
const Vector& r, double d) {
// TODO: reimplement using BLAS
updateAb_manual(A,b,j,a,r,d);
@ -682,9 +679,9 @@ void householder(Matrix &A) {
__CLPK_integer n = A.size2();
// convert from row major to column major
double a[m*n]; int k = 0;
for(int j=0; j<n; j++)
for(int i=0; i<m; i++, k++)
double a[m*n]; size_t k = 0;
for(size_t j=0; j<n; j++)
for(size_t i=0; i<m; i++, k++)
a[k] = A(i,j);
double tau[n];
@ -696,13 +693,13 @@ void householder(Matrix &A) {
lwork = (__CLPK_integer)work_optimal_size;
double work[lwork];
dgeqrf_(&m, &n, a, &m, tau, work, &lwork, &info);
int k0 = 0;
int j0;
size_t k0 = 0;
size_t j0;
memset(A.data().begin(), 0, m*n*sizeof(double));
for(int j=0; j<n; j++, k0+=m) {
for(size_t j=0; j<n; j++, k0+=m) {
k = k0;
j0 = j+1<m?j+1:m;
for(int i=0; i<j0; i++, k++)
for(size_t i=0; i<j0; i++, k++)
A(i,j) = a[k];
}
}
@ -952,13 +949,13 @@ Matrix RtR(const Matrix &A)
/* ************************************************************************* */
Vector solve_ldl(const Matrix& M, const Vector& rhs) {
unsigned int N = M.size1(); // size of the matrix
int N = M.size1(); // size of the matrix
// count the nonzero entries above diagonal
double thresh = 1e-9;
unsigned int nrANZ = 0; // # of nonzeros on diagonal and upper triangular part of A
for (size_t i=0; i<N; ++i) // rows
for (size_t j=i; j<N; ++j) // columns
int nrANZ = 0; // # of nonzeros on diagonal and upper triangular part of A
for (int i=0; i<N; ++i) // rows
for (int j=i; j<N; ++j) // columns
if (fabs(M(i,j)) > thresh)
++nrANZ;
@ -972,10 +969,10 @@ Vector solve_ldl(const Matrix& M, const Vector& rhs) {
Ap[N] = nrANZ;
// copy in the full A matrix to compressed column form
size_t t = 0; // count the elements added
for (size_t j=0; j<N; ++j) { // columns
int t = 0; // count the elements added
for (int j=0; j<N; ++j) { // columns
Ap[j] = t; // add to the column indices
for (size_t i=0; i<=j; ++i) { // rows
for (int i=0; i<=j; ++i) { // rows
const double& m = M(i,j);
if (fabs(m) > thresh) {
Ai[t] = i;
@ -985,7 +982,7 @@ Vector solve_ldl(const Matrix& M, const Vector& rhs) {
}
// copy in RHS
for (size_t i = 0; i < N; ++i)
for (int i = 0; i < N; ++i)
b[i] = rhs(i);
// workspace variables
@ -1000,13 +997,13 @@ Vector solve_ldl(const Matrix& M, const Vector& rhs) {
// factorize A into LDL' (P and Pinv not used)
LDL_symbolic (N, Ap, Ai, Lp, Parent, Lnz, Flag, NULL, NULL);
size_t nrLNZ = Lp[N]; // # of nonzeros below the diagonal of L
int nrLNZ = Lp[N]; // # of nonzeros below the diagonal of L
// after getting size of L, initialize storage arrays
double * Lx = new double[nrLNZ];
int * Li = new int [nrLNZ];
size_t d = LDL_numeric (N, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern,
int d = LDL_numeric (N, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern,
Flag, NULL, NULL);
if (d == N) {
@ -1138,9 +1135,9 @@ Matrix square_root_positive(const Matrix& A) {
}
/* ************************************************************************* */
Matrix expm(const Matrix& A, int K) {
Matrix expm(const Matrix& A, size_t K) {
Matrix E = eye(A.size1()), A_k = eye(4);
for (int k=1;k<=K;k++) {
for(size_t k=1;k<=K;k++) {
A_k = A_k*A/k;
E = E + A_k;
}

View File

@ -226,7 +226,7 @@ std::pair<Matrix,Matrix> qr(const Matrix& A);
/**
* Imperative version of Householder rank 1 update
*/
void householder_update(Matrix &A, int j, double beta, const Vector& vjm);
void householder_update(Matrix &A, size_t j, double beta, const Vector& vjm);
/**
* Imperative algorithm for in-place full elimination with
@ -383,7 +383,7 @@ Vector solve_ldl(const Matrix& A, const Vector& b);
* @param A matrix to exponentiate
* @param K number of iterations
*/
Matrix expm(const Matrix& A, int K=7);
Matrix expm(const Matrix& A, size_t K=7);
// macro for unit tests
#define EQUALITY(expected,actual)\

View File

@ -12,31 +12,30 @@
using namespace boost::assign;
#include <CppUnitLite/TestHarness.h>
#include "Key.h"
#include "BTree.h"
using namespace std;
using namespace gtsam;
typedef pair<size_t, size_t> Range;
typedef BTree<Symbol, Range> RangeTree;
typedef BTree<Symbol, int> IntTree;
typedef BTree<string, Range> RangeTree;
typedef BTree<string, int> IntTree;
static std::stringstream ss;
static Symbol x1('x', 1), x2('x', 2), x3('x', 3), x4('x', 4), x5('x', 5);
typedef pair<Symbol, int> KeyInt;
static string x1("x1"), x2("x2"), x3("x3"), x4("x4"), x5("x5");
typedef pair<string, int> KeyInt;
KeyInt p1(x1, 1), p2(x2, 2), p3(x3, 3), p4(x4, 4), p5(x5, 5);
/* ************************************************************************* */
int f(const Symbol& key, const Range& range) {
int f(const string& key, const Range& range) {
return range.first;
}
void g(const Symbol& key, int i) {
void g(const string& key, int i) {
ss << (string) key;
}
int add(const Symbol& k, int v, int a) {
int add(const string& k, int v, int a) {
return v + a;
}
@ -122,7 +121,7 @@ TEST( BTree, iterating )
LONGS_EQUAL(25,tree.fold<int>(add,10))
// test iterator
BTree<Symbol, int>::const_iterator it = tree.begin(), it2 = tree.begin();
BTree<string, int>::const_iterator it = tree.begin(), it2 = tree.begin();
CHECK(it==it2)
CHECK(*it == p1)
CHECK(it->first == x1)
@ -168,7 +167,7 @@ TEST( BTree, stress )
list<RangeTree::value_type> expected;
int N = 128;
for (int i = 1; i <= N; i++) {
Symbol key('a', i);
string key('a', i);
Range value(i - 1, i);
tree = tree.add(key, value);
LONGS_EQUAL(i,tree.size())
@ -186,7 +185,7 @@ TEST( BTree, stress )
// deconstruct the tree
for (int i = N; i >= N; i--) {
Symbol key('a', i);
string key('a', i);
tree = tree.remove(key);
LONGS_EQUAL(i-1,tree.size())
CHECK(!tree.mem(key))

View File

@ -13,7 +13,6 @@ using namespace boost::assign;
#include <CppUnitLite/TestHarness.h>
#include "DSF.h"
#include "Key.h"
using namespace std;
using namespace gtsam;
@ -249,17 +248,16 @@ TEST(DSF, flatten) {
/* ************************************************************************* */
TEST(DSF, flatten2) {
Symbol x1('x',1);
Symbol x2('x',2), x3('x',3), x4('x',4);
list<Symbol> keys; keys += x1,x2,x3,x4;
DSFSymbol dsf(keys);
static string x1("x1"), x2("x2"), x3("x3"), x4("x4");
list<string> keys; keys += x1,x2,x3,x4;
DSF<string> dsf(keys);
dsf = dsf.makeUnion(x1,x2);
dsf = dsf.makeUnion(x3,x4);
dsf = dsf.makeUnion(x1,x3);
CHECK(dsf != dsf.flatten());
DSFSymbol expected2;
DSF<string> expected2;
expected2 = expected2.makePair(x1, x2);
expected2 = expected2.makePair(x1, x3);
expected2 = expected2.makePair(x1, x4);

View File

@ -13,7 +13,6 @@ using namespace boost::assign;
#include <CppUnitLite/TestHarness.h>
#include "DSFVector.h"
#include "Key.h"
using namespace std;
using namespace gtsam;

View File

@ -1,38 +0,0 @@
# Makefile to compile the unit test library, will end up in $(LIBDIR)
.PHONY: all install clean
all: libcolamd.a
CC ?= gcc
CFLAGS += -O2
CFLAGS += -fPIC
sources = $(shell ls *.c)
library = libcolamd.a
#Note: hack was added to ensure that flags are acutally used for compilation
# This should probably be fixed, but will work for 64 bit machines now
$(library): colamd.o colamd_global.o ccolamd.o ccolamd_global.o
$(CC) $(CFLAGS) -c -DDLONG -o colamd_l.o colamd.c
ar crsv $@ $^ colamd_l.o
ranlib $(library)
clean:
rm -f *.o *.*~ $(library)
check:
echo 'no check for colamd'
distdir:
# Richard: added the following dependencies so that recursive make works:
install: all
distclean: clean
check: all

15
colamd/Makefile.am Normal file
View File

@ -0,0 +1,15 @@
#----------------------------------------------------------------------------------------------------
# colamd
# replaced Makefile with automake for easy linking
#----------------------------------------------------------------------------------------------------
# Create a libtool library that is not installed
# It will be packaged in the toplevel libgtsam.la as specfied in ../Makefile.am
noinst_LTLIBRARIES = libcolamd.la
# We normally would not install these headers
# but they are included in the templated class FactorGraph-inl.h so we need them
pkginclude_HEADERS = colamd.h ccolamd.h UFconfig.h
# These are the sources for the library:
libcolamd_la_SOURCES = colamd.c colamd_global.c ccolamd.c ccolamd_global.c

541
colamd/Makefile.in Normal file
View File

@ -0,0 +1,541 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#----------------------------------------------------------------------------------------------------
# colamd
# replaced Makefile with automake for easy linking
#----------------------------------------------------------------------------------------------------
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = colamd
DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libcolamd_la_LIBADD =
am_libcolamd_la_OBJECTS = colamd.lo colamd_global.lo ccolamd.lo \
ccolamd_global.lo
libcolamd_la_OBJECTS = $(am_libcolamd_la_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libcolamd_la_SOURCES)
DIST_SOURCES = $(libcolamd_la_SOURCES)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(pkgincludedir)"
HEADERS = $(pkginclude_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
boost = @boost@
boost_serialization = @boost_serialization@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
toolbox = @toolbox@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
# Create a libtool library that is not installed
# It will be packaged in the toplevel libgtsam.la as specfied in ../Makefile.am
noinst_LTLIBRARIES = libcolamd.la
# We normally would not install these headers
# but they are included in the templated class FactorGraph-inl.h so we need them
pkginclude_HEADERS = colamd.h ccolamd.h UFconfig.h
# These are the sources for the library:
libcolamd_la_SOURCES = colamd.c colamd_global.c ccolamd.c ccolamd_global.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu colamd/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu colamd/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libcolamd.la: $(libcolamd_la_OBJECTS) $(libcolamd_la_DEPENDENCIES)
$(LINK) $(libcolamd_la_OBJECTS) $(libcolamd_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ccolamd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ccolamd_global.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colamd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colamd_global.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
$(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
done
uninstall-pkgincludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-pkgincludeHEADERS
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-pkgincludeHEADERS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-pkgincludeHEADERS \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-pkgincludeHEADERS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

89
config.h.in Normal file
View File

@ -0,0 +1,89 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* boost serialization flag */
#undef HAVE_BOOST_SERIALIZATION
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `pow' function. */
#undef HAVE_POW
/* Define to 1 if you have the `sqrt' function. */
#undef HAVE_SQRT
/* Define to 1 if stdbool.h conforms to C99. */
#undef HAVE_STDBOOL_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if the system has the type `_Bool'. */
#undef HAVE__BOOL
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

View File

@ -4,12 +4,19 @@
AC_PREREQ(2.59)
AC_INIT(gtsam, 0.0.0, dellaert@cc.gatech.edu)
AM_INIT_AUTOMAKE(gtsam, 0.0.0)
AC_OUTPUT(Makefile spqr_mini/Makefile cpp/Makefile wrap/Makefile)
AC_OUTPUT(Makefile CppUnitLite/Makefile colamd/Makefile ldl/Makefile spqr_mini/Makefile base/Makefile geometry/Makefile cpp/Makefile slam/Makefile tests/Makefile wrap/Makefile)
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([cpp/cal3_S2.cpp])
AC_CONFIG_HEADER([cpp/config.h])
AC_CONFIG_SRCDIR([wrap/wrap.cpp])
AC_CONFIG_HEADER([config.h])
AC_CONFIG_SRCDIR([CppUnitLite/Test.cpp])
AC_CONFIG_SRCDIR([colamd/colamd.c])
AC_CONFIG_SRCDIR([ldl/ldl.cpp])
AC_CONFIG_SRCDIR([spqr_mini/spqr_front.cpp])
AC_CONFIG_SRCDIR([base/DSFVector.cpp])
AC_CONFIG_SRCDIR([geometry/Cal3_S2.cpp])
AC_CONFIG_SRCDIR([cpp/GaussianFactor.cpp])
AC_CONFIG_SRCDIR([slam/pose2SLAM.cpp])
AC_CONFIG_SRCDIR([tests/testSQP.cpp])
AC_CONFIG_SRCDIR([wrap/wrap.cpp])
# Check for OS
AC_CANONICAL_HOST # needs to be called at some point earlier
@ -52,6 +59,7 @@ AC_ARG_ENABLE([blas],
*) AC_MSG_ERROR([bad value ${enableval} for --enable-blas]) ;;
esac],[blas=false])
AM_CONDITIONAL([USE_BLAS], test x$blas = xtrue)
AM_CONDITIONAL([USE_BLAS_MACOS], [test x$blas = xtrue && test x$ISMAC = xtrue])
AM_CONDITIONAL([USE_BLAS_LINUX], [test x$blas = xtrue && test x$ISMAC = xfalse])
@ -64,12 +72,14 @@ AC_ARG_ENABLE([lapack],
*) AC_MSG_ERROR([bad value ${enableval} for --enable-lapack]) ;;
esac],[lapack=false])
AM_CONDITIONAL([USE_LAPACK], test x$lapack = xtrue)
AM_CONDITIONAL([USE_LAPACK_MACOS], [test x$lapack = xtrue && test x$ISMAC = xtrue])
AM_CONDITIONAL([USE_LAPACK_LINUX], [test x$lapack = xtrue && test x$ISMAC = xfalse])
AM_CONDITIONAL([USE_LAPACK], test x$lapack = xtrue)
AM_CONDITIONAL([USE_VECLIB_MACOS], [(test x$lapack = xtrue || test x$blas = xtrue) && test x$ISMAC = xtrue])
#enabgle SparseQR for linear solving
# On Mac, we use the Accelerate framework for BLAS/LAPACK
AM_CONDITIONAL([USE_ACCELERATE_MACOS], [(test x$lapack = xtrue || test x$blas = xtrue) && test x$ISMAC = xtrue])
#enable SparseQR for linear solving
AC_ARG_ENABLE([spqr],
[ --enable-spqr Enable SparseQR library support],
[case "${enableval}" in

View File

@ -16,21 +16,17 @@
#include <stdexcept>
#include <functional>
extern "C" {
#include <colamd/colamd.h>
#include <colamd/ccolamd.h>
}
#include <boost/foreach.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/format.hpp>
#include <boost/graph/prim_minimum_spanning_tree.hpp>
#include <colamd/colamd.h>
#include "ccolamd.h"
#include "Ordering.h"
#include "FactorGraph.h"
#include "graph-inl.h"
#include "DSF.h"
#define INSTANTIATE_FACTOR_GRAPH(F) \
template class FactorGraph<F>; \
/*template boost::shared_ptr<F> removeAndCombineFactors(FactorGraph<F>&, const std::string&);*/ \
@ -189,7 +185,6 @@ void colamd(int n_col, int n_row, int nrNonZeros, const map<Key, vector<int> >&
Ordering& ordering, const set<Symbol>& lastKeys) {
// Convert to compressed column major format colamd wants it in (== MATLAB format!)
vector<Key> initialOrder;
int Alen = ccolamd_recommended(nrNonZeros, n_row, n_col); /* colamd arg 3: size of the array A */
int * A = new int[Alen]; /* colamd arg 4: row indices of A, of size Alen */
int * p = new int[n_col + 1]; /* colamd arg 5: column pointers of A, of size n_col+1 */
@ -200,6 +195,7 @@ void colamd(int n_col, int n_row, int nrNonZeros, const map<Key, vector<int> >&
int count = 0;
typedef typename map<Key, vector<int> >::const_iterator iterator;
bool front_exists = false;
vector<Key> initialOrder;
for(iterator it = columns.begin(); it != columns.end(); it++) {
const Key& key = it->first;
const vector<int>& column = it->second;
@ -220,7 +216,7 @@ void colamd(int n_col, int n_row, int nrNonZeros, const map<Key, vector<int> >&
}
double* knobs = NULL; /* colamd arg 6: parameters (uses defaults if NULL) */
int stats[COLAMD_STATS]; /* colamd arg 7: colamd output statistics and error codes */
int stats[CCOLAMD_STATS]; /* colamd arg 7: colamd output statistics and error codes */
// call colamd, result will be in p *************************************************
/* TODO: returns (1) if successful, (0) otherwise*/

View File

@ -279,6 +279,7 @@ namespace gtsam {
}
/*
template<class Conditional, class Config>
void ISAM2<Conditional, Config>::linear_update(const FactorGraph<GaussianFactor>& newFactors) {
@ -329,8 +330,8 @@ namespace gtsam {
}
// Output: BayesTree(this)
}
*/
template<class Conditional, class Config>
void ISAM2<Conditional, Config>::fluid_relinearization(double relinearize_threshold) {

View File

@ -1,69 +1,24 @@
#----------------------------------------------------------------------------------------------------
# GTSAM core functionality: discrete, linear, and non-linear
#----------------------------------------------------------------------------------------------------
# the install destination
includedir = ${prefix}/include/gtsam
libdir = ${exec_prefix}/lib
headers =
sources =
check_PROGRAMS =
# library version
current = 0 # The most recent interface number that this library implements.
revision = 0 # The implementation number of the current interface
age = 0 # The difference between the newest and oldest interfaces that \
this library implements. In other words, the library implements all \
the interface numbers in the range from number current - age to \
current.
#----------------------------------------------------------------------------------------------------
# base
#----------------------------------------------------------------------------------------------------
# from libtool manual:
# Here are a set of rules to help you update your library version information:
# Start with version information of 0:0:0 for each libtool library.
# - Update the version information only immediately before a public
# release of your software.
# - If the library source code has changed at all since the last
# update, then increment revision
# - If any interfaces have been added, removed, or changed since the
# last update, increment current, and set revision to 0.
# - If any interfaces have been added since the last public release,
# then increment age.
# - If any interfaces have been removed since the last public release,
# then set age to 0.
version = $(current):$(revision):$(age)
# we specify the library in levels
# basic Math
sources = Vector.cpp svdcmp.cpp Matrix.cpp SPQRUtil.cpp
check_PROGRAMS = testVector testMatrix testSPQRUtil
testVector_SOURCES = testVector.cpp
testVector_LDADD = libgtsam.la
testMatrix_SOURCES = testMatrix.cpp
testMatrix_LDADD = libgtsam.la
testSPQRUtil_SOURCES = testSPQRUtil.cpp
testSPQRUtil_LDADD = libgtsam.la
# GTSAM basics
# The header files will be installed in ~/include/gtsam
headers = gtsam.h Value.h Testable.h Factor.h Conditional.h
headers += Ordering.h IndexTable.h numericalDerivative.h
headers += BTree.h DSF.h DSFVector.h
sources += Ordering.cpp smallExample.cpp DSFVector.cpp
check_PROGRAMS += testOrdering testBTree testDSF testDSFVector
testOrdering_SOURCES = testOrdering.cpp
testOrdering_LDADD = libgtsam.la
testBTree_SOURCES = testBTree.cpp
testBTree_LDADD = libgtsam.la
testDSF_SOURCES = testDSF.cpp
testDSF_LDADD = libgtsam.la
testDSFVector_SOURCES = testDSFVector.cpp
testDSFVector_LDADD = libgtsam.la
# GTSAM core
headers += Factor.h Conditional.h Ordering.h IndexTable.h
sources += Ordering.cpp
check_PROGRAMS += testOrdering
# Symbolic Inference
headers += SymbolicConditional.h
sources += SymbolicFactor.cpp SymbolicFactorGraph.cpp SymbolicBayesNet.cpp
check_PROGRAMS += testSymbolicFactor testSymbolicFactorGraph testSymbolicBayesNet
testSymbolicFactor_SOURCES = testSymbolicFactor.cpp
testSymbolicFactor_LDADD = libgtsam.la
testSymbolicFactorGraph_SOURCES = testSymbolicFactorGraph.cpp
testSymbolicFactorGraph_LDADD = libgtsam.la
testSymbolicBayesNet_SOURCES = testSymbolicBayesNet.cpp
testSymbolicBayesNet_LDADD = libgtsam.la
# Inference
headers += inference.h inference-inl.h
@ -73,231 +28,91 @@ headers += JunctionTree.h JunctionTree-inl.h
headers += BayesNet.h BayesNet-inl.h
headers += BayesTree.h BayesTree-inl.h
headers += ISAM.h ISAM-inl.h GaussianISAM.h
headers += ISAM2.h ISAM2-inl.h GaussianISAM2.h
sources += GaussianISAM.cpp GaussianISAM2.cpp
check_PROGRAMS += testGraph testFactorGraph testJunctionTree testInference testOrdering
check_PROGRAMS += testBayesTree testISAM testGaussianISAM testGaussianISAM2
testGraph_SOURCES = testGraph.cpp
testGraph_LDADD = libgtsam.la
testFactorGraph_SOURCES = testFactorgraph.cpp
testFactorGraph_LDADD = libgtsam.la
testJunctionTree_SOURCES = testJunctionTree.cpp
testJunctionTree_LDADD = libgtsam.la
testInference_SOURCES = testInference.cpp
testInference_LDADD = libgtsam.la
testBayesTree_SOURCES = testBayesTree.cpp
testBayesTree_LDADD = libgtsam.la
testGaussianISAM_SOURCES = testGaussianISAM.cpp
testGaussianISAM_LDADD = libgtsam.la
testGaussianISAM2_SOURCES = testGaussianISAM2.cpp
testGaussianISAM2_LDADD = libgtsam.la
testISAM_SOURCES = testISAM.cpp
testISAM_LDADD = libgtsam.la
headers += ISAM2.h ISAM2-inl.h
sources += GaussianISAM.cpp
check_PROGRAMS += testFactorGraph testJunctionTree testOrdering
check_PROGRAMS += testBayesTree testISAM
#----------------------------------------------------------------------------------------------------
# discrete
#----------------------------------------------------------------------------------------------------
# Binary Inference
headers += BinaryConditional.h
check_PROGRAMS += testBinaryBayesNet
testBinaryBayesNet_SOURCES = testBinaryBayesNet.cpp
testBinaryBayesNet_LDADD = libgtsam.la
#----------------------------------------------------------------------------------------------------
# linear
#----------------------------------------------------------------------------------------------------
# Gaussian inference
headers += GaussianFactorSet.h SharedGaussian.h SharedDiagonal.h VectorConfig.h Factorization.h
sources += NoiseModel.cpp Errors.cpp VectorMap.cpp VectorBTree.cpp GaussianFactor.cpp
sources += GaussianFactorGraph.cpp GaussianConditional.cpp GaussianBayesNet.cpp
check_PROGRAMS += testVectorMap testVectorBTree testGaussianFactor testGaussianFactorGraph
check_PROGRAMS += testGaussianConditional testGaussianBayesNet testNoiseModel testErrors
testVectorMap_SOURCES = testVectorMap.cpp
testVectorMap_LDADD = libgtsam.la
testVectorBTree_SOURCES = testVectorBTree.cpp
testVectorBTree_LDADD = libgtsam.la
testGaussianFactor_SOURCES = testGaussianFactor.cpp
testGaussianFactor_LDADD = libgtsam.la
testGaussianFactorGraph_SOURCES = testGaussianFactorGraph.cpp
testGaussianFactorGraph_LDADD = libgtsam.la
testGaussianConditional_SOURCES = testGaussianConditional.cpp
testGaussianConditional_LDADD = libgtsam.la
testGaussianBayesNet_SOURCES = testGaussianBayesNet.cpp
testGaussianBayesNet_LDADD = libgtsam.la
testNoiseModel_SOURCES = testNoiseModel.cpp
testNoiseModel_LDADD = libgtsam.la
testErrors_SOURCES = testErrors.cpp
testErrors_LDADD = libgtsam.la
check_PROGRAMS += testVectorMap testVectorBTree testGaussianFactor
check_PROGRAMS += testGaussianConditional testNoiseModel testErrors
# Iterative Methods
headers += iterative-inl.h SubgraphSolver.h SubgraphSolver-inl.h
sources += iterative.cpp BayesNetPreconditioner.cpp SubgraphPreconditioner.cpp
check_PROGRAMS += testIterative testBayesNetPreconditioner testSubgraphPreconditioner
testIterative_SOURCES = testIterative.cpp
testIterative_LDADD = libgtsam.la
testBayesNetPreconditioner_SOURCES = testBayesNetPreconditioner.cpp
testBayesNetPreconditioner_LDADD = libgtsam.la
testSubgraphPreconditioner_SOURCES = testSubgraphPreconditioner.cpp
testSubgraphPreconditioner_LDADD = libgtsam.la
check_PROGRAMS += testBayesNetPreconditioner
# Timing tests
noinst_PROGRAMS = timeGaussianFactor timeSymbolMaps timeVectorConfig
#----------------------------------------------------------------------------------------------------
# nonlinear
#----------------------------------------------------------------------------------------------------
# Lie Groups
headers += LieConfig.h LieConfig-inl.h TupleConfig.h TupleConfig-inl.h
check_PROGRAMS += testLieConfig
# Nonlinear inference
headers += Key.h SymbolMap.h NonlinearFactorGraph.h NonlinearFactorGraph-inl.h
headers += NonlinearOptimizer.h NonlinearOptimizer-inl.h
headers += NonlinearFactor.h
check_PROGRAMS += testNonlinearFactor testNonlinearFactorGraph testNonlinearOptimizer testKey
testNonlinearFactor_SOURCES = testNonlinearFactor.cpp
testNonlinearFactor_LDADD = libgtsam.la
testNonlinearFactorGraph_SOURCES = testNonlinearFactorGraph.cpp
testNonlinearFactorGraph_LDADD = libgtsam.la
testNonlinearOptimizer_SOURCES = testNonlinearOptimizer.cpp
testNonlinearOptimizer_LDADD = libgtsam.la
testKey_SOURCES = testKey.cpp
testKey_LDADD = libgtsam.la
check_PROGRAMS += testKey
# Nonlinear constraints
headers += NonlinearConstraint.h NonlinearConstraint-inl.h
headers += NonlinearEquality.h
check_PROGRAMS += testNonlinearConstraint testNonlinearEquality
testNonlinearConstraint_SOURCES = testNonlinearConstraint.cpp
testNonlinearConstraint_LDADD = libgtsam.la
testNonlinearEquality_SOURCES = testNonlinearEquality.cpp
testNonlinearEquality_LDADD = libgtsam.la
check_PROGRAMS += testNonlinearConstraint
# SQP
headers += ConstraintOptimizer.h
sources += ConstraintOptimizer.cpp
check_PROGRAMS += testSQP testConstraintOptimizer
testSQP_SOURCES = $(example) testSQP.cpp
testSQP_LDADD = libgtsam.la
testConstraintOptimizer_SOURCES = $(example) testConstraintOptimizer.cpp
testConstraintOptimizer_LDADD = libgtsam.la
# geometry
headers += Lie.h Lie-inl.h
sources += Point2.cpp Rot2.cpp Pose2.cpp Point3.cpp Rot3.cpp Pose3.cpp Cal3_S2.cpp
check_PROGRAMS += testPoint2 testRot2 testPose2 testPoint3 testRot3 testPose3 testCal3_S2 testLieConfig testTupleConfig
testPoint2_SOURCES = testPoint2.cpp
testRot2_SOURCES = testRot2.cpp
testPose2_SOURCES = testPose2.cpp
testPoint3_SOURCES = testPoint3.cpp
testRot3_SOURCES = testRot3.cpp
testPose3_SOURCES = testPose3.cpp
testCal3_S2_SOURCES = testCal3_S2.cpp
testLieConfig_SOURCES = testLieConfig.cpp
testTupleConfig_SOURCES = testTupleConfig.cpp
testPoint2_LDADD = libgtsam.la
testRot2_LDADD = libgtsam.la
testPose2_LDADD = libgtsam.la
testPoint3_LDADD = libgtsam.la
testRot3_LDADD = libgtsam.la
testPose3_LDADD = libgtsam.la
testCal3_S2_LDADD = libgtsam.la
testLieConfig_LDADD = libgtsam.la
testTupleConfig_LDADD = libgtsam.la
# simulated2D example
headers += simulated2D.h simulated2DOriented.h
headers += Simulated2DConfig.h Simulated2DOrientedConfig.h
headers += Simulated2DPosePrior.h Simulated2DPointPrior.h Simulated2DOrientedPosePrior.h
headers += Simulated2DOdometry.h Simulated2DMeasurement.h Simulated2DOrientedOdometry.h
sources += simulated2D.cpp simulated2DOriented.cpp
testSimulated2D_SOURCES = testSimulated2D.cpp
testSimulated2D_LDADD = libgtsam.la
testSimulated2DOriented_SOURCES = testSimulated2DOriented.cpp
testSimulated2DOriented_LDADD = libgtsam.la
check_PROGRAMS += testSimulated2D testSimulated2DOriented
# simulated3D example
sources += Simulated3D.cpp
testSimulated3D_SOURCES = testSimulated3D.cpp
testSimulated3D_LDADD = libgtsam.la
check_PROGRAMS += testSimulated3D
# Pose SLAM headers
headers += BetweenFactor.h PriorFactor.h
headers += LieConfig.h LieConfig-inl.h TupleConfig.h TupleConfig-inl.h
# 2D Pose SLAM
headers +=
sources += pose2SLAM.cpp Pose2SLAMOptimizer.cpp dataset.cpp
check_PROGRAMS += testPose2Factor testPose2Config testPose2SLAM testPose2Prior
testPose2Prior_SOURCES = testPose2Prior.cpp
testPose2Prior_LDADD = libgtsam.la
testPose2Factor_SOURCES = testPose2Factor.cpp
testPose2Factor_LDADD = libgtsam.la
testPose2Config_SOURCES = testPose2Config.cpp
testPose2Config_LDADD = libgtsam.la
testPose2SLAM_SOURCES = testPose2SLAM.cpp
testPose2SLAM_LDADD = libgtsam.la
# 2D SLAM using Bearing and Range
headers += BearingFactor.h RangeFactor.h BearingRangeFactor.h
sources += planarSLAM.cpp
check_PROGRAMS += testPlanarSLAM
testPlanarSLAM_SOURCES = testPlanarSLAM.cpp
testPlanarSLAM_LDADD = libgtsam.la
# 3D Pose constraints
headers +=
sources += pose3SLAM.cpp
check_PROGRAMS += testPose3Factor testPose3Config testPose3SLAM
testPose3Factor_SOURCES = testPose3Factor.cpp
testPose3Factor_LDADD = libgtsam.la
testPose3Config_SOURCES = testPose3Config.cpp
testPose3Config_LDADD = libgtsam.la
testPose3SLAM_SOURCES = testPose3SLAM.cpp
testPose3SLAM_LDADD = libgtsam.la
# Cameras
sources += CalibratedCamera.cpp SimpleCamera.cpp
check_PROGRAMS += testCalibratedCamera testSimpleCamera
testCalibratedCamera_SOURCES = testCalibratedCamera.cpp
testCalibratedCamera_LDADD = libgtsam.la
testSimpleCamera_SOURCES = testSimpleCamera.cpp
testSimpleCamera_LDADD = libgtsam.la
# Tensors
headers += tensors.h Tensor1.h Tensor2.h Tensor3.h Tensor4.h Tensor5.h
headers += Tensor1Expression.h Tensor2Expression.h Tensor3Expression.h Tensor5Expression.h
headers += projectiveGeometry.h tensorInterface.h
sources += projectiveGeometry.cpp tensorInterface.cpp
check_PROGRAMS += testTensors testHomography2 testTrifocal
testHomography2_SOURCES = testHomography2.cpp
testHomography2_LDADD = libgtsam.la
testTensors_SOURCES = testTensors.cpp
testTensors_LDADD = libgtsam.la
testTrifocal_SOURCES = testTrifocal.cpp
testTrifocal_LDADD = libgtsam.la
# Visual SLAM
sources += visualSLAM.cpp
check_PROGRAMS += testVSLAMFactor testVSLAMGraph testVSLAMConfig
testVSLAMFactor_SOURCES = testVSLAMFactor.cpp
testVSLAMFactor_LDADD = libgtsam.la
testVSLAMGraph_SOURCES = testVSLAMGraph.cpp
testVSLAMGraph_LDADD = libgtsam.la
testVSLAMConfig_SOURCES = testVSLAMConfig.cpp
testVSLAMConfig_LDADD = libgtsam.la
check_PROGRAMS += testConstraintOptimizer
#----------------------------------------------------------------------------------------------------
# Create a libtool library that is not installed
# It will be packaged in the toplevel libgtsam.la as specfied in ../Makefile.am
# The headers are installed in $(includedir)/gtsam:
#----------------------------------------------------------------------------------------------------
headers += $(sources:.cpp=.h)
pkginclude_HEADERS = $(headers)
noinst_HEADERS = gtsam.h
noinst_LTLIBRARIES = libcpp.la
libcpp_la_SOURCES = $(sources)
AM_CPPFLAGS = -I$(boost) -I../colamd -I../base
# Timing tests
noinst_PROGRAMS = timeGaussianFactor timeGaussianFactorGraph timeRot3 timeMatrix timeSymbolMaps timeVectorConfig
timeRot3_SOURCES = timeRot3.cpp
timeRot3_LDADD = libgtsam.la
timeGaussianFactor_SOURCES = timeGaussianFactor.cpp
timeGaussianFactor_LDADD = libgtsam.la
timeGaussianFactorGraph_SOURCES = timeGaussianFactorGraph.cpp
timeGaussianFactorGraph_LDADD = libgtsam.la
timeMatrix_SOURCES = timeMatrix.cpp
timeMatrix_LDADD = libgtsam.la
timeSymbolMaps_SOURCES = timeSymbolMaps.cpp
timeSymbolMaps_LDADD = libgtsam.la
timeVectorConfig_SOURCES = timeVectorConfig.cpp
timeVectorConfig_LDADD = libgtsam.la
#----------------------------------------------------------------------------------------------------
# rules to build local programs
#----------------------------------------------------------------------------------------------------
TESTS = $(check_PROGRAMS)
AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization)
LDADD = libcpp.la ../base/libbase.la
LDADD += ../CppUnitLite/libCppUnitLite.a ../colamd/libcolamd.la ../ldl/libldl.la
AM_DEFAULT_SOURCE_EXT = .cpp
# create both dynamic and static libraries
AM_CXXFLAGS = -I$(boost) -fPIC
AM_LDFLAGS =
lib_LTLIBRARIES = libgtsam.la
libgtsam_la_SOURCES = $(sources)
libgtsam_la_CPPFLAGS = $(AM_CXXFLAGS)
libgtsam_la_LDFLAGS = -version-info $(version) -L../colamd -lcolamd -L../ldl -lldl
# rule to run an executable
%.run: % $(LDADD)
./$^
#----------------------------------------------------------------------------------------------------
# OLD, need to figure where these go!
#----------------------------------------------------------------------------------------------------
AM_CXXFLAGS =
# enable debug if --enable-debug is set in configure
if DEBUG
@ -306,56 +121,11 @@ endif
if USE_PROFILING
AM_CXXFLAGS += -pg
libgtsam_la_CPPFLAGS += -pg
AM_LDFLAGS += -pg
libgtsam_la_LDFLAGS += -pg
endif
# install the header files
include_HEADERS = $(headers)
AM_CXXFLAGS += -I..
AM_LDFLAGS += -L../CppUnitLite -lCppUnitLite $(BOOST_LDFLAGS) $(boost_serialization)
# adding cblas implementation - split into a default linux version using the
# autotools script, and a mac version that is hardcoded
# NOTE: the GT_USE_CBLAS is just used as a means of detecting when blas is available
if USE_BLAS_LINUX
AM_CXXFLAGS += -DGT_USE_CBLAS
libgtsam_la_CPPFLAGS += -DGT_USE_CBLAS
AM_LDFLAGS += -lcblas -latlas # If getting from script: $(BLAS_LIBS) $(LIBS) $(FLIBS)
libgtsam_la_LDFLAGS += -lcblas -latlas # $(BLAS_LIBS) $(LIBS) $(FLIBS)
endif
if USE_BLAS_MACOS
AM_CXXFLAGS += -DGT_USE_CBLAS
endif
if USE_LAPACK_LINUX
AM_CXXFLAGS += -I/usr/include
AM_LDFLAGS += -llapack
libgtsam_la_LDFLAGS += -llapack
endif
if USE_LAPACK
AM_LDFLAGS += -L../spqr_mini -lspqr_mini
libgtsam_la_LDFLAGS += -L../spqr_mini -lspqr_mini
AM_CXXFLAGS += -DGT_USE_LAPACK
LDADD += ../spqr_mini/libspqr_mini.la
endif
if USE_VECLIB_MACOS
AM_CXXFLAGS += -DYA_BLAS -DYA_LAPACK -DYA_BLASMULT -I/System/Library/Frameworks/vecLib.framework/Headers
libgtsam_la_CPPFLAGS += -DGT_USE_CBLAS -DYA_BLAS -DYA_LAPACK -DYA_BLASMULT -I/System/Library/Frameworks/vecLib.framework/Headers
AM_LDFLAGS += -lcblas -latlas
libgtsam_la_LDFLAGS += -framework vecLib -lcblas -latlas
endif
TESTS = $(check_PROGRAMS)
CXXLINK = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
$(CXXLD) -g $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@ # CXXLINK is only used for unit tests
# rule to run an executable
%.run: % libgtsam.la
./$^

View File

@ -9,7 +9,6 @@
#include <fstream>
#include <boost/format.hpp>
#include <boost/foreach.hpp>
#include "Point2.h"
#include "Ordering.h"
#include "SymbolicFactorGraph.h"
#include "SymbolicBayesNet.h"
@ -20,8 +19,6 @@ using namespace std;
namespace gtsam {
INSTANTIATE_LIE_CONFIG(Symbol, Point2)
// Explicitly instantiate so we don't have to include everywhere
template class FactorGraph<SymbolicFactor>;
@ -52,39 +49,5 @@ namespace gtsam {
return eliminate(ordering);
}
/* ************************************************************************* */
void saveGraph(const SymbolicFactorGraph& fg, const SymbolicConfig& config, const std::string& s) {
Symbol key;
Point2 pt;
float scale = 100;
string dotfile = s + ".dot";
ofstream of(dotfile.c_str());
of << "graph G{" << endl;
of << "bgcolor=\"transparent\";" << endl;
BOOST_FOREACH(boost::tie(key, pt), config){
of << (string)key << "[label=\"" << (string)key << "\"][pos=\"" << pt.x()*scale << "," << pt.y()*scale << "\"];" << endl;
}
int index = 0;
BOOST_FOREACH(const SymbolicFactorGraph::sharedFactor& factor, fg) {
index++;
Point2 center;
BOOST_FOREACH(const Symbol& key, factor->keys())
center = center + config[key];
center = Point2(center.x() / factor->keys().size(), center.y() / factor->keys().size());
of << "f" << index << "[pos=\"" << center.x()*scale << "," << center.y()*scale << "\"][shape=\"point\"];" << endl;
BOOST_FOREACH(const Symbol& key, factor->keys())
of << "f" << index << "--" << (string)key << endl;
}
of<<"}";
of.close();
string cmd = boost::str(boost::format("neato -s -n -Tpdf %s -o %s.pdf") % dotfile % s);
system(cmd.c_str());
}
/* ************************************************************************* */
}

View File

@ -5,8 +5,7 @@
* Author: Frank Dellaert
*/
#ifndef SYMBOLICFACTORGRAPH_H_
#define SYMBOLICFACTORGRAPH_H_
#pragma once
#include <string>
#include <list>
@ -18,10 +17,6 @@
namespace gtsam {
class Point2;
typedef LieConfig<Symbol, Point2> SymbolicConfig;
class SymbolicConditional;
/** Symbolic Factor Graph */
@ -87,8 +82,4 @@ namespace gtsam {
SymbolicBayesNet eliminateFrontals(const Ordering& ordering);
};
// save graph to the graphviz format
void saveGraph(const SymbolicFactorGraph& fg, const SymbolicConfig& config, const std::string& s);
}
#endif /* SYMBOLICFACTORGRAPH_H_ */
} // namespace gtsam

View File

@ -1,44 +0,0 @@
/**
* @file Value.h
* @brief Abstract base class for values that can be updated using exmap
* @author Frank Dellaert
*/
// \callgraph
#pragma once
#include "Vector.h"
#include "Testable.h"
namespace gtsam {
/**
* The value class should be templated with the derived class, e.g.
* class Rot3 : public Value<Rot3>. This allows us to define the
* return type of exmap as a Rot3 as well.
*/
template <class Derived> class Value : public Testable<Derived> {
private:
const size_t dim_; // dimensionality of tangent space, e.g. 3 for Rot3
public:
Value(size_t dim) : dim_ (dim) {}
/**
* dimensionality of tangent space, e.g. 3 for Rot3
*/
size_t dim() { return dim_;}
/**
* Exponential map: add a delta vector, addition for most simple
* types, but fully exponential map for types such as Rot3, which
* takes a 3-dim delta vector to update a 9-dim representation.
* equality up to tolerance
*/
virtual Derived exmap(const Vector& delta) const = 0;
};
}

View File

@ -6,6 +6,7 @@
#pragma once
#include <stdexcept>
#include <boost/foreach.hpp>
#include <boost/graph/breadth_first_search.hpp>

View File

@ -1,20 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtsam", "gtsam.vcproj", "{8AC1F57D-77D6-4B79-B50C-2508F076EBA3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8AC1F57D-77D6-4B79-B50C-2508F076EBA3}.Debug|Win32.ActiveCfg = Debug|Win32
{8AC1F57D-77D6-4B79-B50C-2508F076EBA3}.Debug|Win32.Build.0 = Debug|Win32
{8AC1F57D-77D6-4B79-B50C-2508F076EBA3}.Release|Win32.ActiveCfg = Release|Win32
{8AC1F57D-77D6-4B79-B50C-2508F076EBA3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -1,362 +0,0 @@
<?xml version="1.0" encoding="gb2312"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="gtsam"
ProjectGUID="{8AC1F57D-77D6-4B79-B50C-2508F076EBA3}"
RootNamespace="gtsam"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;$(BOOST_DIR)&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile="$(ProjectDir)\$(ConfigurationName)\lib$(ProjectName).lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
CommandLine="mkdir $(ProjectDir)\..\..\..\libs\;&#x0D;&#x0A;copy $(ProjectDir)\$(ConfigurationName)\lib$(ProjectName).lib $(ProjectDir)\..\..\..\libs\;&#x0D;&#x0A;mkdir $(ProjectDir)\..\..\..\include\;&#x0D;&#x0A;mkdir $(ProjectDir)\..\..\..\include\gtsam\;&#x0D;&#x0A;copy $(ProjectDir)\*.h $(ProjectDir)\..\..\..\include\gtsam\;&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;GTSAM_EXPORTS"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\cal3_S2.cpp"
>
</File>
<File
RelativePath=".\chordalBayesNet.cpp"
>
</File>
<File
RelativePath=".\conditionalGaussian.cpp"
>
</File>
<File
RelativePath=".\factorGraph.cpp"
>
</File>
<File
RelativePath=".\fgConfig.cpp"
>
</File>
<File
RelativePath=".\linearFactor.cpp"
>
</File>
<File
RelativePath=".\linearFactorGraph.cpp"
>
</File>
<File
RelativePath=".\matrix.cpp"
>
</File>
<File
RelativePath=".\nonlinearFactor.cpp"
>
</File>
<File
RelativePath=".\nonlinearFactorGraph.cpp"
>
</File>
<File
RelativePath=".\numericalDerivative.cpp"
>
</File>
<File
RelativePath=".\ordering.cpp"
>
</File>
<File
RelativePath=".\Point2.cpp"
>
</File>
<File
RelativePath=".\Point3.cpp"
>
</File>
<File
RelativePath=".\Pose3.cpp"
>
</File>
<File
RelativePath=".\Rot3.cpp"
>
</File>
<File
RelativePath=".\simulated2D.cpp"
>
</File>
<File
RelativePath=".\smallExample.cpp"
>
</File>
<File
RelativePath=".\svdcmp.cpp"
>
</File>
<File
RelativePath=".\vector.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\cal3_S2.h"
>
</File>
<File
RelativePath=".\chordalBayesNet.h"
>
</File>
<File
RelativePath=".\conditionalGaussian.h"
>
</File>
<File
RelativePath=".\factor.h"
>
</File>
<File
RelativePath=".\factorGraph.h"
>
</File>
<File
RelativePath=".\fgConfig.h"
>
</File>
<File
RelativePath=".\gtsam.h"
>
</File>
<File
RelativePath=".\linearFactor.h"
>
</File>
<File
RelativePath=".\linearFactorGraph.h"
>
</File>
<File
RelativePath=".\LinearFactorSet.h"
>
</File>
<File
RelativePath=".\matrix.h"
>
</File>
<File
RelativePath=".\nonlinearFactor.h"
>
</File>
<File
RelativePath=".\nonlinearFactorGraph.h"
>
</File>
<File
RelativePath=".\numericalDerivative.h"
>
</File>
<File
RelativePath=".\ordering.h"
>
</File>
<File
RelativePath=".\Point2.h"
>
</File>
<File
RelativePath=".\Point3.h"
>
</File>
<File
RelativePath=".\Pose3.h"
>
</File>
<File
RelativePath=".\Rot3.h"
>
</File>
<File
RelativePath=".\simulated2D.h"
>
</File>
<File
RelativePath=".\smallExample.h"
>
</File>
<File
RelativePath=".\svdcmp.h"
>
</File>
<File
RelativePath=".\Value.h"
>
</File>
<File
RelativePath=".\vector.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\Makefile"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -1,139 +0,0 @@
# Makefile for gtsam/cpp
# Author Frank Dellaert
# on the Mac, libtool is called glibtool :-(
# documentation see /opt/local/share/doc/libtool-1.5.26/manual.html
ifeq ($(shell uname),Darwin)
LIBTOOL = glibtool
else
LIBTOOL = libtool
endif
INSTALL = install
# C++ flags
CXXFLAGS += -isystem $(BOOST_DIR) -O5
CXXFLAGS += -DBOOST_UBLAS_NDEBUG
# specify the source files
# basic
sources = Vector.cpp svdcmp.cpp Matrix.cpp numericalDerivative.cpp Ordering.cpp
# nodes
sources += FGConfig.cpp GaussianFactor.cpp ConditionalGaussian.cpp NonlinearFactor.cpp
# graphs
sources += FactorGraph.cpp GaussianFactorGraph.cpp NonlinearFactorGraph.cpp ChordalBayesNet.cpp
# geometry
sources += Point2.cpp Point3.cpp Rot3.cpp Pose3.cpp Cal3_S2.cpp
# The header files will be installed in ~/include/gtsam
headers = Value.h factor.h linearfactorset.h $(sources:.cpp=.h)
# conventional object files
object_files = $(sources:.cpp=.o)
# For libtool to build a shared library, we need "shared" object files with extension .lo
shared_object_files = $(sources:.cpp=.lo)
# rule for shared compiling shared_object_files
%.lo: %.o
# rule for shared compiling shared_object_files
%.lo: %.cpp
$(LIBTOOL) --tag=CXX --mode=compile $(COMPILE.cpp) $(OUTPUT_OPTION) $<
# library version
current = 0 # The most recent interface number that this library implements.
revision = 0 # The implementation number of the current interface
age = 0 # The difference between the newest and oldest interfaces that \
this library implements. In other words, the library implements all \
the interface numbers in the range from number current - age to \
current.
# from libtool manual:
# Here are a set of rules to help you update your library version information:
# Start with version information of 0:0:0 for each libtool library.
# Update the version information only immediately before a public release of your software.
# If the library source code has changed at all since the last update, then increment revision
# If any interfaces have been added, removed, or changed since the last update, increment current, and set revision to 0.
# If any interfaces have been added since the last public release, then increment age.
# If any interfaces have been removed since the last public release, then set age to 0.
version = $(current):$(revision):$(age)
# this builds the shared library
# note that libgtsam.la is the libtool target
# the actual library is built in the hidden subdirectory .libs
libgtsam.la : $(shared_object_files)
$(LIBTOOL) --tag=CXX --mode=link g++ -version-info $(version) -o libgtsam.la -rpath $(HOME)/lib $(shared_object_files)
# shortcut
lib: libgtsam.la
# this builds the static library (used for unit testing)
# object files will be only ones remade if a file is touched because deps broken
libgtsam.a : $(shared_object_files) $(object_files)
$(LIBTOOL) --tag=CXX --mode=link g++ -o libgtsam.a -static $(HOME)/lib $(shared_object_files)
# and this installs the shared library
install: libgtsam.la
$(INSTALL) -d $(HOME)/include/gtsam
rm -f $(HOME)/include/gtsam/typedefs.h
cp -f $(headers) $(HOME)/include/gtsam
$(LIBTOOL) --mode=install cp libgtsam.la $(HOME)/lib/libgtsam.la
# create the MATLAB toolbox
interfacePath = .
moduleName = gtsam
toolboxpath = $(HOME)/toolbox/gtsam
mexFlags = "-I$(BOOST_DIR) -I$(HOME)/include -I$(HOME)/include/gtsam -L$(HOME)/lib -lgtsam"
matlab:
wrap $(interfacePath) $(moduleName) $(toolboxpath) $(mexFlags)
# unit tests
unit-tests = $(shell ls test*.cpp)
unit-tests: $(unit-tests:.cpp=.run)
# timing tests
timing-tests = $(shell ls time*.cpp)
timing-tests: $(timing-tests:.cpp=.run)
# local executables are for testing and timing
executables = $(unit-tests:.cpp=) $(timing-tests:.cpp=)
# link flags
INCDIR ?= $(HOME)/include
LIBDIR ?= $(HOME)/lib
$(executables) : simulated2D.o smallExample.o libgtsam.a
$(executables) : LDFLAGS += -I. -I$(INCDIR)
$(executables) : LDLIBS += libgtsam.a -L$(LIBDIR) -lCppUnitLite
tests: unit-tests timing-tests
clean-tests:
-rm -rf $(executables)
# make a version of timeGaussianFactor instrumented for Saturn profiler
saturn: timeGaussianFactor
saturn: CXXFLAGS += -finstrument-functions
saturn: LDLIBS += -lSaturn
# rule to run an executable
%.run: %
./$^
# clean will remove the hidden .libs directory by libtool as well
clean: clean-tests
-rm -rf *.d *.o *.lo *.a *.la .libs *.dSYM
.PHONY: clean clean-tests unit-tests timing-tests matlab deps
# dependecy generation as described in
# http://www.wlug.org.nz/MakefileHowto
all-sources = $(sources) smallExample.cpp simulated2D.cpp
# when building object files, -MMD specifies dependency generation into .d files
(all-sources:.cpp=.o): CXXFLAGS += -MMD
deps := $(all-sources:.cpp=.d)
deps: $(all-sources)
$(CXX) -MMD -E $(CXXFLAGS) -I. -I$(INCDIR) $(all-sources) > /dev/null
-include $(deps)

View File

@ -11,13 +11,11 @@
#define GTSAM_MAGIC_KEY
#include "Ordering.h"
#include "smallExample.h"
#include "BayesNetPreconditioner.h"
#include "iterative-inl.h"
using namespace std;
using namespace gtsam;
using namespace example;
/* ************************************************************************* */
TEST( BayesNetPreconditioner, operators )
@ -62,68 +60,6 @@ TEST( BayesNetPreconditioner, operators )
CHECK(assert_equal(expected2,actual2));
}
/* ************************************************************************* */
TEST( BayesNetPreconditioner, conjugateGradients )
{
// Build a planar graph
GaussianFactorGraph Ab;
VectorConfig xtrue;
size_t N = 3;
boost::tie(Ab, xtrue) = planarGraph(N); // A*x-b
// Get the spanning tree and corresponding ordering
GaussianFactorGraph Ab1, Ab2; // A1*x-b1 and A2*x-b2
boost::tie(Ab1, Ab2) = splitOffPlanarTree(N, Ab);
// Eliminate the spanning tree to build a prior
Ordering ordering = planarOrdering(N);
GaussianBayesNet Rc1 = Ab1.eliminate(ordering); // R1*x-c1
VectorConfig xbar = optimize(Rc1); // xbar = inv(R1)*c1
// Create BayesNet-preconditioned system
BayesNetPreconditioner system(Ab,Rc1);
// Create zero config y0 and perturbed config y1
VectorConfig y0;
Vector z2 = zero(2);
BOOST_FOREACH(const Symbol& j, ordering) y0.insert(j,z2);
VectorConfig y1 = y0;
y1["x2003"] = Vector_(2, 1.0, -1.0);
VectorConfig x1 = system.x(y1);
// Check gradient for y0
VectorConfig expectedGradient0;
expectedGradient0.insert("x1001", Vector_(2,-1000.,-1000.));
expectedGradient0.insert("x1002", Vector_(2, 0., -300.));
expectedGradient0.insert("x1003", Vector_(2, 0., -300.));
expectedGradient0.insert("x2001", Vector_(2, -100., 200.));
expectedGradient0.insert("x2002", Vector_(2, -100., 0.));
expectedGradient0.insert("x2003", Vector_(2, -100., -200.));
expectedGradient0.insert("x3001", Vector_(2, -100., 100.));
expectedGradient0.insert("x3002", Vector_(2, -100., 0.));
expectedGradient0.insert("x3003", Vector_(2, -100., -100.));
VectorConfig actualGradient0 = system.gradient(y0);
CHECK(assert_equal(expectedGradient0,actualGradient0));
#ifdef VECTORBTREE
CHECK(actualGradient0.cloned(y0));
#endif
// Solve using PCG
bool verbose = false;
double epsilon = 1e-6; // had to crank this down !!!
size_t maxIterations = 100;
VectorConfig actual_y = gtsam::conjugateGradients<BayesNetPreconditioner,
VectorConfig, Errors>(system, y1, verbose, epsilon, epsilon, maxIterations);
VectorConfig actual_x = system.x(actual_y);
CHECK(assert_equal(xtrue,actual_x));
// Compare with non preconditioned version:
VectorConfig actual2 = conjugateGradientDescent(Ab, x1, verbose, epsilon,
maxIterations);
CHECK(assert_equal(xtrue,actual2));
}
/* ************************************************************************* */
int main() {
TestResult tr;

View File

@ -15,7 +15,6 @@ using namespace boost::assign;
#include "SymbolicFactorGraph.h"
#include "Ordering.h"
#include "BayesTree-inl.h"
#include "smallExample.h"
#include "IndexTable.h"
using namespace gtsam;

View File

@ -24,7 +24,6 @@ using namespace boost::assign;
#include "BinaryConditional.h"
#include "BayesNet-inl.h"
#include "smallExample.h"
#include "Ordering.h"
#include "SymbolMap.h"

View File

@ -14,7 +14,6 @@
#include <Ordering.h>
#include <ConstraintOptimizer.h>
#include <smallExample.h>
#define GTSAM_MAGIC_KEY
@ -23,7 +22,6 @@ using namespace boost::assign;
using namespace std;
using namespace gtsam;
using namespace example;
/* ************************************************************************* */
// Example of a single Constrained QP problem from the matlab testCQP.m file.
@ -382,83 +380,6 @@ TEST( matrix, line_search ) {
CHECK(final_error <= init_error);
}
/* ************************************************************************* */
TEST( matrix, unconstrained_fg_ata ) {
// create a graph
GaussianFactorGraph fg = createGaussianFactorGraph();
Matrix A; Vector b;
Ordering ordering;
ordering += Symbol('l', 1), Symbol('x', 1), Symbol('x', 2);
boost::tie(A, b) = fg.matrix(ordering);
Matrix B_ata = prod(trans(A), A);
// solve subproblem
Vector actual = solve_ldl(B_ata, prod(trans(A), b));
// verify
Vector expected = createCorrectDelta().vector();
CHECK(assert_equal(expected,actual));
}
///* ************************************************************************* */
//TEST( matrix, unconstrained_fg ) {
// // create a graph
// GaussianFactorGraph fg = createGaussianFactorGraph();
//
// Matrix A; Vector b;
// Ordering ordering;
// ordering += Symbol('l', 1), Symbol('x', 1), Symbol('x', 2);
// boost::tie(A, b) = fg.matrix(ordering);
// Matrix B_ata = prod(trans(A), A);
//// print(B_ata, "B_ata");
//// print(b, " b");
//
// // parameters
// size_t maxIt = 50;
// double stepsize = 0.1;
//
// // iterate to solve
// VectorConfig x = createZeroDelta();
// BFGSEstimator B(x.dim());
//
// Vector step;
//
// for (size_t i=0; i<maxIt; ++i) {
//// cout << "Error at Iteration: " << i << " is " << fg.error(x) << endl;
//
// // find the gradient
// Vector dfx = fg.gradient(x).vector();
//// print(dfx, " dfx");
// CHECK(assert_equal(-1.0 * prod(trans(A), b - A*x.vector()), dfx));
//
// // update hessian
// if (i>0) {
// B.update(dfx, step);
// } else {
// B.update(dfx);
// }
//
// // solve subproblem
//// print(B.getB(), " B_bfgs");
// Vector delta = solve_ldl(B.getB(), -dfx);
//// Vector delta = solve_ldl(B_ata, -dfx);
//
//// print(delta, " delta");
//
// // update
// step = stepsize * delta;
//// step = linesearch(x, delta, penalty); // TODO: switch here
// x = expmap(x, step);
//// print(step, " step");
// }
//
// // verify
// VectorConfig expected = createCorrectDelta();
// CHECK(assert_equal(expected,x, 1e-4));
//}
/* ************************************************************************* */
int main() { TestResult tr; return TestRegistry::runAllTests(tr); }
/* ************************************************************************* */

View File

@ -21,11 +21,9 @@ using namespace boost::assign;
#include "Ordering.h"
#include "GaussianConditional.h"
#include "inference-inl.h"
#include "smallExample.h"
using namespace std;
using namespace gtsam;
using namespace example;
using namespace boost;
static SharedDiagonal
@ -33,22 +31,6 @@ static SharedDiagonal
constraintModel = noiseModel::Constrained::All(2);
/* ************************************************************************* */
TEST( GaussianFactor, linearFactor )
{
Matrix I = eye(2);
Vector b = Vector_(2, 2.0, -1.0);
GaussianFactor expected("x1", -10*I,"x2", 10*I, b, noiseModel::Unit::Create(2));
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get the factor "f2" from the factor graph
GaussianFactor::shared_ptr lf = fg[1];
// check if the two factors are the same
CHECK(assert_equal(expected,*lf));
}
TEST( GaussianFactor, constructor)
{
Vector b = Vector_(3, 1., 2., 3.);
@ -92,101 +74,6 @@ TEST( GaussianFactor, operators )
CHECK(assert_equal(expectedX2,x));
}
/* ************************************************************************* */
TEST( GaussianFactor, keys )
{
// get the factor "f2" from the small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
GaussianFactor::shared_ptr lf = fg[1];
list<Symbol> expected;
expected.push_back("x1");
expected.push_back("x2");
CHECK(lf->keys() == expected);
}
/* ************************************************************************* */
TEST( GaussianFactor, dimensions )
{
// get the factor "f2" from the small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// Check a single factor
Dimensions expected;
insert(expected)("x1", 2)("x2", 2);
Dimensions actual = fg[1]->dimensions();
CHECK(expected==actual);
}
/* ************************************************************************* */
TEST( GaussianFactor, getDim )
{
// get a factor
GaussianFactorGraph fg = createGaussianFactorGraph();
GaussianFactor::shared_ptr factor = fg[0];
// get the size of a variable
size_t actual = factor->getDim("x1");
// verify
size_t expected = 2;
CHECK(actual == expected);
}
/* ************************************************************************* */
TEST( GaussianFactor, combine )
{
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get two factors from it and insert the factors into a vector
vector<GaussianFactor::shared_ptr> lfg;
lfg.push_back(fg[4 - 1]);
lfg.push_back(fg[2 - 1]);
// combine in a factor
GaussianFactor combined(lfg);
// sigmas
double sigma2 = 0.1;
double sigma4 = 0.2;
Vector sigmas = Vector_(4, sigma4, sigma4, sigma2, sigma2);
// the expected combined linear factor
Matrix Ax2 = Matrix_(4, 2, // x2
-5., 0.,
+0., -5.,
10., 0.,
+0., 10.);
Matrix Al1 = Matrix_(4, 2, // l1
5., 0.,
0., 5.,
0., 0.,
0., 0.);
Matrix Ax1 = Matrix_(4, 2, // x1
0.00, 0., // f4
0.00, 0., // f4
-10., 0., // f2
0.00, -10. // f2
);
// the RHS
Vector b2(4);
b2(0) = -1.0;
b2(1) = 1.5;
b2(2) = 2.0;
b2(3) = -1.0;
// use general constructor for making arbitrary factors
vector<pair<Symbol, Matrix> > meas;
meas.push_back(make_pair("x2", Ax2));
meas.push_back(make_pair("l1", Al1));
meas.push_back(make_pair("x1", Ax1));
GaussianFactor expected(meas, b2, noiseModel::Diagonal::Sigmas(ones(4)));
CHECK(assert_equal(expected,combined));
}
/* ************************************************************************* */
TEST( NonlinearFactorGraph, combine2){
double sigma1 = 0.0957;
@ -304,65 +191,6 @@ TEST( GaussianFactor, linearFactorN){
CHECK(assert_equal(expected,combinedFactor));
}
/* ************************************************************************* */
TEST( GaussianFactor, error )
{
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get the first factor from the factor graph
GaussianFactor::shared_ptr lf = fg[0];
// check the error of the first factor with noisy config
VectorConfig cfg = createZeroDelta();
// calculate the error from the factor "f1"
// note the error is the same as in testNonlinearFactor
double actual = lf->error(cfg);
DOUBLES_EQUAL( 1.0, actual, 0.00000001 );
}
/* ************************************************************************* */
TEST( GaussianFactor, eliminate )
{
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get two factors from it and insert the factors into a vector
vector<GaussianFactor::shared_ptr> lfg;
lfg.push_back(fg[4 - 1]);
lfg.push_back(fg[2 - 1]);
// combine in a factor
GaussianFactor combined(lfg);
// eliminate the combined factor
GaussianConditional::shared_ptr actualCG;
GaussianFactor::shared_ptr actualLF;
boost::tie(actualCG,actualLF) = combined.eliminate("x2");
// create expected Conditional Gaussian
Matrix I = eye(2)*sqrt(125.0);
Matrix R11 = I, S12 = -0.2*I, S13 = -0.8*I;
Vector d = I*Vector_(2,0.2,-0.14);
// Check the conditional Gaussian
GaussianConditional
expectedCG("x2", d, R11, "l1", S12, "x1", S13, repeat(2, 1.0));
// the expected linear factor
I = eye(2)/0.2236;
Matrix Bl1 = I, Bx1 = -I;
Vector b1 = I*Vector_(2,0.0,0.2);
GaussianFactor expectedLF("l1", Bl1, "x1", Bx1, b1, repeat(2,1.0));
// check if the result matches
CHECK(assert_equal(expectedCG,*actualCG,1e-3));
CHECK(assert_equal(expectedLF,*actualLF,1e-3));
}
/* ************************************************************************* */
TEST( GaussianFactor, eliminate2 )
{
@ -470,96 +298,6 @@ TEST( GaussianFactor, empty )
CHECK(f.empty()==true);
}
/* ************************************************************************* */
TEST( GaussianFactor, matrix )
{
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get the factor "f2" from the factor graph
//GaussianFactor::shared_ptr lf = fg[1]; // NOTE: using the older version
Vector b2 = Vector_(2, 0.2, -0.1);
Matrix I = eye(2);
GaussianFactor::shared_ptr lf(new GaussianFactor("x1", -I, "x2", I, b2, sigma0_1));
// render with a given ordering
Ordering ord;
ord += "x1","x2";
// Test whitened version
Matrix A_act1; Vector b_act1;
boost::tie(A_act1,b_act1) = lf->matrix(ord, true);
Matrix A1 = Matrix_(2,4,
-10.0, 0.0, 10.0, 0.0,
000.0,-10.0, 0.0, 10.0 );
Vector b1 = Vector_(2, 2.0, -1.0);
EQUALITY(A_act1,A1);
EQUALITY(b_act1,b1);
// Test unwhitened version
Matrix A_act2; Vector b_act2;
boost::tie(A_act2,b_act2) = lf->matrix(ord, false);
Matrix A2 = Matrix_(2,4,
-1.0, 0.0, 1.0, 0.0,
000.0,-1.0, 0.0, 1.0 );
//Vector b2 = Vector_(2, 2.0, -1.0);
EQUALITY(A_act2,A2);
EQUALITY(b_act2,b2);
// Ensure that whitening is consistent
shared_ptr<noiseModel::Gaussian> model = lf->get_model();
model->WhitenSystem(A_act2, b_act2);
EQUALITY(A_act1, A_act2);
EQUALITY(b_act1, b_act2);
}
/* ************************************************************************* */
TEST( GaussianFactor, matrix_aug )
{
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get the factor "f2" from the factor graph
//GaussianFactor::shared_ptr lf = fg[1];
Vector b2 = Vector_(2, 0.2, -0.1);
Matrix I = eye(2);
GaussianFactor::shared_ptr lf(new GaussianFactor("x1", -I, "x2", I, b2, sigma0_1));
// render with a given ordering
Ordering ord;
ord += "x1","x2";
// Test unwhitened version
Matrix Ab_act1;
Ab_act1 = lf->matrix_augmented(ord, false);
Matrix Ab1 = Matrix_(2,5,
-1.0, 0.0, 1.0, 0.0, 0.2,
00.0,- 1.0, 0.0, 1.0, -0.1 );
EQUALITY(Ab_act1,Ab1);
// Test whitened version
Matrix Ab_act2;
Ab_act2 = lf->matrix_augmented(ord, true);
Matrix Ab2 = Matrix_(2,5,
-10.0, 0.0, 10.0, 0.0, 2.0,
00.0, -10.0, 0.0, 10.0, -1.0 );
EQUALITY(Ab_act2,Ab2);
// Ensure that whitening is consistent
shared_ptr<noiseModel::Gaussian> model = lf->get_model();
model->WhitenInPlace(Ab_act1);
EQUALITY(Ab_act1, Ab_act2);
}
/* ************************************************************************* */
// small aux. function to print out lists of anything
template<class T>
@ -568,80 +306,6 @@ void print(const list<T>& i) {
cout << endl;
}
/* ************************************************************************* */
TEST( GaussianFactor, sparse )
{
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get the factor "f2" from the factor graph
GaussianFactor::shared_ptr lf = fg[1];
// render with a given ordering
Ordering ord;
ord += "x1","x2";
list<int> i,j;
list<double> s;
boost::tie(i,j,s) = lf->sparse(fg.columnIndices(ord));
list<int> i1,j1;
i1 += 1,2,1,2;
j1 += 1,2,3,4;
list<double> s1;
s1 += -10,-10,10,10;
CHECK(i==i1);
CHECK(j==j1);
CHECK(s==s1);
}
/* ************************************************************************* */
TEST( GaussianFactor, sparse2 )
{
// create a small linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get the factor "f2" from the factor graph
GaussianFactor::shared_ptr lf = fg[1];
// render with a given ordering
Ordering ord;
ord += "x2","l1","x1";
list<int> i,j;
list<double> s;
boost::tie(i,j,s) = lf->sparse(fg.columnIndices(ord));
list<int> i1,j1;
i1 += 1,2,1,2;
j1 += 5,6,1,2;
list<double> s1;
s1 += -10,-10,10,10;
CHECK(i==i1);
CHECK(j==j1);
CHECK(s==s1);
}
/* ************************************************************************* */
TEST( GaussianFactor, size )
{
// create a linear factor graph
GaussianFactorGraph fg = createGaussianFactorGraph();
// get some factors from the graph
boost::shared_ptr<GaussianFactor> factor1 = fg[0];
boost::shared_ptr<GaussianFactor> factor2 = fg[1];
boost::shared_ptr<GaussianFactor> factor3 = fg[2];
CHECK(factor1->size() == 1);
CHECK(factor2->size() == 2);
CHECK(factor3->size() == 2);
}
/* ************************************************************************* */
TEST( GaussianFactor, tally_separator )
{

View File

@ -17,7 +17,6 @@ using namespace boost::assign;
#include "Ordering.h"
#include "GaussianBayesNet.h"
#include "ISAM-inl.h"
#include "smallExample.h"
using namespace std;
using namespace gtsam;

View File

@ -16,12 +16,10 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY
#include "smallExample.h"
#include "JunctionTree-inl.h"
using namespace std;
using namespace gtsam;
using namespace example;
/* ************************************************************************* */
/**
@ -57,44 +55,6 @@ TEST( GaussianFactorGraph, constructor )
LONGS_EQUAL(2, junctionTree.root()->children()[0]->size());
}
/* ************************************************************************* *
Bayes tree for smoother with "nested dissection" ordering:
C1 x5 x6 x4
C2 x3 x2 : x4
C3 x1 : x2
C4 x7 : x6
/* ************************************************************************* */
TEST( GaussianFactorGraph, constructor2 )
{
// create a graph
GaussianFactorGraph fg = createSmoother(7);
// create an ordering
Ordering ordering; ordering += "x1","x3","x5","x7","x2","x6","x4";
GaussianJunctionTree<GaussianFactorGraph> junctionTree(fg, ordering);
Ordering frontal1; frontal1 += "x5", "x6", "x4";
Ordering frontal2; frontal2 += "x3", "x2";
Ordering frontal3; frontal3 += "x1";
Ordering frontal4; frontal4 += "x7";
Unordered sep1;
Unordered sep2; sep2 += "x4";
Unordered sep3; sep3 += "x2";
Unordered sep4; sep4 += "x6";
CHECK(assert_equal(frontal1, junctionTree.root()->frontal()));
CHECK(assert_equal(sep1, junctionTree.root()->separator()));
LONGS_EQUAL(5, junctionTree.root()->size());
CHECK(assert_equal(frontal2, junctionTree.root()->children()[0]->frontal()));
CHECK(assert_equal(sep2, junctionTree.root()->children()[0]->separator()));
LONGS_EQUAL(4, junctionTree.root()->children()[0]->size());
CHECK(assert_equal(frontal3, junctionTree.root()->children()[0]->children()[0]->frontal()));
CHECK(assert_equal(sep3, junctionTree.root()->children()[0]->children()[0]->separator()));
LONGS_EQUAL(2, junctionTree.root()->children()[0]->children()[0]->size());
CHECK(assert_equal(frontal4, junctionTree.root()->children()[1]->frontal()));
CHECK(assert_equal(sep4, junctionTree.root()->children()[1]->separator()));
LONGS_EQUAL(2, junctionTree.root()->children()[1]->size());
}
/* ************************************************************************* */
/**
* x1 - x2 - x3 - x4
@ -139,25 +99,6 @@ TEST( GaussianFactorGraph, eliminate )
CHECK(assert_equal(bayesTree_expected, bayesTree));
}
/* ************************************************************************* *
TEST( GaussianFactorGraph, optimizeMultiFrontal )
{
// create a graph
GaussianFactorGraph fg = createSmoother(7);
// create an ordering
Ordering ordering; ordering += "x1","x3","x5","x7","x2","x6","x4";
// optimize the graph
GaussianJunctionTree<GaussianFactorGraph> junctionTree(fg, ordering);
VectorConfig actual = junctionTree.optimize();
// verify
// VectorConfig expected = createCorrectDelta();
//
// CHECK(assert_equal(expected,actual));
}
/* ************************************************************************* */
int main() { TestResult tr; return TestRegistry::runAllTests(tr);}
/* ************************************************************************* */

View File

@ -13,7 +13,6 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY
#include "Pose2.h"
#include "LieConfig-inl.h"
#include "Vector.h"

View File

@ -12,7 +12,6 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY
#include "Ordering.h"
#include "pose2SLAM.h"
using namespace std;
using namespace gtsam;

View File

@ -13,13 +13,11 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY
#include "Ordering.h"
#include "smallExample.h"
#include "SymbolicBayesNet.h"
#include "SymbolicFactorGraph.h"
using namespace std;
using namespace gtsam;
using namespace example;
Symbol _B_('B', 0), _L_('L', 0);
SymbolicConditional::shared_ptr
@ -39,31 +37,6 @@ TEST( SymbolicBayesNet, equals )
CHECK(!f1.equals(f2));
}
/* ************************************************************************* */
TEST( SymbolicBayesNet, constructor )
{
// Create manually
SymbolicConditional::shared_ptr
x2(new SymbolicConditional("x2","l1", "x1")),
l1(new SymbolicConditional("l1","x1")),
x1(new SymbolicConditional("x1"));
SymbolicBayesNet expected;
expected.push_back(x2);
expected.push_back(l1);
expected.push_back(x1);
// Create from a factor graph
GaussianFactorGraph factorGraph = createGaussianFactorGraph();
SymbolicFactorGraph fg(factorGraph);
// eliminate it
Ordering ordering;
ordering += "x2","l1","x1";
SymbolicBayesNet actual = fg.eliminate(ordering);
CHECK(assert_equal(expected, actual));
}
/* ************************************************************************* */
TEST( SymbolicBayesNet, pop_front )
{

View File

@ -12,130 +12,15 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY
#include "Ordering.h"
#include "smallExample.h"
#include "SymbolicFactorGraph.h"
#include "SymbolicBayesNet.h"
#include "FactorGraph-inl.h"
using namespace std;
using namespace gtsam;
using namespace example;
/* ************************************************************************* */
TEST( SymbolicFactorGraph, symbolicFactorGraph )
{
// construct expected symbolic graph
SymbolicFactorGraph expected;
expected.push_factor("x1");
expected.push_factor("x1","x2");
expected.push_factor("l1","x1");
expected.push_factor("l1","x2");
// construct it from the factor graph
GaussianFactorGraph factorGraph = createGaussianFactorGraph();
SymbolicFactorGraph actual(factorGraph);
CHECK(assert_equal(expected, actual));
}
/* ************************************************************************* */
TEST( SymbolicFactorGraph, findAndRemoveFactors )
{
// construct it from the factor graph graph
GaussianFactorGraph factorGraph = createGaussianFactorGraph();
SymbolicFactorGraph actual(factorGraph);
SymbolicFactor::shared_ptr f1 = actual[0];
SymbolicFactor::shared_ptr f3 = actual[2];
actual.findAndRemoveFactors<SymbolicFactorGraph>("x2");
// construct expected graph after find_factors_and_remove
SymbolicFactorGraph expected;
SymbolicFactor::shared_ptr null;
expected.push_back(f1);
expected.push_back(null);
expected.push_back(f3);
expected.push_back(null);
CHECK(assert_equal(expected, actual));
}
/* ************************************************************************* */
TEST( SymbolicFactorGraph, factors)
{
// create a test graph
GaussianFactorGraph factorGraph = createGaussianFactorGraph();
SymbolicFactorGraph fg(factorGraph);
// ask for all factor indices connected to x1
list<size_t> x1_factors = fg.factors("x1");
int x1_indices[] = { 0, 1, 2 };
list<size_t> x1_expected(x1_indices, x1_indices + 3);
CHECK(x1_factors==x1_expected);
// ask for all factor indices connected to x2
list<size_t> x2_factors = fg.factors("x2");
int x2_indices[] = { 1, 3 };
list<size_t> x2_expected(x2_indices, x2_indices + 2);
CHECK(x2_factors==x2_expected);
}
/* ************************************************************************* */
TEST( SymbolicFactorGraph, removeAndCombineFactors )
{
// create a test graph
GaussianFactorGraph factorGraph = createGaussianFactorGraph();
SymbolicFactorGraph fg(factorGraph);
// combine all factors connected to x1
SymbolicFactor::shared_ptr actual = removeAndCombineFactors(fg,"x1");
// check result
SymbolicFactor expected("l1","x1","x2");
CHECK(assert_equal(expected,*actual));
}
/* ************************************************************************* */
TEST( SymbolicFactorGraph, eliminateOne )
{
// create a test graph
GaussianFactorGraph factorGraph = createGaussianFactorGraph();
SymbolicFactorGraph fg(factorGraph);
// eliminate
SymbolicConditional::shared_ptr actual = fg.eliminateOne("x1");
// create expected symbolic Conditional
SymbolicConditional expected("x1","l1","x2");
CHECK(assert_equal(expected,*actual));
}
/* ************************************************************************* */
TEST( GaussianFactorGraph, eliminate )
{
// create expected Chordal bayes Net
SymbolicConditional::shared_ptr x2(new SymbolicConditional("x2", "l1", "x1"));
SymbolicConditional::shared_ptr l1(new SymbolicConditional("l1", "x1"));
SymbolicConditional::shared_ptr x1(new SymbolicConditional("x1"));
SymbolicBayesNet expected;
expected.push_back(x2);
expected.push_back(l1);
expected.push_back(x1);
// create a test graph
GaussianFactorGraph factorGraph = createGaussianFactorGraph();
SymbolicFactorGraph fg(factorGraph);
// eliminate it
Ordering ordering;
ordering += "x2","l1","x1";
SymbolicBayesNet actual = fg.eliminate(ordering);
CHECK(assert_equal(expected,actual));
}
/* ************************************************************************* */
TEST( GaussianFactorGraph, eliminate2 )
TEST( SymbolicFactorGraph, eliminate2 )
{
// create a test graph
SymbolicFactorGraph fg;

823
geometry/Makefile.in Normal file
View File

@ -0,0 +1,823 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
#----------------------------------------------------------------------------------------------------
# GTSAM geometry
#----------------------------------------------------------------------------------------------------
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
check_PROGRAMS = testPoint2$(EXEEXT) testRot2$(EXEEXT) \
testPose2$(EXEEXT) testPoint3$(EXEEXT) testRot3$(EXEEXT) \
testPose3$(EXEEXT) testCal3_S2$(EXEEXT) \
testCalibratedCamera$(EXEEXT) testSimpleCamera$(EXEEXT) \
testTensors$(EXEEXT) testHomography2$(EXEEXT) \
testTrifocal$(EXEEXT)
noinst_PROGRAMS = timeRot3$(EXEEXT)
subdir = geometry
DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libgeometry_la_LIBADD =
am__objects_1 = Point2.lo Rot2.lo Pose2.lo Point3.lo Rot3.lo Pose3.lo \
Cal3_S2.lo CalibratedCamera.lo SimpleCamera.lo \
projectiveGeometry.lo tensorInterface.lo
am_libgeometry_la_OBJECTS = $(am__objects_1)
libgeometry_la_OBJECTS = $(am_libgeometry_la_OBJECTS)
PROGRAMS = $(noinst_PROGRAMS)
testCal3_S2_SOURCES = testCal3_S2.cpp
testCal3_S2_OBJECTS = testCal3_S2.$(OBJEXT)
testCal3_S2_LDADD = $(LDADD)
testCal3_S2_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testCalibratedCamera_SOURCES = testCalibratedCamera.cpp
testCalibratedCamera_OBJECTS = testCalibratedCamera.$(OBJEXT)
testCalibratedCamera_LDADD = $(LDADD)
testCalibratedCamera_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testHomography2_SOURCES = testHomography2.cpp
testHomography2_OBJECTS = testHomography2.$(OBJEXT)
testHomography2_LDADD = $(LDADD)
testHomography2_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testPoint2_SOURCES = testPoint2.cpp
testPoint2_OBJECTS = testPoint2.$(OBJEXT)
testPoint2_LDADD = $(LDADD)
testPoint2_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testPoint3_SOURCES = testPoint3.cpp
testPoint3_OBJECTS = testPoint3.$(OBJEXT)
testPoint3_LDADD = $(LDADD)
testPoint3_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testPose2_SOURCES = testPose2.cpp
testPose2_OBJECTS = testPose2.$(OBJEXT)
testPose2_LDADD = $(LDADD)
testPose2_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testPose3_SOURCES = testPose3.cpp
testPose3_OBJECTS = testPose3.$(OBJEXT)
testPose3_LDADD = $(LDADD)
testPose3_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testRot2_SOURCES = testRot2.cpp
testRot2_OBJECTS = testRot2.$(OBJEXT)
testRot2_LDADD = $(LDADD)
testRot2_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testRot3_SOURCES = testRot3.cpp
testRot3_OBJECTS = testRot3.$(OBJEXT)
testRot3_LDADD = $(LDADD)
testRot3_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testSimpleCamera_SOURCES = testSimpleCamera.cpp
testSimpleCamera_OBJECTS = testSimpleCamera.$(OBJEXT)
testSimpleCamera_LDADD = $(LDADD)
testSimpleCamera_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testTensors_SOURCES = testTensors.cpp
testTensors_OBJECTS = testTensors.$(OBJEXT)
testTensors_LDADD = $(LDADD)
testTensors_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
testTrifocal_SOURCES = testTrifocal.cpp
testTrifocal_OBJECTS = testTrifocal.$(OBJEXT)
testTrifocal_LDADD = $(LDADD)
testTrifocal_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
timeRot3_SOURCES = timeRot3.cpp
timeRot3_OBJECTS = timeRot3.$(OBJEXT)
timeRot3_LDADD = $(LDADD)
timeRot3_DEPENDENCIES = libgeometry.la ../base/libbase.la \
../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libgeometry_la_SOURCES) testCal3_S2.cpp \
testCalibratedCamera.cpp testHomography2.cpp testPoint2.cpp \
testPoint3.cpp testPose2.cpp testPose3.cpp testRot2.cpp \
testRot3.cpp testSimpleCamera.cpp testTensors.cpp \
testTrifocal.cpp timeRot3.cpp
DIST_SOURCES = $(libgeometry_la_SOURCES) testCal3_S2.cpp \
testCalibratedCamera.cpp testHomography2.cpp testPoint2.cpp \
testPoint3.cpp testPose2.cpp testPose3.cpp testRot2.cpp \
testRot3.cpp testSimpleCamera.cpp testTensors.cpp \
testTrifocal.cpp timeRot3.cpp
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__installdirs = "$(DESTDIR)$(pkgincludedir)"
HEADERS = $(pkginclude_HEADERS)
ETAGS = etags
CTAGS = ctags
am__tty_colors = \
red=; grn=; lgn=; blu=; std=
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
boost = @boost@
boost_serialization = @boost_serialization@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
toolbox = @toolbox@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
# Tensors
#----------------------------------------------------------------------------------------------------
# Create a libtool library that is not installed
# It will be packaged in the toplevel libgtsam.la as specfied in ../Makefile.am
# The headers are installed in $(includedir)/gtsam:
#----------------------------------------------------------------------------------------------------
headers = tensors.h Tensor1.h Tensor2.h Tensor3.h Tensor4.h Tensor5.h \
Tensor1Expression.h Tensor2Expression.h Tensor3Expression.h \
Tensor5Expression.h $(sources:.cpp=.h)
# Points and poses
# Cameras
sources = Point2.cpp Rot2.cpp Pose2.cpp Point3.cpp Rot3.cpp Pose3.cpp \
Cal3_S2.cpp CalibratedCamera.cpp SimpleCamera.cpp \
projectiveGeometry.cpp tensorInterface.cpp
pkginclude_HEADERS = $(headers)
noinst_LTLIBRARIES = libgeometry.la
libgeometry_la_SOURCES = $(sources)
AM_CPPFLAGS = -I$(boost) -I../base
#----------------------------------------------------------------------------------------------------
# rules to build local programs
#----------------------------------------------------------------------------------------------------
TESTS = $(check_PROGRAMS)
AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization)
LDADD = libgeometry.la ../base/libbase.la ../ldl/libldl.la ../CppUnitLite/libCppUnitLite.a
AM_DEFAULT_SOURCE_EXT = .cpp
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu geometry/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu geometry/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libgeometry.la: $(libgeometry_la_OBJECTS) $(libgeometry_la_DEPENDENCIES)
$(CXXLINK) $(libgeometry_la_OBJECTS) $(libgeometry_la_LIBADD) $(LIBS)
clean-checkPROGRAMS:
@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
clean-noinstPROGRAMS:
@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
testCal3_S2$(EXEEXT): $(testCal3_S2_OBJECTS) $(testCal3_S2_DEPENDENCIES)
@rm -f testCal3_S2$(EXEEXT)
$(CXXLINK) $(testCal3_S2_OBJECTS) $(testCal3_S2_LDADD) $(LIBS)
testCalibratedCamera$(EXEEXT): $(testCalibratedCamera_OBJECTS) $(testCalibratedCamera_DEPENDENCIES)
@rm -f testCalibratedCamera$(EXEEXT)
$(CXXLINK) $(testCalibratedCamera_OBJECTS) $(testCalibratedCamera_LDADD) $(LIBS)
testHomography2$(EXEEXT): $(testHomography2_OBJECTS) $(testHomography2_DEPENDENCIES)
@rm -f testHomography2$(EXEEXT)
$(CXXLINK) $(testHomography2_OBJECTS) $(testHomography2_LDADD) $(LIBS)
testPoint2$(EXEEXT): $(testPoint2_OBJECTS) $(testPoint2_DEPENDENCIES)
@rm -f testPoint2$(EXEEXT)
$(CXXLINK) $(testPoint2_OBJECTS) $(testPoint2_LDADD) $(LIBS)
testPoint3$(EXEEXT): $(testPoint3_OBJECTS) $(testPoint3_DEPENDENCIES)
@rm -f testPoint3$(EXEEXT)
$(CXXLINK) $(testPoint3_OBJECTS) $(testPoint3_LDADD) $(LIBS)
testPose2$(EXEEXT): $(testPose2_OBJECTS) $(testPose2_DEPENDENCIES)
@rm -f testPose2$(EXEEXT)
$(CXXLINK) $(testPose2_OBJECTS) $(testPose2_LDADD) $(LIBS)
testPose3$(EXEEXT): $(testPose3_OBJECTS) $(testPose3_DEPENDENCIES)
@rm -f testPose3$(EXEEXT)
$(CXXLINK) $(testPose3_OBJECTS) $(testPose3_LDADD) $(LIBS)
testRot2$(EXEEXT): $(testRot2_OBJECTS) $(testRot2_DEPENDENCIES)
@rm -f testRot2$(EXEEXT)
$(CXXLINK) $(testRot2_OBJECTS) $(testRot2_LDADD) $(LIBS)
testRot3$(EXEEXT): $(testRot3_OBJECTS) $(testRot3_DEPENDENCIES)
@rm -f testRot3$(EXEEXT)
$(CXXLINK) $(testRot3_OBJECTS) $(testRot3_LDADD) $(LIBS)
testSimpleCamera$(EXEEXT): $(testSimpleCamera_OBJECTS) $(testSimpleCamera_DEPENDENCIES)
@rm -f testSimpleCamera$(EXEEXT)
$(CXXLINK) $(testSimpleCamera_OBJECTS) $(testSimpleCamera_LDADD) $(LIBS)
testTensors$(EXEEXT): $(testTensors_OBJECTS) $(testTensors_DEPENDENCIES)
@rm -f testTensors$(EXEEXT)
$(CXXLINK) $(testTensors_OBJECTS) $(testTensors_LDADD) $(LIBS)
testTrifocal$(EXEEXT): $(testTrifocal_OBJECTS) $(testTrifocal_DEPENDENCIES)
@rm -f testTrifocal$(EXEEXT)
$(CXXLINK) $(testTrifocal_OBJECTS) $(testTrifocal_LDADD) $(LIBS)
timeRot3$(EXEEXT): $(timeRot3_OBJECTS) $(timeRot3_DEPENDENCIES)
@rm -f timeRot3$(EXEEXT)
$(CXXLINK) $(timeRot3_OBJECTS) $(timeRot3_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Cal3_S2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CalibratedCamera.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Point2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Point3.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Pose2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Pose3.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Rot2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Rot3.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleCamera.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projectiveGeometry.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tensorInterface.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testCal3_S2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testCalibratedCamera.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testHomography2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testPoint2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testPoint3.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testPose2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testPose3.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRot2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRot3.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSimpleCamera.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testTensors.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testTrifocal.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeRot3.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
$(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
done
uninstall-pkgincludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
check-TESTS: $(TESTS)
@failed=0; all=0; xfail=0; xpass=0; skip=0; \
srcdir=$(srcdir); export srcdir; \
list=' $(TESTS) '; \
$(am__tty_colors); \
if test -n "$$list"; then \
for tst in $$list; do \
if test -f ./$$tst; then dir=./; \
elif test -f $$tst; then dir=; \
else dir="$(srcdir)/"; fi; \
if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
all=`expr $$all + 1`; \
case " $(XFAIL_TESTS) " in \
*[\ \ ]$$tst[\ \ ]*) \
xpass=`expr $$xpass + 1`; \
failed=`expr $$failed + 1`; \
col=$$red; res=XPASS; \
;; \
*) \
col=$$grn; res=PASS; \
;; \
esac; \
elif test $$? -ne 77; then \
all=`expr $$all + 1`; \
case " $(XFAIL_TESTS) " in \
*[\ \ ]$$tst[\ \ ]*) \
xfail=`expr $$xfail + 1`; \
col=$$lgn; res=XFAIL; \
;; \
*) \
failed=`expr $$failed + 1`; \
col=$$red; res=FAIL; \
;; \
esac; \
else \
skip=`expr $$skip + 1`; \
col=$$blu; res=SKIP; \
fi; \
echo "$${col}$$res$${std}: $$tst"; \
done; \
if test "$$all" -eq 1; then \
tests="test"; \
All=""; \
else \
tests="tests"; \
All="All "; \
fi; \
if test "$$failed" -eq 0; then \
if test "$$xfail" -eq 0; then \
banner="$$All$$all $$tests passed"; \
else \
if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
fi; \
else \
if test "$$xpass" -eq 0; then \
banner="$$failed of $$all $$tests failed"; \
else \
if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
fi; \
fi; \
dashes="$$banner"; \
skipped=""; \
if test "$$skip" -ne 0; then \
if test "$$skip" -eq 1; then \
skipped="($$skip test was not run)"; \
else \
skipped="($$skip tests were not run)"; \
fi; \
test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
dashes="$$skipped"; \
fi; \
report=""; \
if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
report="Please report to $(PACKAGE_BUGREPORT)"; \
test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
dashes="$$report"; \
fi; \
dashes=`echo "$$dashes" | sed s/./=/g`; \
if test "$$failed" -eq 0; then \
echo "$$grn$$dashes"; \
else \
echo "$$red$$dashes"; \
fi; \
echo "$$banner"; \
test -z "$$skipped" || echo "$$skipped"; \
test -z "$$report" || echo "$$report"; \
echo "$$dashes$$std"; \
test "$$failed" -eq 0; \
else :; fi
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-pkgincludeHEADERS
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-pkgincludeHEADERS
.MAKE: check-am install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
clean-checkPROGRAMS clean-generic clean-libtool \
clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-pkgincludeHEADERS \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-pkgincludeHEADERS
# rule to run an executable
%.run: % $(LDADD)
./$^
#----------------------------------------------------------------------------------------------------
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -6,7 +6,6 @@
#include <iostream>
#include "Pose3.h"
#include "Lie-inl.h"
#include "LieConfig.h"
using namespace std;
using namespace boost::numeric::ublas;

Some files were not shown because too many files have changed in this diff Show More