Maniverse 0.3.1__tar.gz → 0.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Maniverse might be problematic. Click here for more details.

Files changed (33) hide show
  1. {maniverse-0.3.1 → maniverse-0.3.3/Maniverse.egg-info}/PKG-INFO +2 -7
  2. {maniverse-0.3.1 → maniverse-0.3.3}/Maniverse.egg-info/SOURCES.txt +14 -1
  3. maniverse-0.3.3/Maniverse.egg-info/top_level.txt +4 -0
  4. {maniverse-0.3.1/Maniverse.egg-info → maniverse-0.3.3}/PKG-INFO +2 -7
  5. {maniverse-0.3.1 → maniverse-0.3.3}/README.md +1 -6
  6. {maniverse-0.3.1 → maniverse-0.3.3}/pyproject.toml +1 -1
  7. {maniverse-0.3.1 → maniverse-0.3.3}/setup.py +24 -24
  8. maniverse-0.3.3/src/Macro.h +19 -0
  9. maniverse-0.3.3/src/Manifold/Grassmann.h +27 -0
  10. maniverse-0.3.3/src/Manifold/Manifold.h +47 -0
  11. maniverse-0.3.3/src/Manifold/Orthogonal.h +23 -0
  12. maniverse-0.3.3/src/Manifold/PyManifoldIn.h +5 -0
  13. maniverse-0.3.3/src/Manifold/PyManifoldOut.h +5 -0
  14. maniverse-0.3.3/src/Manifold/Simplex.h +24 -0
  15. maniverse-0.3.3/src/Manifold/TransRotInvPointCloud.h +23 -0
  16. maniverse-0.3.3/src/Optimizer/HessUpdate.h +21 -0
  17. maniverse-0.3.3/src/Optimizer/PyOptimizerIn.h +3 -0
  18. maniverse-0.3.3/src/Optimizer/PyOptimizerOut.h +3 -0
  19. maniverse-0.3.3/src/Optimizer/SubSolver.h +16 -0
  20. maniverse-0.3.3/src/Optimizer/TrustRegion.h +33 -0
  21. maniverse-0.3.1/Maniverse.egg-info/top_level.txt +0 -1
  22. {maniverse-0.3.1 → maniverse-0.3.3}/LICENSE +0 -0
  23. {maniverse-0.3.1 → maniverse-0.3.3}/Maniverse.egg-info/dependency_links.txt +0 -0
  24. {maniverse-0.3.1 → maniverse-0.3.3}/setup.cfg +0 -0
  25. {maniverse-0.3.1 → maniverse-0.3.3}/src/Manifold/Grassmann.cpp +0 -0
  26. {maniverse-0.3.1 → maniverse-0.3.3}/src/Manifold/Manifold.cpp +0 -0
  27. {maniverse-0.3.1 → maniverse-0.3.3}/src/Manifold/Orthogonal.cpp +0 -0
  28. {maniverse-0.3.1 → maniverse-0.3.3}/src/Manifold/Simplex.cpp +0 -0
  29. {maniverse-0.3.1 → maniverse-0.3.3}/src/Manifold/TransRotInvPointCloud.cpp +0 -0
  30. {maniverse-0.3.1 → maniverse-0.3.3}/src/Optimizer/HessUpdate.cpp +0 -0
  31. {maniverse-0.3.1 → maniverse-0.3.3}/src/Optimizer/SubSolver.cpp +0 -0
  32. {maniverse-0.3.1 → maniverse-0.3.3}/src/Optimizer/TrustRegion.cpp +0 -0
  33. {maniverse-0.3.1 → maniverse-0.3.3}/src/PyManiverse.cpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Maniverse
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Numerical optimization on manifolds
5
5
  Home-page: https://github.com/FreemanTheMaverick/Maniverse.git
6
6
  Author: FreemanTheMaverick
@@ -78,12 +78,7 @@ $ git clone https://github.com/FreemanTheMaverick/Maniverse.git
78
78
  $ python
79
79
  >>> import Maniverse as mv
80
80
  ```
81
- ### Pip (for Python use only)
82
- * Setting environment variables
83
- ```
84
- $ export PYTHON3=[The path where you can find "Python.h".] # You may check this by the command "locate Python.h".
85
- $ export EIGEN3=[The path where you can find "Eigen/", "signature_of_eigen3_matrix_library" and "unsupported/".] # This is optional. If this is not set, the Eigen3 library will be downloaded automatically.
86
- ```
81
+ ### Pip (for Python only)
87
82
  * Installation with `pip`
88
83
  ```
89
84
  pip install Maniverse
@@ -6,12 +6,25 @@ Maniverse.egg-info/PKG-INFO
6
6
  Maniverse.egg-info/SOURCES.txt
7
7
  Maniverse.egg-info/dependency_links.txt
8
8
  Maniverse.egg-info/top_level.txt
9
+ src/Macro.h
9
10
  src/PyManiverse.cpp
10
11
  src/Manifold/Grassmann.cpp
12
+ src/Manifold/Grassmann.h
11
13
  src/Manifold/Manifold.cpp
14
+ src/Manifold/Manifold.h
12
15
  src/Manifold/Orthogonal.cpp
16
+ src/Manifold/Orthogonal.h
17
+ src/Manifold/PyManifoldIn.h
18
+ src/Manifold/PyManifoldOut.h
13
19
  src/Manifold/Simplex.cpp
20
+ src/Manifold/Simplex.h
14
21
  src/Manifold/TransRotInvPointCloud.cpp
22
+ src/Manifold/TransRotInvPointCloud.h
15
23
  src/Optimizer/HessUpdate.cpp
24
+ src/Optimizer/HessUpdate.h
25
+ src/Optimizer/PyOptimizerIn.h
26
+ src/Optimizer/PyOptimizerOut.h
16
27
  src/Optimizer/SubSolver.cpp
17
- src/Optimizer/TrustRegion.cpp
28
+ src/Optimizer/SubSolver.h
29
+ src/Optimizer/TrustRegion.cpp
30
+ src/Optimizer/TrustRegion.h
@@ -0,0 +1,4 @@
1
+ Maniverse
2
+ src
3
+ src/Manifold
4
+ src/Optimizer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Maniverse
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Numerical optimization on manifolds
5
5
  Home-page: https://github.com/FreemanTheMaverick/Maniverse.git
6
6
  Author: FreemanTheMaverick
@@ -78,12 +78,7 @@ $ git clone https://github.com/FreemanTheMaverick/Maniverse.git
78
78
  $ python
79
79
  >>> import Maniverse as mv
80
80
  ```
81
- ### Pip (for Python use only)
82
- * Setting environment variables
83
- ```
84
- $ export PYTHON3=[The path where you can find "Python.h".] # You may check this by the command "locate Python.h".
85
- $ export EIGEN3=[The path where you can find "Eigen/", "signature_of_eigen3_matrix_library" and "unsupported/".] # This is optional. If this is not set, the Eigen3 library will be downloaded automatically.
86
- ```
81
+ ### Pip (for Python only)
87
82
  * Installation with `pip`
88
83
  ```
89
84
  pip install Maniverse
@@ -61,12 +61,7 @@ $ git clone https://github.com/FreemanTheMaverick/Maniverse.git
61
61
  $ python
62
62
  >>> import Maniverse as mv
63
63
  ```
64
- ### Pip (for Python use only)
65
- * Setting environment variables
66
- ```
67
- $ export PYTHON3=[The path where you can find "Python.h".] # You may check this by the command "locate Python.h".
68
- $ export EIGEN3=[The path where you can find "Eigen/", "signature_of_eigen3_matrix_library" and "unsupported/".] # This is optional. If this is not set, the Eigen3 library will be downloaded automatically.
69
- ```
64
+ ### Pip (for Python only)
70
65
  * Installation with `pip`
71
66
  ```
72
67
  pip install Maniverse
@@ -1,3 +1,3 @@
1
1
  [build-system]
2
- requires = ["setuptools", "pybind11", "wget"]
2
+ requires = ["setuptools", "pybind11"]
3
3
  build-backend = "setuptools.build_meta"
@@ -1,33 +1,27 @@
1
1
  import os
2
- import wget
2
+ import urllib.request
3
3
  import tarfile
4
- import subprocess
5
4
  from glob import glob
6
5
  from setuptools import setup, find_packages
7
- from setuptools.command.build import build
6
+ from setuptools.command.build_py import build_py
8
7
  import pybind11
9
8
  from pybind11.setup_helpers import Pybind11Extension, ParallelCompile, naive_recompile
10
9
 
11
- __version__ = "0.3.1"
12
- pwd = os.path.dirname(__file__)
13
-
14
- # Checking dependencies
15
- EIGEN3 = os.getenv("EIGEN3", default = '')
16
- if len(EIGEN3) > 0:
17
- print("Looking for Eigen3 at %s ..." % EIGEN3, end='')
18
- if os.path.exists(EIGEN3 + "/Eigen/") and os.path.exists(EIGEN3 + "/unsupported/") and os.path.isfile(EIGEN3 + "/signature_of_eigen3_matrix_library"):
19
- print("Found!")
20
- else:
21
- raise RuntimeError("Eigen3 does not exist!")
22
- else:
23
- print("The environment variable $EIGEN3 is not set. -> Downloading ...")
24
- filename = wget.download("https://gitlab.com/libeigen/eigen/-/archive/3.4-rc1/eigen-3.4-rc1.tar.gz", bar = None)
25
- with tarfile.open(filename) as tar:
26
- tar.extractall(path = pwd) # Directory: eigen-3.4-rc1
27
- EIGEN3 = pwd + "/eigen-3.4-rc1/"
28
- print("EIGEN3 is %s." % EIGEN3)
10
+ __version__ = "0.3.3"
29
11
 
30
- pwd = os.path.abspath(pwd)
12
+ # Downloading Eigen3
13
+ pwd = os.path.dirname(__file__)
14
+ EIGEN3 = pwd + "/eigen-3.4-rc1/"
15
+ class CustomBuild(build_py):
16
+ def run(self):
17
+ url = "https://gitlab.com/libeigen/eigen/-/archive/3.4-rc1/eigen-3.4-rc1.tar.gz"
18
+ dest = pwd + "/eigen-3.4-rc1.tar.gz"
19
+ print("Downloading Eigen3 from %s to %s ..." % (url, dest))
20
+ urllib.request.urlretrieve(url, dest)
21
+ print("Extracting %s to %s ..." % (dest, EIGEN3))
22
+ with tarfile.open(dest) as tar:
23
+ tar.extractall(path = pwd) # Directory: eigen-3.4-rc1
24
+ super().run()
31
25
 
32
26
  ParallelCompile(
33
27
  "NPY_NUM_BUILD_JOBS",
@@ -35,12 +29,11 @@ ParallelCompile(
35
29
  ).install()
36
30
 
37
31
  MV_CPP = sorted(glob("src/*.cpp") + glob("src/*/*.cpp"))
38
- MV_HEADER = sorted(glob("src/*.h") + glob("src/*/*.h"))
39
32
  ext_modules = [ Pybind11Extension(
40
33
  "Maniverse",
41
34
  MV_CPP,
42
35
  undef_macros = ["DEBUG"],
43
- include_dirs = [EIGEN3, MV_HEADER],
36
+ include_dirs = [EIGEN3],
44
37
  extra_compile_args = ["-O3", "-D__PYTHON__", "-DEIGEN_INITIALIZE_MATRICES_BY_ZERO"],
45
38
  cxx_std = 17,
46
39
  language = "c++"
@@ -54,6 +47,13 @@ setup(
54
47
  long_description = open("README.md").read(),
55
48
  long_description_content_type = "text/markdown",
56
49
  url = "https://github.com/FreemanTheMaverick/Maniverse.git",
50
+ cmdclass = {"build_py": CustomBuild},
57
51
  ext_modules = ext_modules,
52
+ packages = ["src", "src/Manifold", "src/Optimizer"],
53
+ package_data = {
54
+ "src": ["*.h"],
55
+ "src/Manifold": ["*.h"],
56
+ "src/Optimizer": ["*.h"],
57
+ },
58
58
  classifiers = ["Programming Language :: Python :: 3"]
59
59
  )
@@ -0,0 +1,19 @@
1
+ #define EigenArray Eigen::ArrayXd
2
+ #define EigenVector Eigen::VectorXd
3
+ #define EigenDiagonal Eigen::DiagonalMatrix<double, -1, -1>
4
+ #define EigenMatrix Eigen::MatrixXd
5
+ #define EigenZero Eigen::MatrixXd::Zero
6
+ #define EigenOne Eigen::MatrixXd::Identity
7
+
8
+ #define Diag(X) (X).diagonal().asDiagonal()
9
+ #define Dot(X, Y) ( (X).transpose() * (Y) ).trace()
10
+
11
+ #define __Not_Implemented__\
12
+ std::string func_name = __func__;\
13
+ std::string class_name = typeid(*this).name();\
14
+ throw std::runtime_error(func_name + " for " + class_name + " is not implemented!");
15
+
16
+ #define __True_False__(x) ( x ? "True" : "False" )
17
+
18
+ #define __now__ std::chrono::high_resolution_clock::now()
19
+ #define __duration__(start, end) std::chrono::duration<double>(end - start).count()
@@ -0,0 +1,27 @@
1
+ #include "Manifold.h"
2
+
3
+ class Grassmann: public Manifold{ public:
4
+ EigenMatrix Projector;
5
+ mutable std::vector<std::tuple<EigenMatrix, EigenMatrix>> LogCache;
6
+ mutable std::vector<std::tuple<EigenMatrix, EigenMatrix, EigenMatrix>> TransportTangentCache;
7
+
8
+ Grassmann(EigenMatrix p, bool matrix_free);
9
+
10
+ int getDimension() const override;
11
+ double Inner(EigenMatrix X, EigenMatrix Y) const override;
12
+
13
+ EigenMatrix Exponential(EigenMatrix X) const override;
14
+ EigenMatrix Logarithm(Manifold& N) const override;
15
+
16
+ EigenMatrix TangentProjection(EigenMatrix A) const override;
17
+ EigenMatrix TangentPurification(EigenMatrix A) const override;
18
+
19
+ EigenMatrix TransportTangent(EigenMatrix X, EigenMatrix Y) const override;
20
+ EigenMatrix TransportManifold(EigenMatrix X, Manifold& N) const override;
21
+
22
+ void Update(EigenMatrix p, bool purify) override;
23
+ void getGradient() override;
24
+ void getHessian() override;
25
+
26
+ std::unique_ptr<Manifold> Clone() const override;
27
+ };
@@ -0,0 +1,47 @@
1
+ #pragma once
2
+
3
+ #define __Check_Log_Map__\
4
+ if ( typeid(N) != typeid(*this) )\
5
+ throw std::runtime_error("The point to logarithm map is not in " + std::string(typeid(*this).name()) + "but in " + std::string(typeid(N).name()) + "!");
6
+
7
+ #define __Check_Vec_Transport__\
8
+ if ( typeid(N) != typeid(*this) )\
9
+ throw std::runtime_error("The destination of vector transport is not in " + std::string(typeid(*this).name()) + "but in " + std::string(typeid(N).name()) + "!");
10
+
11
+ class Manifold{ public:
12
+ std::string Name;
13
+ EigenMatrix P;
14
+ EigenMatrix Ge;
15
+ EigenMatrix Gr;
16
+ bool MatrixFree;
17
+ EigenMatrix Hem;
18
+ std::vector<std::tuple<double, EigenMatrix>> Hrm;
19
+ std::function<EigenMatrix (EigenMatrix)> He;
20
+ std::function<EigenMatrix (EigenMatrix)> Hr;
21
+ std::vector<EigenMatrix> BasisSet;
22
+
23
+ Manifold(EigenMatrix p, bool matrix_free);
24
+ virtual int getDimension() const;
25
+ virtual double Inner(EigenMatrix X, EigenMatrix Y) const;
26
+ void getBasisSet();
27
+ void getHessianMatrix();
28
+
29
+ virtual EigenMatrix Exponential(EigenMatrix X) const;
30
+ virtual EigenMatrix Logarithm(Manifold& N) const;
31
+
32
+ virtual EigenMatrix TangentProjection(EigenMatrix A) const;
33
+ virtual EigenMatrix TangentPurification(EigenMatrix A) const;
34
+
35
+ virtual EigenMatrix TransportTangent(EigenMatrix X, EigenMatrix Y) const;
36
+ virtual EigenMatrix TransportManifold(EigenMatrix X, Manifold& N) const;
37
+
38
+ virtual void Update(EigenMatrix p, bool purify);
39
+ virtual void getGradient();
40
+ virtual void getHessian();
41
+
42
+ virtual ~Manifold() = default;
43
+ virtual std::unique_ptr<Manifold> Clone() const;
44
+ };
45
+
46
+ std::vector<std::tuple<double, EigenMatrix>> Diagonalize(
47
+ EigenMatrix& A, std::vector<EigenMatrix>& basis_set);
@@ -0,0 +1,23 @@
1
+ #include "Manifold.h"
2
+
3
+ class Orthogonal: public Manifold{ public:
4
+ Orthogonal(EigenMatrix p, bool matrix_free);
5
+
6
+ int getDimension() const override;
7
+ double Inner(EigenMatrix X, EigenMatrix Y) const override;
8
+
9
+ EigenMatrix Exponential(EigenMatrix X) const override;
10
+ EigenMatrix Logarithm(Manifold& N) const override;
11
+
12
+ EigenMatrix TangentProjection(EigenMatrix A) const override;
13
+ EigenMatrix TangentPurification(EigenMatrix A) const override;
14
+
15
+ EigenMatrix TransportTangent(EigenMatrix X, EigenMatrix Y) const override;
16
+ EigenMatrix TransportManifold(EigenMatrix X, Manifold& N) const override;
17
+
18
+ void Update(EigenMatrix p, bool purify) override;
19
+ void getGradient() override;
20
+ void getHessian() override;
21
+
22
+ std::unique_ptr<Manifold> Clone() const override;
23
+ };
@@ -0,0 +1,5 @@
1
+ Init_Manifold(m);
2
+ Init_Simplex(m);
3
+ Init_Orthogonal(m);
4
+ Init_Grassmann(m);
5
+ Init_TransRotInvPointCloud(m);
@@ -0,0 +1,5 @@
1
+ void Init_Manifold(pybind11::module_& m);
2
+ void Init_Simplex(pybind11::module_& m);
3
+ void Init_Orthogonal(pybind11::module_& m);
4
+ void Init_Grassmann(pybind11::module_& m);
5
+ void Init_TransRotInvPointCloud(pybind11::module_& m);
@@ -0,0 +1,24 @@
1
+ #include "Manifold.h"
2
+
3
+ class Simplex: public Manifold{ public:
4
+ EigenMatrix Hem;
5
+ Simplex(EigenMatrix p, bool hess_transport_matrix);
6
+
7
+ int getDimension() const override;
8
+ double Inner(EigenMatrix X, EigenMatrix Y) const override;
9
+
10
+ EigenMatrix Exponential(EigenMatrix X) const override;
11
+ EigenMatrix Logarithm(Manifold& N) const override;
12
+
13
+ EigenMatrix TangentProjection(EigenMatrix A) const override;
14
+ EigenMatrix TangentPurification(EigenMatrix A) const override;
15
+
16
+ //EigenMatrix TransportTangent(EigenMatrix X, EigenMatrix Y) override;
17
+ //EigenMatrix TransportManifold(EigenMatrix X, Manifold& N) override;
18
+
19
+ void Update(EigenMatrix p, bool purify) override;
20
+ void getGradient() override;
21
+ void getHessian() override;
22
+
23
+ std::unique_ptr<Manifold> Clone() const override;
24
+ };
@@ -0,0 +1,23 @@
1
+ #include "Manifold.h"
2
+
3
+ class TransRotInvPointCloud: public Manifold{ public:
4
+ TransRotInvPointCloud(EigenMatrix p, bool matrix_free);
5
+
6
+ int getDimension() const override;
7
+ double Inner(EigenMatrix X, EigenMatrix Y) const override;
8
+
9
+ EigenMatrix Exponential(EigenMatrix X) const override;
10
+ EigenMatrix Logarithm(Manifold& N) const override;
11
+
12
+ EigenMatrix TangentProjection(EigenMatrix A) const override;
13
+ EigenMatrix TangentPurification(EigenMatrix A) const override;
14
+
15
+ //EigenMatrix TransportTangent(EigenMatrix X, EigenMatrix Y) override const;
16
+ EigenMatrix TransportManifold(EigenMatrix X, Manifold& N) const override;
17
+
18
+ void Update(EigenMatrix p, bool purify) override;
19
+ void getGradient() override;
20
+ void getHessian() override;
21
+
22
+ std::unique_ptr<Manifold> Clone() const override;
23
+ };
@@ -0,0 +1,21 @@
1
+ class HessUpdate{ public:
2
+ int Size = 0;
3
+ bool Verbose = 1;
4
+ std::vector<std::unique_ptr<Manifold>> Ms;
5
+ std::vector<std::map<std::string, EigenMatrix>> Caches; // For matrix-free
6
+ std::vector<std::tuple<double, EigenMatrix>> EigenPairs; // For non-matrix-free
7
+ std::function<double (double)> CautiousThreshold = [](double gnorm){ return -gnorm; };
8
+ HessUpdate(int n);
9
+ void Append(Manifold& M, EigenMatrix Step);
10
+ virtual void AdmittedAppend(Manifold& M, EigenMatrix Step);
11
+ EigenMatrix Hessian(EigenMatrix v);
12
+ virtual EigenMatrix HessianMatrixFree(EigenMatrix v);
13
+ void Clear();
14
+ virtual ~HessUpdate() = default;
15
+ };
16
+
17
+ class BroydenFletcherGoldfarbShanno: public HessUpdate{ public:
18
+ BroydenFletcherGoldfarbShanno(int n): HessUpdate(n){}
19
+ void AdmittedAppend(Manifold& M, EigenMatrix Step) override;
20
+ EigenMatrix HessianMatrixFree(EigenMatrix v) override;
21
+ };
@@ -0,0 +1,3 @@
1
+ Init_TrustRegion(m);
2
+ Init_SubSolver(m);
3
+ Init_HessUpdate(m);
@@ -0,0 +1,3 @@
1
+ void Init_TrustRegion(pybind11::module_& m);
2
+ void Init_SubSolver(pybind11::module_& m);
3
+ void Init_HessUpdate(pybind11::module_& m);
@@ -0,0 +1,16 @@
1
+ class TruncatedConjugateGradient{ public:
2
+ Manifold* M;
3
+ std::function<EigenMatrix (EigenMatrix)>* Func;
4
+ bool Verbose;
5
+ bool ShowTarget;
6
+ double Radius;
7
+ std::function<bool (double, double, double, double)> Tolerance;
8
+ std::vector<std::tuple<double, EigenMatrix, EigenMatrix>> Sequence; // Step size, S, P.
9
+ TruncatedConjugateGradient(){};
10
+ TruncatedConjugateGradient(
11
+ Manifold* m, std::function<EigenMatrix (EigenMatrix)>* func,
12
+ bool verbose, bool showtarget
13
+ ): M(m), Func(func), Verbose(verbose), ShowTarget(showtarget){};
14
+ void Run();
15
+ std::tuple<double, EigenMatrix> Find(); // Step size, S.
16
+ };
@@ -0,0 +1,33 @@
1
+ class TrustRegionSetting{ public:
2
+ double R0;
3
+ double RhoThreshold;
4
+ std::function<double (double, double, double)> Update;
5
+ TrustRegionSetting();
6
+ };
7
+
8
+ bool TrustRegion(
9
+ std::function<
10
+ std::tuple<
11
+ double,
12
+ EigenMatrix,
13
+ std::function<EigenMatrix (EigenMatrix)>
14
+ > (EigenMatrix, int)
15
+ >& func,
16
+ TrustRegionSetting& tr_setting,
17
+ std::tuple<double, double, double> tol,
18
+ double tcg_tol,
19
+ int recalc_hess, int max_iter,
20
+ double& L, Manifold& M, int output);
21
+
22
+ bool TrustRegionRationalFunction(
23
+ std::function<
24
+ std::tuple<
25
+ double,
26
+ EigenMatrix,
27
+ std::function<EigenMatrix (EigenMatrix)>
28
+ > (EigenMatrix, int)
29
+ >& func,
30
+ TrustRegionSetting& tr_setting,
31
+ std::tuple<double, double, double> tol,
32
+ int recalc_hess, int max_iter,
33
+ double& L, Manifold& M, int output);
@@ -1 +0,0 @@
1
- Maniverse
File without changes
File without changes
File without changes