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 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. #The option -I m4 tells Autoconf to look for additional Autoconf macros in the m4 subdirectory.
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
# make automake install some standard but missing files # make automake install some standard but missing files
AUTOMAKE_OPTIONS = foreign 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-exec-hook:
install -d ${toolbox}/gtsam && \ install -d ${toolbox}/gtsam && \
cp -rf toolbox/* ${toolbox}/gtsam && \ cp -rf toolbox/* ${toolbox}/gtsam && \
install -d ${prefix}/include/wrap && \ install -d ${prefix}/include/wrap && \
cp -f wrap/wrap-matlab.h ${prefix}/include/wrap/matlab.h && \ 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/
# Todo: Also do CppUnitLite with automake
dist-hook: dist-hook:
mkdir $(distdir)/CppUnitLite mkdir $(distdir)/config
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)/matlab mkdir $(distdir)/matlab
cp -p $(srcdir)/matlab/*.m $(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 { namespace gtsam {
class Symbol;
template <class Key> template <class Key>
class DSF : protected BTree<Key, Key> { class DSF : protected BTree<Key, Key> {
@ -153,6 +151,5 @@ namespace gtsam {
// shortcuts // shortcuts
typedef DSF<int> DSFInt; typedef DSF<int> DSFInt;
typedef DSF<Symbol> DSFSymbol;
} // namespace gtsam } // 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> #include <fstream>
#ifdef GT_USE_CBLAS #ifdef GT_USE_CBLAS
#ifdef YA_BLAS extern "C" {
#include <vecLib/cblas.h>
#else
#include <cblas.h> #include <cblas.h>
#endif }
#endif #endif
#ifdef GT_USE_LAPACK #ifdef GT_USE_LAPACK
#ifdef YA_BLAS extern "C" {
#include <vecLib/clapack.h> #include <cblas.h>
#else
#include <clapack.h> #include <clapack.h>
#endif }
#endif #endif
#include <boost/numeric/ublas/matrix_proxy.hpp> #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 // fill in parameters
const double beta = 1.0; 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 // execute blas call
cblas_dgemv(CblasRowMajor, CblasNoTrans, m, n, alpha, Aptr, ida, Xptr, incx, beta, Eptr, incy); 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(); size_t m = A.size1(), n = A.size2();
double * ei = e.data().begin(); double * ei = e.data().begin();
const double * aij = A.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(); 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); (*ei) += alpha * (*aij) * (*xj);
} }
#endif #endif
@ -218,9 +215,9 @@ void multiplyAdd(const Matrix& A, const Vector& x, Vector& e) {
size_t m = A.size1(), n = A.size2(); size_t m = A.size1(), n = A.size2();
double * ei = e.data().begin(); double * ei = e.data().begin();
const double * aij = A.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(); 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); (*ei) += (*aij) * (*xj);
} }
#endif #endif
@ -249,7 +246,7 @@ void transposeMultiplyAdd(double alpha, const Matrix& A, const Vector& e, Vector
// fill in parameters // fill in parameters
const double beta = 1.0; 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 // execute blas call
cblas_dgemv(CblasRowMajor, CblasTrans, m, n, alpha, Aptr, ida, Eptr, incx, beta, Xptr, incy); 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 // TODO: use BLAS
size_t m = A.size1(), n = A.size2(); size_t m = A.size1(), n = A.size2();
double * xj = x.data().begin(); 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 * ei = e.data().begin();
const double * aij = A.data().begin() + j; 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); (*xj) += alpha * (*aij) * (*ei);
} }
#endif #endif
@ -276,10 +273,10 @@ void transposeMultiplyAdd(const Matrix& A, const Vector& e, Vector& x) {
#else #else
size_t m = A.size1(), n = A.size2(); size_t m = A.size1(), n = A.size2();
double * xj = x.data().begin(); 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 * ei = e.data().begin();
const double * aij = A.data().begin() + j; 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); (*xj) += (*aij) * (*ei);
} }
#endif #endif
@ -397,7 +394,7 @@ void solve(Matrix& A, Matrix& B)
pmatrix pm(A_.size1()); pmatrix pm(A_.size1());
// perform LU-factorization // 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!"); if( res != 0 ) throw runtime_error ("Matrix::solve: lu_factorize failed!");
// backsubstitute to get the inverse // 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. * 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(); const size_t m = A.size1(), n = A.size2();
// w = beta*transpose(A(j:m,:))*v(j:m) // w = beta*transpose(A(j:m,:))*v(j:m)
Vector w(n); 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 #if defined GT_USE_CBLAS
// CBLAS version not working, using manual approach // 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 // update A, b
// A' \define A_{S}-ar and b'\define b-ad // A' \define A_{S}-ar and b'\define b-ad
// __attribute__ ((noinline)) // uncomment to prevent inlining when profiling // __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 Vector& r, double d) {
const size_t m = A.size1(), n = A.size2(); const size_t m = A.size1(), n = A.size2();
for (size_t i = 0; i < m; i++) { // update all rows 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 * 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) { const Vector& r, double d) {
// TODO: reimplement using BLAS // TODO: reimplement using BLAS
updateAb_manual(A,b,j,a,r,d); updateAb_manual(A,b,j,a,r,d);
@ -682,9 +679,9 @@ void householder(Matrix &A) {
__CLPK_integer n = A.size2(); __CLPK_integer n = A.size2();
// convert from row major to column major // convert from row major to column major
double a[m*n]; int k = 0; double a[m*n]; size_t k = 0;
for(int j=0; j<n; j++) for(size_t j=0; j<n; j++)
for(int i=0; i<m; i++, k++) for(size_t i=0; i<m; i++, k++)
a[k] = A(i,j); a[k] = A(i,j);
double tau[n]; double tau[n];
@ -696,13 +693,13 @@ void householder(Matrix &A) {
lwork = (__CLPK_integer)work_optimal_size; lwork = (__CLPK_integer)work_optimal_size;
double work[lwork]; double work[lwork];
dgeqrf_(&m, &n, a, &m, tau, work, &lwork, &info); dgeqrf_(&m, &n, a, &m, tau, work, &lwork, &info);
int k0 = 0; size_t k0 = 0;
int j0; size_t j0;
memset(A.data().begin(), 0, m*n*sizeof(double)); 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; k = k0;
j0 = j+1<m?j+1:m; 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]; A(i,j) = a[k];
} }
} }
@ -952,13 +949,13 @@ Matrix RtR(const Matrix &A)
/* ************************************************************************* */ /* ************************************************************************* */
Vector solve_ldl(const Matrix& M, const Vector& rhs) { 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 // count the nonzero entries above diagonal
double thresh = 1e-9; double thresh = 1e-9;
unsigned int nrANZ = 0; // # of nonzeros on diagonal and upper triangular part of A int nrANZ = 0; // # of nonzeros on diagonal and upper triangular part of A
for (size_t i=0; i<N; ++i) // rows for (int i=0; i<N; ++i) // rows
for (size_t j=i; j<N; ++j) // columns for (int j=i; j<N; ++j) // columns
if (fabs(M(i,j)) > thresh) if (fabs(M(i,j)) > thresh)
++nrANZ; ++nrANZ;
@ -972,10 +969,10 @@ Vector solve_ldl(const Matrix& M, const Vector& rhs) {
Ap[N] = nrANZ; Ap[N] = nrANZ;
// copy in the full A matrix to compressed column form // copy in the full A matrix to compressed column form
size_t t = 0; // count the elements added int t = 0; // count the elements added
for (size_t j=0; j<N; ++j) { // columns for (int j=0; j<N; ++j) { // columns
Ap[j] = t; // add to the column indices 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); const double& m = M(i,j);
if (fabs(m) > thresh) { if (fabs(m) > thresh) {
Ai[t] = i; Ai[t] = i;
@ -985,7 +982,7 @@ Vector solve_ldl(const Matrix& M, const Vector& rhs) {
} }
// copy in RHS // copy in RHS
for (size_t i = 0; i < N; ++i) for (int i = 0; i < N; ++i)
b[i] = rhs(i); b[i] = rhs(i);
// workspace variables // workspace variables
@ -1000,13 +997,13 @@ Vector solve_ldl(const Matrix& M, const Vector& rhs) {
// factorize A into LDL' (P and Pinv not used) // factorize A into LDL' (P and Pinv not used)
LDL_symbolic (N, Ap, Ai, Lp, Parent, Lnz, Flag, NULL, NULL); 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 // after getting size of L, initialize storage arrays
double * Lx = new double[nrLNZ]; double * Lx = new double[nrLNZ];
int * Li = new int [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); Flag, NULL, NULL);
if (d == N) { 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); 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; A_k = A_k*A/k;
E = E + 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 * 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 * 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 A matrix to exponentiate
* @param K number of iterations * @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 // macro for unit tests
#define EQUALITY(expected,actual)\ #define EQUALITY(expected,actual)\

View File

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

View File

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

View File

@ -13,7 +13,6 @@ using namespace boost::assign;
#include <CppUnitLite/TestHarness.h> #include <CppUnitLite/TestHarness.h>
#include "DSFVector.h" #include "DSFVector.h"
#include "Key.h"
using namespace std; using namespace std;
using namespace gtsam; 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_PREREQ(2.59)
AC_INIT(gtsam, 0.0.0, dellaert@cc.gatech.edu) AC_INIT(gtsam, 0.0.0, dellaert@cc.gatech.edu)
AM_INIT_AUTOMAKE(gtsam, 0.0.0) 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_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([cpp/cal3_S2.cpp]) AC_CONFIG_HEADER([config.h])
AC_CONFIG_HEADER([cpp/config.h]) AC_CONFIG_SRCDIR([CppUnitLite/Test.cpp])
AC_CONFIG_SRCDIR([wrap/wrap.cpp]) AC_CONFIG_SRCDIR([colamd/colamd.c])
AC_CONFIG_SRCDIR([ldl/ldl.cpp])
AC_CONFIG_SRCDIR([spqr_mini/spqr_front.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 # Check for OS
AC_CANONICAL_HOST # needs to be called at some point earlier 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]) ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-blas]) ;;
esac],[blas=false]) 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_MACOS], [test x$blas = xtrue && test x$ISMAC = xtrue])
AM_CONDITIONAL([USE_BLAS_LINUX], [test x$blas = xtrue && test x$ISMAC = xfalse]) 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]) ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-lapack]) ;;
esac],[lapack=false]) 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_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_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], AC_ARG_ENABLE([spqr],
[ --enable-spqr Enable SparseQR library support], [ --enable-spqr Enable SparseQR library support],
[case "${enableval}" in [case "${enableval}" in

View File

@ -16,21 +16,17 @@
#include <stdexcept> #include <stdexcept>
#include <functional> #include <functional>
extern "C" {
#include <colamd/colamd.h>
#include <colamd/ccolamd.h>
}
#include <boost/foreach.hpp> #include <boost/foreach.hpp>
#include <boost/tuple/tuple.hpp> #include <boost/tuple/tuple.hpp>
#include <boost/format.hpp> #include <boost/format.hpp>
#include <boost/graph/prim_minimum_spanning_tree.hpp> #include <boost/graph/prim_minimum_spanning_tree.hpp>
#include <colamd/colamd.h> #include "ccolamd.h"
#include "Ordering.h" #include "Ordering.h"
#include "FactorGraph.h" #include "FactorGraph.h"
#include "graph-inl.h" #include "graph-inl.h"
#include "DSF.h" #include "DSF.h"
#define INSTANTIATE_FACTOR_GRAPH(F) \ #define INSTANTIATE_FACTOR_GRAPH(F) \
template class FactorGraph<F>; \ template class FactorGraph<F>; \
/*template boost::shared_ptr<F> removeAndCombineFactors(FactorGraph<F>&, const std::string&);*/ \ /*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) { Ordering& ordering, const set<Symbol>& lastKeys) {
// Convert to compressed column major format colamd wants it in (== MATLAB format!) // 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 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 * 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 */ 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; int count = 0;
typedef typename map<Key, vector<int> >::const_iterator iterator; typedef typename map<Key, vector<int> >::const_iterator iterator;
bool front_exists = false; bool front_exists = false;
vector<Key> initialOrder;
for(iterator it = columns.begin(); it != columns.end(); it++) { for(iterator it = columns.begin(); it != columns.end(); it++) {
const Key& key = it->first; const Key& key = it->first;
const vector<int>& column = it->second; 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) */ 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 ************************************************* // call colamd, result will be in p *************************************************
/* TODO: returns (1) if successful, (0) otherwise*/ /* TODO: returns (1) if successful, (0) otherwise*/

View File

@ -279,6 +279,7 @@ namespace gtsam {
} }
/*
template<class Conditional, class Config> template<class Conditional, class Config>
void ISAM2<Conditional, Config>::linear_update(const FactorGraph<GaussianFactor>& newFactors) { void ISAM2<Conditional, Config>::linear_update(const FactorGraph<GaussianFactor>& newFactors) {
@ -329,8 +330,8 @@ namespace gtsam {
} }
// Output: BayesTree(this) // Output: BayesTree(this)
} }
*/
template<class Conditional, class Config> template<class Conditional, class Config>
void ISAM2<Conditional, Config>::fluid_relinearization(double relinearize_threshold) { 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 headers =
includedir = ${prefix}/include/gtsam sources =
libdir = ${exec_prefix}/lib check_PROGRAMS =
# library version #----------------------------------------------------------------------------------------------------
current = 0 # The most recent interface number that this library implements. # base
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: # GTSAM core
# Here are a set of rules to help you update your library version information: headers += Factor.h Conditional.h Ordering.h IndexTable.h
# Start with version information of 0:0:0 for each libtool library. sources += Ordering.cpp
# - Update the version information only immediately before a public check_PROGRAMS += testOrdering
# 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
# Symbolic Inference # Symbolic Inference
headers += SymbolicConditional.h headers += SymbolicConditional.h
sources += SymbolicFactor.cpp SymbolicFactorGraph.cpp SymbolicBayesNet.cpp sources += SymbolicFactor.cpp SymbolicFactorGraph.cpp SymbolicBayesNet.cpp
check_PROGRAMS += testSymbolicFactor testSymbolicFactorGraph testSymbolicBayesNet 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 # Inference
headers += inference.h inference-inl.h headers += inference.h inference-inl.h
@ -73,231 +28,91 @@ headers += JunctionTree.h JunctionTree-inl.h
headers += BayesNet.h BayesNet-inl.h headers += BayesNet.h BayesNet-inl.h
headers += BayesTree.h BayesTree-inl.h headers += BayesTree.h BayesTree-inl.h
headers += ISAM.h ISAM-inl.h GaussianISAM.h headers += ISAM.h ISAM-inl.h GaussianISAM.h
headers += ISAM2.h ISAM2-inl.h GaussianISAM2.h headers += ISAM2.h ISAM2-inl.h
sources += GaussianISAM.cpp GaussianISAM2.cpp sources += GaussianISAM.cpp
check_PROGRAMS += testGraph testFactorGraph testJunctionTree testInference testOrdering check_PROGRAMS += testFactorGraph testJunctionTree testOrdering
check_PROGRAMS += testBayesTree testISAM testGaussianISAM testGaussianISAM2 check_PROGRAMS += testBayesTree testISAM
testGraph_SOURCES = testGraph.cpp
testGraph_LDADD = libgtsam.la #----------------------------------------------------------------------------------------------------
testFactorGraph_SOURCES = testFactorgraph.cpp # discrete
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
# Binary Inference # Binary Inference
headers += BinaryConditional.h headers += BinaryConditional.h
check_PROGRAMS += testBinaryBayesNet check_PROGRAMS += testBinaryBayesNet
testBinaryBayesNet_SOURCES = testBinaryBayesNet.cpp
testBinaryBayesNet_LDADD = libgtsam.la #----------------------------------------------------------------------------------------------------
# linear
#----------------------------------------------------------------------------------------------------
# Gaussian inference # Gaussian inference
headers += GaussianFactorSet.h SharedGaussian.h SharedDiagonal.h VectorConfig.h Factorization.h headers += GaussianFactorSet.h SharedGaussian.h SharedDiagonal.h VectorConfig.h Factorization.h
sources += NoiseModel.cpp Errors.cpp VectorMap.cpp VectorBTree.cpp GaussianFactor.cpp sources += NoiseModel.cpp Errors.cpp VectorMap.cpp VectorBTree.cpp GaussianFactor.cpp
sources += GaussianFactorGraph.cpp GaussianConditional.cpp GaussianBayesNet.cpp sources += GaussianFactorGraph.cpp GaussianConditional.cpp GaussianBayesNet.cpp
check_PROGRAMS += testVectorMap testVectorBTree testGaussianFactor testGaussianFactorGraph check_PROGRAMS += testVectorMap testVectorBTree testGaussianFactor
check_PROGRAMS += testGaussianConditional testGaussianBayesNet testNoiseModel testErrors check_PROGRAMS += testGaussianConditional 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
# Iterative Methods # Iterative Methods
headers += iterative-inl.h SubgraphSolver.h SubgraphSolver-inl.h headers += iterative-inl.h SubgraphSolver.h SubgraphSolver-inl.h
sources += iterative.cpp BayesNetPreconditioner.cpp SubgraphPreconditioner.cpp sources += iterative.cpp BayesNetPreconditioner.cpp SubgraphPreconditioner.cpp
check_PROGRAMS += testIterative testBayesNetPreconditioner testSubgraphPreconditioner check_PROGRAMS += testBayesNetPreconditioner
testIterative_SOURCES = testIterative.cpp
testIterative_LDADD = libgtsam.la # Timing tests
testBayesNetPreconditioner_SOURCES = testBayesNetPreconditioner.cpp noinst_PROGRAMS = timeGaussianFactor timeSymbolMaps timeVectorConfig
testBayesNetPreconditioner_LDADD = libgtsam.la
testSubgraphPreconditioner_SOURCES = testSubgraphPreconditioner.cpp #----------------------------------------------------------------------------------------------------
testSubgraphPreconditioner_LDADD = libgtsam.la # nonlinear
#----------------------------------------------------------------------------------------------------
# Lie Groups
headers += LieConfig.h LieConfig-inl.h TupleConfig.h TupleConfig-inl.h
check_PROGRAMS += testLieConfig
# Nonlinear inference # Nonlinear inference
headers += Key.h SymbolMap.h NonlinearFactorGraph.h NonlinearFactorGraph-inl.h headers += Key.h SymbolMap.h NonlinearFactorGraph.h NonlinearFactorGraph-inl.h
headers += NonlinearOptimizer.h NonlinearOptimizer-inl.h headers += NonlinearOptimizer.h NonlinearOptimizer-inl.h
headers += NonlinearFactor.h headers += NonlinearFactor.h
check_PROGRAMS += testNonlinearFactor testNonlinearFactorGraph testNonlinearOptimizer testKey check_PROGRAMS += 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
# Nonlinear constraints # Nonlinear constraints
headers += NonlinearConstraint.h NonlinearConstraint-inl.h headers += NonlinearConstraint.h NonlinearConstraint-inl.h
headers += NonlinearEquality.h headers += NonlinearEquality.h
check_PROGRAMS += testNonlinearConstraint testNonlinearEquality check_PROGRAMS += testNonlinearConstraint
testNonlinearConstraint_SOURCES = testNonlinearConstraint.cpp
testNonlinearConstraint_LDADD = libgtsam.la
testNonlinearEquality_SOURCES = testNonlinearEquality.cpp
testNonlinearEquality_LDADD = libgtsam.la
# SQP # SQP
headers += ConstraintOptimizer.h
sources += ConstraintOptimizer.cpp sources += ConstraintOptimizer.cpp
check_PROGRAMS += testSQP testConstraintOptimizer check_PROGRAMS += 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
#----------------------------------------------------------------------------------------------------
# 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) 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 # rules to build local programs
timeRot3_SOURCES = timeRot3.cpp #----------------------------------------------------------------------------------------------------
timeRot3_LDADD = libgtsam.la TESTS = $(check_PROGRAMS)
timeGaussianFactor_SOURCES = timeGaussianFactor.cpp AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization)
timeGaussianFactor_LDADD = libgtsam.la LDADD = libcpp.la ../base/libbase.la
timeGaussianFactorGraph_SOURCES = timeGaussianFactorGraph.cpp LDADD += ../CppUnitLite/libCppUnitLite.a ../colamd/libcolamd.la ../ldl/libldl.la
timeGaussianFactorGraph_LDADD = libgtsam.la AM_DEFAULT_SOURCE_EXT = .cpp
timeMatrix_SOURCES = timeMatrix.cpp
timeMatrix_LDADD = libgtsam.la
timeSymbolMaps_SOURCES = timeSymbolMaps.cpp
timeSymbolMaps_LDADD = libgtsam.la
timeVectorConfig_SOURCES = timeVectorConfig.cpp
timeVectorConfig_LDADD = libgtsam.la
# create both dynamic and static libraries # rule to run an executable
AM_CXXFLAGS = -I$(boost) -fPIC %.run: % $(LDADD)
AM_LDFLAGS = ./$^
lib_LTLIBRARIES = libgtsam.la
libgtsam_la_SOURCES = $(sources) #----------------------------------------------------------------------------------------------------
libgtsam_la_CPPFLAGS = $(AM_CXXFLAGS) # OLD, need to figure where these go!
libgtsam_la_LDFLAGS = -version-info $(version) -L../colamd -lcolamd -L../ldl -lldl #----------------------------------------------------------------------------------------------------
AM_CXXFLAGS =
# enable debug if --enable-debug is set in configure # enable debug if --enable-debug is set in configure
if DEBUG if DEBUG
@ -306,56 +121,11 @@ endif
if USE_PROFILING if USE_PROFILING
AM_CXXFLAGS += -pg AM_CXXFLAGS += -pg
libgtsam_la_CPPFLAGS += -pg
AM_LDFLAGS += -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 endif
if USE_LAPACK if USE_LAPACK
AM_LDFLAGS += -L../spqr_mini -lspqr_mini
libgtsam_la_LDFLAGS += -L../spqr_mini -lspqr_mini
AM_CXXFLAGS += -DGT_USE_LAPACK AM_CXXFLAGS += -DGT_USE_LAPACK
LDADD += ../spqr_mini/libspqr_mini.la
endif 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 <fstream>
#include <boost/format.hpp> #include <boost/format.hpp>
#include <boost/foreach.hpp> #include <boost/foreach.hpp>
#include "Point2.h"
#include "Ordering.h" #include "Ordering.h"
#include "SymbolicFactorGraph.h" #include "SymbolicFactorGraph.h"
#include "SymbolicBayesNet.h" #include "SymbolicBayesNet.h"
@ -20,8 +19,6 @@ using namespace std;
namespace gtsam { namespace gtsam {
INSTANTIATE_LIE_CONFIG(Symbol, Point2)
// Explicitly instantiate so we don't have to include everywhere // Explicitly instantiate so we don't have to include everywhere
template class FactorGraph<SymbolicFactor>; template class FactorGraph<SymbolicFactor>;
@ -52,39 +49,5 @@ namespace gtsam {
return eliminate(ordering); 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 * Author: Frank Dellaert
*/ */
#ifndef SYMBOLICFACTORGRAPH_H_ #pragma once
#define SYMBOLICFACTORGRAPH_H_
#include <string> #include <string>
#include <list> #include <list>
@ -18,10 +17,6 @@
namespace gtsam { namespace gtsam {
class Point2;
typedef LieConfig<Symbol, Point2> SymbolicConfig;
class SymbolicConditional; class SymbolicConditional;
/** Symbolic Factor Graph */ /** Symbolic Factor Graph */
@ -87,8 +82,4 @@ namespace gtsam {
SymbolicBayesNet eliminateFrontals(const Ordering& ordering); SymbolicBayesNet eliminateFrontals(const Ordering& ordering);
}; };
// save graph to the graphviz format } // namespace gtsam
void saveGraph(const SymbolicFactorGraph& fg, const SymbolicConfig& config, const std::string& s);
}
#endif /* SYMBOLICFACTORGRAPH_H_ */

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 #pragma once
#include <stdexcept>
#include <boost/foreach.hpp> #include <boost/foreach.hpp>
#include <boost/graph/breadth_first_search.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 #define GTSAM_MAGIC_KEY
#include "Ordering.h" #include "Ordering.h"
#include "smallExample.h"
#include "BayesNetPreconditioner.h" #include "BayesNetPreconditioner.h"
#include "iterative-inl.h" #include "iterative-inl.h"
using namespace std; using namespace std;
using namespace gtsam; using namespace gtsam;
using namespace example;
/* ************************************************************************* */ /* ************************************************************************* */
TEST( BayesNetPreconditioner, operators ) TEST( BayesNetPreconditioner, operators )
@ -62,68 +60,6 @@ TEST( BayesNetPreconditioner, operators )
CHECK(assert_equal(expected2,actual2)); 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() { int main() {
TestResult tr; TestResult tr;

View File

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

View File

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

View File

@ -14,7 +14,6 @@
#include <Ordering.h> #include <Ordering.h>
#include <ConstraintOptimizer.h> #include <ConstraintOptimizer.h>
#include <smallExample.h>
#define GTSAM_MAGIC_KEY #define GTSAM_MAGIC_KEY
@ -23,7 +22,6 @@ using namespace boost::assign;
using namespace std; using namespace std;
using namespace gtsam; using namespace gtsam;
using namespace example;
/* ************************************************************************* */ /* ************************************************************************* */
// Example of a single Constrained QP problem from the matlab testCQP.m file. // 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); 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); } int main() { TestResult tr; return TestRegistry::runAllTests(tr); }
/* ************************************************************************* */ /* ************************************************************************* */

View File

@ -21,11 +21,9 @@ using namespace boost::assign;
#include "Ordering.h" #include "Ordering.h"
#include "GaussianConditional.h" #include "GaussianConditional.h"
#include "inference-inl.h" #include "inference-inl.h"
#include "smallExample.h"
using namespace std; using namespace std;
using namespace gtsam; using namespace gtsam;
using namespace example;
using namespace boost; using namespace boost;
static SharedDiagonal static SharedDiagonal
@ -33,22 +31,6 @@ static SharedDiagonal
constraintModel = noiseModel::Constrained::All(2); 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) TEST( GaussianFactor, constructor)
{ {
Vector b = Vector_(3, 1., 2., 3.); Vector b = Vector_(3, 1., 2., 3.);
@ -92,101 +74,6 @@ TEST( GaussianFactor, operators )
CHECK(assert_equal(expectedX2,x)); 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){ TEST( NonlinearFactorGraph, combine2){
double sigma1 = 0.0957; double sigma1 = 0.0957;
@ -304,65 +191,6 @@ TEST( GaussianFactor, linearFactorN){
CHECK(assert_equal(expected,combinedFactor)); 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 ) TEST( GaussianFactor, eliminate2 )
{ {
@ -470,96 +298,6 @@ TEST( GaussianFactor, empty )
CHECK(f.empty()==true); 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 // small aux. function to print out lists of anything
template<class T> template<class T>
@ -568,80 +306,6 @@ void print(const list<T>& i) {
cout << endl; 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 ) TEST( GaussianFactor, tally_separator )
{ {

View File

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

View File

@ -16,12 +16,10 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY #define GTSAM_MAGIC_KEY
#include "smallExample.h"
#include "JunctionTree-inl.h" #include "JunctionTree-inl.h"
using namespace std; using namespace std;
using namespace gtsam; using namespace gtsam;
using namespace example;
/* ************************************************************************* */ /* ************************************************************************* */
/** /**
@ -57,44 +55,6 @@ TEST( GaussianFactorGraph, constructor )
LONGS_EQUAL(2, junctionTree.root()->children()[0]->size()); 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 * x1 - x2 - x3 - x4
@ -139,25 +99,6 @@ TEST( GaussianFactorGraph, eliminate )
CHECK(assert_equal(bayesTree_expected, bayesTree)); 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);} int main() { TestResult tr; return TestRegistry::runAllTests(tr);}
/* ************************************************************************* */ /* ************************************************************************* */

View File

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

View File

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

View File

@ -13,13 +13,11 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY #define GTSAM_MAGIC_KEY
#include "Ordering.h" #include "Ordering.h"
#include "smallExample.h"
#include "SymbolicBayesNet.h" #include "SymbolicBayesNet.h"
#include "SymbolicFactorGraph.h" #include "SymbolicFactorGraph.h"
using namespace std; using namespace std;
using namespace gtsam; using namespace gtsam;
using namespace example;
Symbol _B_('B', 0), _L_('L', 0); Symbol _B_('B', 0), _L_('L', 0);
SymbolicConditional::shared_ptr SymbolicConditional::shared_ptr
@ -39,31 +37,6 @@ TEST( SymbolicBayesNet, equals )
CHECK(!f1.equals(f2)); 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 ) TEST( SymbolicBayesNet, pop_front )
{ {

View File

@ -12,130 +12,15 @@ using namespace boost::assign;
#define GTSAM_MAGIC_KEY #define GTSAM_MAGIC_KEY
#include "Ordering.h" #include "Ordering.h"
#include "smallExample.h"
#include "SymbolicFactorGraph.h" #include "SymbolicFactorGraph.h"
#include "SymbolicBayesNet.h" #include "SymbolicBayesNet.h"
#include "FactorGraph-inl.h" #include "FactorGraph-inl.h"
using namespace std; using namespace std;
using namespace gtsam; using namespace gtsam;
using namespace example;
/* ************************************************************************* */ /* ************************************************************************* */
TEST( SymbolicFactorGraph, symbolicFactorGraph ) TEST( SymbolicFactorGraph, eliminate2 )
{
// 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 )
{ {
// create a test graph // create a test graph
SymbolicFactorGraph fg; 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 <iostream>
#include "Pose3.h" #include "Pose3.h"
#include "Lie-inl.h" #include "Lie-inl.h"
#include "LieConfig.h"
using namespace std; using namespace std;
using namespace boost::numeric::ublas; using namespace boost::numeric::ublas;

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