From 0398239cd1b4f40996293431307f9fa9e8877f34 Mon Sep 17 00:00:00 2001
From: nksallem <nksallem@laas.fr>
Date: Fri, 5 Nov 2010 11:46:13 +0100
Subject: [PATCH] [wip/liblbfgs] Add liblbfgs an implementation of L-BFGS
 optimization method

---
 Makefile           |  1 +
 liblbfgs/DESCR     | 16 ++++++++++++++++
 liblbfgs/Makefile  | 35 +++++++++++++++++++++++++++++++++++
 liblbfgs/PLIST     |  9 +++++++++
 liblbfgs/depend.mk | 26 ++++++++++++++++++++++++++
 liblbfgs/distinfo  |  3 +++
 6 files changed, 90 insertions(+)
 create mode 100644 liblbfgs/DESCR
 create mode 100644 liblbfgs/Makefile
 create mode 100644 liblbfgs/PLIST
 create mode 100644 liblbfgs/depend.mk
 create mode 100644 liblbfgs/distinfo

diff --git a/Makefile b/Makefile
index 1f100c0a..bf2161a5 100644
--- a/Makefile
+++ b/Makefile
@@ -17,5 +17,6 @@ SUBDIR+=	sot-gui
 SUBDIR+=	spark-genom
 SUBDIR+=	stackoftasks
 SUBDIR+=	visp
+SUBDIR+=  liblbfgs
 
 include ../mk/robotpkg.subdir.mk
diff --git a/liblbfgs/DESCR b/liblbfgs/DESCR
new file mode 100644
index 00000000..04ef9696
--- /dev/null
+++ b/liblbfgs/DESCR
@@ -0,0 +1,16 @@
+This library is a C port of the implementation of Limited-memory 
+Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) method written by Jorge Nocedal. The 
+original FORTRAN source code is available at: 
+http://www.ece.northwestern.edu/~nocedal/lbfgs.html
+The L-BFGS method solves the unconstrainted minimization problem,
+
+    minimize F(x), x = (x1, x2, ..., xN),
+
+only if the objective function F(x) and its gradient G(x) are computable. The 
+well-known Newton's method requires computation of the inverse of the hessian 
+matrix of the objective function. However, the computational cost for the inverse 
+hessian matrix is expensive especially when the objective function takes a large 
+number of variables. The L-BFGS method iteratively finds a minimizer by 
+approximating the inverse hessian matrix by information from last m iterations. 
+This innovation saves the memory storage and computational time drastically for 
+large-scaled problems.
\ No newline at end of file
diff --git a/liblbfgs/Makefile b/liblbfgs/Makefile
new file mode 100644
index 00000000..603d4f5c
--- /dev/null
+++ b/liblbfgs/Makefile
@@ -0,0 +1,35 @@
+# $LAAS: Makefile 2010/03/22 16:02:45 nksallem $
+#
+# Copyright (c) 2007-2010 LAAS/CNRS
+# All rights reserved.
+#
+# Redistribution and use  in source  and binary  forms,  with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#   1. Redistributions of  source  code must retain the  above copyright
+#      notice and this list of conditions.
+#   2. Redistributions in binary form must reproduce the above copyright
+#      notice and  this list of  conditions in the  documentation and/or
+#      other materials provided with the distribution.
+#
+#                                      	 Nizar Sallem on Tue Aug 24 2010
+#
+
+DISTNAME=			liblbfgs-1.9
+PKGNAME=			liblbfgs
+EXTRACT_SUFX= .tar.gz
+CATEGORIES=		math
+MASTER_SITES=	http://www.chokkan.org/software/dist/
+
+MAINTAINER=		openrobots@laas.fr
+HOMEPAGE=			http://www.chokkan.org/software/liblbfgs/
+COMMENT=			Limited-memory Broyden-Fletcher-Goldfarb-Shanno C port
+LICENSE=			mit
+
+USE_LANGUAGES+=		c c++
+
+GNU_CONFIGURE = yes
+
+include ../../pkgtools/libtool/depend.mk
+include ../../mk/robotpkg.mk
diff --git a/liblbfgs/PLIST b/liblbfgs/PLIST
new file mode 100644
index 00000000..88d15fdd
--- /dev/null
+++ b/liblbfgs/PLIST
@@ -0,0 +1,9 @@
+@comment Fri Nov 5 11:36:07 CET 2010
+include/lbfgs.h
+lib/${PKGNAME}.la
+share/doc/${PKGNAME}/AUTHORS
+share/doc/${PKGNAME}/COPYING
+share/doc/${PKGNAME}/ChangeLog
+share/doc/${PKGNAME}/INSTALL
+share/doc/${PKGNAME}/NEWS
+share/doc/${PKGNAME}/README
diff --git a/liblbfgs/depend.mk b/liblbfgs/depend.mk
new file mode 100644
index 00000000..3a61cab6
--- /dev/null
+++ b/liblbfgs/depend.mk
@@ -0,0 +1,26 @@
+# robotpkg depend.mk for:	wip/liblbfgs
+# Created:			Anthony Mallet on Fri, 14 Mar 2008
+#
+
+DEPEND_DEPTH:=		${DEPEND_DEPTH}+
+LIBLBFGS_DEPEND_MK:=	${LIBLBFGS_DEPEND_MK}+
+
+ifeq (+,$(DEPEND_DEPTH))
+DEPEND_PKG+=		liblbfgs
+endif
+
+ifeq (+,$(LIBLBFGS_DEPEND_MK)) # ---------------------------------------------
+
+PREFER.liblbfgs?=		robotpkg
+
+DEPEND_USE+=		liblbfgs
+DEPEND_ABI.liblbfgs?=	liblbfgs>=1.9
+DEPEND_DIR.liblbfgs?=	../../wip/liblbfgs
+
+SYSTEM_SEARCH.liblbfgs=\
+	include/lbfgs.h		\
+	lib/liblbfgs.la
+
+endif # LIBLBFGS_DEPEND_MK ---------------------------------------------------
+
+DEPEND_DEPTH:=		${DEPEND_DEPTH:+=}
diff --git a/liblbfgs/distinfo b/liblbfgs/distinfo
new file mode 100644
index 00000000..b8886e6a
--- /dev/null
+++ b/liblbfgs/distinfo
@@ -0,0 +1,3 @@
+SHA1 (liblbfgs-1.9.tar.gz) = 9bd56c8b61a838badeb945399fbefbeb9b48b1db
+RMD160 (liblbfgs-1.9.tar.gz) = 3d712334815daf10a1383ae7522013711284e283
+Size (liblbfgs-1.9.tar.gz) = 318447 bytes
-- 
GitLab