Preparation for 1.4 release.

git-svn-id: file:///home/svnrepos/software/liblbfgs/trunk@4 ecf4c44f-38d1-4fa4-9757-a0b4dd0349fc
This commit is contained in:
naoaki 2008-04-25 07:54:10 +00:00
parent 8bad5e136a
commit 59d3e21ef6
6 changed files with 67 additions and 44 deletions

View File

@ -1,32 +1,10 @@
# $Id$ # $Id$
SUBDIRS = lib sample
docdir = $(prefix)/share/doc/@PACKAGE@ docdir = $(prefix)/share/doc/@PACKAGE@
doc_DATA = README INSTALL COPYING AUTHORS ChangeLog doc_DATA = README INSTALL COPYING AUTHORS ChangeLog
liblbfgsincludedir = $(includedir)
liblbfgsinclude_HEADERS = \
include/lbfgs.h
EXTRA_DIST = \ EXTRA_DIST = \
autogen.sh autogen.sh \
lbfgs.sln
lib_LTLIBRARIES = liblbfgs.la
noinst_PROGRAMS = lbfgssample
liblbfgs_la_SOURCES = \
lib/arithmetic_ansi.h \
lib/arithmetic_sse_double.h \
lib/arithmetic_sse_float.h \
lib/lbfgs.c
liblbfgs_la_LDFLAGS = \
-no-undefined \
-release @VERSION@
lbfgssample_SOURCES = \
sample/sample.c
lbfgssample_LDADD = ./liblbfgs.la
AM_CFLAGS = @CFLAGS@
INCLUDES = @INCLUDES@

View File

@ -102,5 +102,5 @@ AC_SUBST(INCLUDES)
dnl ------------------------------------------------------------------ dnl ------------------------------------------------------------------
dnl Output the configure results. dnl Output the configure results.
dnl ------------------------------------------------------------------ dnl ------------------------------------------------------------------
AC_CONFIG_FILES(Makefile) AC_CONFIG_FILES(Makefile lib/Makefile sample/Makefile)
AC_OUTPUT AC_OUTPUT

View File

@ -33,9 +33,6 @@
extern "C" { extern "C" {
#endif/*__cplusplus*/ #endif/*__cplusplus*/
#define USE_SSE 1
#define __SSE2__ 1
/* /*
* The default precision of floating point values is 64bit (double). * The default precision of floating point values is 64bit (double).
*/ */
@ -57,7 +54,7 @@ typedef float lbfgsfloatval_t;
typedef double lbfgsfloatval_t; typedef double lbfgsfloatval_t;
#else #else
#error "liblbfgs supports single (float; LBFGS_FLOAT = 32) or double (double; LBFGS_FLOAT=64) precision only." #error "libLBFGS supports single (float; LBFGS_FLOAT = 32) or double (double; LBFGS_FLOAT=64) precision only."
#endif #endif
@ -341,9 +338,11 @@ In this formula, ||.|| denotes the Euclidean norm.
* @param n The number of variables. * @param n The number of variables.
* @param x The array of variables. A client program can set * @param x The array of variables. A client program can set
* default values for the optimization and receive the * default values for the optimization and receive the
* optimization result through this array. The memory * optimization result through this array. This array
* block of this array must be aligned to 16 for liblbfgs * must be allocated by ::lbfgs_malloc function
* built with SSE/SSE2 optimization routine enabled. * for libLBFGS built with SSE/SSE2 optimization routine
* enabled. The library built without SSE/SSE2
* optimization does not have such a requirement.
* @param ptr_fx The pointer to the variable that receives the final * @param ptr_fx The pointer to the variable that receives the final
* value of the objective function for the variables. * value of the objective function for the variables.
* This argument can be set to \c NULL if the final * This argument can be set to \c NULL if the final
@ -393,10 +392,11 @@ void lbfgs_parameter_init(lbfgs_parameter_t *param);
/** /**
* Allocate an array for variables. * Allocate an array for variables.
* *
* Use this function to allocate a variable array for liblbfgs built with * This function allocates an array of variables for the convenience of
* or without SSE/SSE2 optimization routine enabled. When SSE/SSE2 routine in * ::lbfgs function; the function has a requreiemt for a variable array
* liblbfgs is disabled, it is unnecessary to use this function; liblbfgs * when libLBFGS is built with SSE/SSE2 optimization routines. A user does
* accepts a variable array allocated by any * not have to use this function for libLBFGS built without SSE/SSE2
* optimization.
* *
* @param n The number of variables. * @param n The number of variables.
*/ */
@ -483,7 +483,7 @@ This library is used by:
@section download Download @section download Download
- <a href="http://www.chokkan.org/software/dist/liblbfgs-1.3.tar.gz">Source code</a> - <a href="http://www.chokkan.org/software/dist/libLBFGS-1.4.tar.gz">Source code</a>
libLBFGS is distributed under the term of the libLBFGS is distributed under the term of the
<a href="http://opensource.org/licenses/mit-license.php">MIT license</a>. <a href="http://opensource.org/licenses/mit-license.php">MIT license</a>.
@ -494,11 +494,16 @@ libLBFGS is distributed under the term of the
::lbfgs_parameter_t::linesearch was added to choose either MoreThuente ::lbfgs_parameter_t::linesearch was added to choose either MoreThuente
method (::LBFGS_LINESEARCH_MORETHUENTE) or backtracking algorithm method (::LBFGS_LINESEARCH_MORETHUENTE) or backtracking algorithm
(::LBFGS_LINESEARCH_BACKTRACKING). (::LBFGS_LINESEARCH_BACKTRACKING).
- Fixed a serious bug: the previous version did not compute - Fixed a bug: the previous version did not compute psuedo-gradients
psuedo-gradients properly in the line search routine. This bug might properly in the line search routines for OW-LQN. This bug might quit
quit an iteration process too early when the orthant-wise L-BFGS routine an iteration process too early when the OW-LQN routine was activated
was activated (0 < ::lbfgs_parameter_t::orthantwise_c). (0 < ::lbfgs_parameter_t::orthantwise_c).
- Added configure script. - Configure script for POSIX environments.
- SSE/SSE2 optimizations with GCC.
- New functions ::lbfgs_malloc and ::lbfgs_free to use SSE/SSE2 routines
transparently. It is uncessary to use these functions for libLBFGS built
without SSE/SSE2 routines; you can still use any memory allocators if
SSE/SSE2 routines are disabled in libLBFGS.
- Version 1.3 (2007-12-16): - Version 1.3 (2007-12-16):
- An API change. An argument was added to lbfgs() function to receive the - An API change. An argument was added to lbfgs() function to receive the
final value of the objective function. This argument can be set to final value of the objective function. This argument can be set to

24
lib/Makefile.am Normal file
View File

@ -0,0 +1,24 @@
# $Id$
EXTRA_DIST = \
lib.vcproj
liblbfgsincludedir = $(includedir)
liblbfgsinclude_HEADERS = \
../include/lbfgs.h
lib_LTLIBRARIES = liblbfgs.la
liblbfgs_la_SOURCES = \
arithmetic_ansi.h \
arithmetic_sse_double.h \
arithmetic_sse_float.h \
../include/lbfgs.h \
lbfgs.c
liblbfgs_la_LDFLAGS = \
-no-undefined \
-release @VERSION@
AM_CFLAGS = @CFLAGS@
INCLUDES = @INCLUDES@

View File

@ -169,6 +169,7 @@ static int update_trial_interval(
int *brackt int *brackt
); );
#if defined(USE_SSE) && (defined(__SSE__) || defined(__SSE2__))
static int round_out_variables(int n) static int round_out_variables(int n)
{ {
n += 7; n += 7;
@ -176,6 +177,7 @@ static int round_out_variables(int n)
n *= 8; n *= 8;
return n; return n;
} }
#endif/*defined(USE_SSE)*/
lbfgsfloatval_t* lbfgs_malloc(int n) lbfgsfloatval_t* lbfgs_malloc(int n)
{ {

14
sample/Makefile.am Normal file
View File

@ -0,0 +1,14 @@
# $Id$
EXTRA_DIST = \
sample.vcproj
noinst_PROGRAMS = sample
sample_SOURCES = \
sample.c
sample_LDADD = ../lib/liblbfgs.la
AM_CFLAGS = @CFLAGS@
INCLUDES = @INCLUDES@