Skip to content

Tags: whuang08/ROPTLIB

Tags

0.8

Toggle 0.8's commit message
This version has been tested on Matlab, Julia and C++. (Its python

interface has not been tested.)
The major update is about the container classes.

*) The container classes are updated significantly. The classes
"SharedSpace",  "ProductElement", "LinearOPE" have been deleted. The
classes of tangent vector and point on each manifold, e.g.,
StieVariable, StieVector, are also removed. Their functionalities are
merged to "Element". Beside, some commonly-used functions in BLAS and
LAPACK are wrapped in Element class, such as matrix multiplications, QR,
SVD factorization. See the user manual 2020-08-11 for details.

*) Numerical gradient and numerical action of Hessian are added. In C++,
one can use them by setting NumGradHess=true. In Matlab or Julia
interface, one only needs to set the input arguments of functions to be
empty to use numerical gradient and numerical action of Hessian. By
numerical operations, users can quickly test their problems by only
providing cost functions. But the efficiency is low. It is still
recommended to provide gradient and action of Hessian.

*) The current version of ROPTLIB also support single precision float
operations. One can choose the precision by comment/uncomment the 13th
line in Others/def.h. Note that the float point numbers are defined to
be realdp in ROPTLIB. realdp is defined to be "float" or "double" based
on your option in 13th line in Other/def.h

*) Update Julia interface such that it works with the Julia version
1.3.1. Note that julia interface of ROPTLIB needs package Cxx in Julia
and Cxx does not work with the latest version 1.5.0. We updated and
tested julia interface with Julia-1.3.1.

*) dlabad and slabad are removed from the wrapper since they are
deprecated. If users want to use the two functions, then uncomment the
commands in lapack/dlabad.h and lapack/slabad.h and build BLAS and
LAPACK with the option "BUILD_DEPRECATED=Yes" in make.inc.

*) Most input and ouput arguments are modified from pointers to
references. By doing this, the safety of the codes increases in the
sense that it is unlikely to cause memory leakages and no efficiency is
lost.

*) The framework of the classes of solvers are modified slightly. See
the structure in Figure 4 in the user manual 2020-08-11.

*) The test function is provided in test/DriverCpp.cpp. It tests all the
algorithms for all the problems that have been defined in ROPTLIB.

*) The classes of manifolds are modified. The complex Stiefel manifold
is added. Quotient manifolds representation for manifolds of real fixed
rank symmetric/nonsymmetric matrix are given. Different metrics are
provided. Its corresponding complex manifold is also given.

*) The Eucldean action of Hessian to Riemannian action of Hessian is
added in the manifold of symmetric positive definite matrix for the
affine invariance metric.

*) Note that Matlab 2018 or later versions support interleaved complex
number. This format is consistant with BLAS and LAPACK and therefore is
used in this versioon of ROPTLIB.

0.7

Toggle 0.7's commit message
Retraction

*) Add a retraction based on polar decomposition for Stiefel manifold.
Its differentiated retraction is also added when the two inputs tangent
vectors are along the same direction.