Giter Club home page Giter Club logo

eigency's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

eigency's Issues

Ok on compilation machine, Crash on a different machine

I have a simple eigency test that works on a compilation machine , but poorly crashes on a production machine. Machines are Windows based, they use same Python version (3.6.5 64 Bits), with numpy 1.14.2 with mkl. I use eigency 1.77 with the shipped version of Eigen. Using latest Eigen 3.3.5 does not change anythong. The package is compiled with MSVC14. When looking at the generated pyd, dependency walker show roughly the same thing: all required DLL are found. I have tried on other production machine and met the same problem.

Does anyone has a clue on how to deal with this situation?

Below are the 4 files I need to build the python package that crashes on production machine.

The command that produces the crash looks like this.

python -c "import eigency_tests; print(eigency_tests.foo())" 

The crash does not produce any message. On the compilation machine, the result is fine:

python36 -c"import eigency_tests; print(eigency_tests.foo())"
[[0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]]

I build the package with command:

python setup.py build_ext --inplace

code.hpp

#ifndef CODE_HPP
#define CODE_HPP
#include <Eigen/Dense>
typedef Eigen::Matrix<int, Eigen::Dynamic, 3, Eigen::RowMajor> Matrix_int;
Matrix_int foo();
#endif

code.cpp

#include "code.hpp"
Matrix_int foo()
{
    return Matrix_int::Zero(10,3);
}

eigency_tests.pyx

# distutils: language = c++
# distutils: sources = code.cpp

from eigency.core cimport *
 
cdef extern from "code.hpp":
    cdef PlainObjectBase _foo "foo" ()
def foo():
    return ndarray(_foo())

setup.py

# python setup.py build_ext --inplace
from setuptools import setup
from setuptools.extension import Extension
from Cython.Build import cythonize

import eigency

extensions = [
    Extension("eigency_tests", ["eigency_tests.pyx"],
        include_dirs = ["."] + eigency.get_includes()
    ),
]

dist = setup(
    name = "eigency_tests",
    version = "1.0",
    ext_modules = cythonize(extensions),
    packages = ["eigency_tests"]
)

The log looks like this:

running build_ext
building 'eigency_tests' extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\jacquenot\AppData\Roaming\Python\Python36\site-packages\eigency -I. "-IC:\Program Files\Python36\lib\site-packages\numpy\core\include" -IC:\Users\jacquenot\AppData\Roaming\Python\Python36\site-packages\eigency\eigen_3.2.8 "-IC:\Program Files\Python36\include" "-IC:\Program Files\Python36\include" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt" /EHsc /Tpeigency_tests.cpp /Fobuild\temp.win-amd64-3.6\Release\eigency_tests.obj
eigency_tests.cpp
c:\program files\python36\lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(12) : Warning Msg: Using deprecated NumPy API, disable it by #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
C:\Users\jacquenot\AppData\Roaming\Python\Python36\site-packages\eigency\eigency_cpp.h(233): warning C4244: 'argument'ÿ: conversion de '__int64' en 'long', perte possible de donn‚es
eigency_tests.cpp(1671): note: voir la r‚f‚rence … l'instanciation de la fonction modŠle 'PyArrayObject *eigency::ndarray<Eigen::Matrix<int,-1,3,1,-1,3>>(const Eigen::PlainObjectBase<Eigen::Matrix<int,-1,3,1,-1,3>> &)' en cours de compilation
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\jacquenot\AppData\Roaming\Python\Python36\site-packages\eigency -I. "-IC:\Program Files\Python36\lib\site-packages\numpy\core\include" -IC:\Users\jacquenot\AppData\Roaming\Python\Python36\site-packages\eigency\eigen_3.2.8 "-IC:\Program Files\Python36\include" "-IC:\Program Files\Python36\include" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt" /EHsc /Tpcode.cpp /Fobuild\temp.win-amd64-3.6\Release\code.obj
code.cpp
creating D:\eigency_tests_min_example\eigency_tests\build\lib.win-amd64-3.6
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO "/LIBPATH:C:\Program Files\Python36\libs" "/LIBPATH:C:\Program Files\Python36\PCbuild\amd64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64" /EXPORT:PyInit_eigency_tests build\temp.win-amd64-3.6\Release\eigency_tests.obj build\temp.win-amd64-3.6\Release\code.obj /OUT:build\lib.win-amd64-3.6\eigency_tests.cp36-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.6\Release\eigency_tests.cp36-win_amd64.lib
eigency_tests.obj : warning LNK4197: exportation 'PyInit_eigency_tests' spécifiée à plusieurs reprises ; première spécification utilisée
   Création de la bibliothèque build\temp.win-amd64-3.6\Release\eigency_tests.cp36-win_amd64.lib et de l'objet build\temp.win-amd64-3.6\Release\eigency_tests.cp36-win_amd64.exp
Génération de code en cours
Fin de la génération du code
copying build\lib.win-amd64-3.6\eigency_tests.cp36-win_amd64.pyd -> 

Possiblity to use long double as type

Currently there is no possibility to map long double matrices to numpy.
Any idea how to do it?

This would be very beneficial to all users as very often matrix exponentials as computed by Eigen benefit a lot of large precision.

Solving sparse matrix equation

I am currently using python.
I would like to ask is there any function to use in eigency for solving sparse matrix equation? If yes, is there a GPU support version also? Is there documentation to see what functions I can call in eigency?

Thank you.

Eigen/src/ is missing after pip install eigency

I've been able to install eigency under python 3, but I'm having trouble with python 2.7. Any ideas?

$ pip install eigency
Downloading/unpacking eigency
  Downloading eigency-1.75.tar.gz (666kB): 666kB downloaded
  Running setup.py egg_info for package eigency
    Compiling eigency/conversions.pyx because it changed.
    Compiling eigency/core.pyx because it changed.
    [1/2] Cythonizing eigency/conversions.pyx
    [2/2] Cythonizing eigency/core.pyx
    warning: no files found matching 'eigency/*.pyd'
    warning: no previously-included files matching 'CMakeLists.txt' found under directory 'eigency/eigen_3.2.8/Eigen'
Requirement already satisfied (use --upgrade to upgrade): numpy in /Library/Python/2.7/site-packages (from eigency)
Requirement already satisfied (use --upgrade to upgrade): cython in /Users/fritz/.virtualenvs/foo/lib/python2.7/site-packages (from eigency)
Installing collected packages: eigency
  Running setup.py install for eigency
    building 'eigency.conversions' extension
    cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -I/Library/Python/2.7/site-packages/numpy/core/include -Ieigency/eigen_3.2.8 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c eigency/conversions.cpp -o build/temp.macosx-10.11-intel-2.7/eigency/conversions.o
    c++ -bundle -undefined dynamic_lookup -arch x86_64 -arch i386 -Wl,-F. build/temp.macosx-10.11-intel-2.7/eigency/conversions.o -o build/lib.macosx-10.11-intel-2.7/eigency/conversions.so
    building 'eigency.core' extension
    cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -I/Library/Python/2.7/site-packages/numpy/core/include -Ieigency/eigen_3.2.8 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c eigency/core.cpp -o build/temp.macosx-10.11-intel-2.7/eigency/core.o
    In file included from eigency/core.cpp:469:
    In file included from eigency/eigency_cpp.h:10:
    eigency/conversions_api.h:182:12: warning: 'static' function 'import_eigency__conversions' declared in header file should be declared 'static inline' [-Wunneeded-internal-declaration]
    static int import_eigency__conversions(void) {
               ^
    1 warning generated.
    In file included from eigency/core.cpp:469:
    In file included from eigency/eigency_cpp.h:10:
    eigency/conversions_api.h:182:12: warning: 'static' function 'import_eigency__conversions' declared in header file should be declared 'static inline' [-Wunneeded-internal-declaration]
    static int import_eigency__conversions(void) {
               ^
    1 warning generated.
    c++ -bundle -undefined dynamic_lookup -arch x86_64 -arch i386 -Wl,-F. build/temp.macosx-10.11-intel-2.7/eigency/core.o -o build/lib.macosx-10.11-intel-2.7/eigency/core.so
    warning: no files found matching 'eigency/*.pyd'
    warning: no previously-included files matching 'CMakeLists.txt' found under directory 'eigency/eigen_3.2.8/Eigen'
  Could not find .egg-info directory in install record for eigency
Successfully installed eigency
Cleaning up...

Now my package using eigency fails to build with an error like

$ pip install -e $MY_PACKAGE
...
/Users/fritz/.virtualenvs/foo/lib/python2.7/site-packages/eigency/eigen_3.2.8/Eigen/Core:15:10: fatal error: 'src/Core/util/DisableStupidWarnings.h' file not found

and indeed the Eigen source is nowhere to be found

$ tree $VIRTUAL_ENV/lib/python2.7/site-packages/eigency
/Users/fritz/.virtualenvs/foo/lib/python2.7/site-packages/eigency
├── __init__.py
├── __init__.pyc
├── conversions.h
├── conversions.pxd
├── conversions.pyx
├── conversions.so
├── conversions_api.h
├── core.pxd
├── core.pyx
├── core.so
├── eigen_3.2.8
│   └── Eigen
│       ├── Array
│       ├── Cholesky
│       ├── CholmodSupport
│       ├── Core
│       ├── Dense
│       ├── Eigen
│       ├── Eigen2Support
│       ├── Eigenvalues
│       ├── Geometry
│       ├── Householder
│       ├── IterativeLinearSolvers
│       ├── Jacobi
│       ├── LU
│       ├── LeastSquares
│       ├── MetisSupport
│       ├── OrderingMethods
│       ├── PaStiXSupport
│       ├── PardisoSupport
│       ├── QR
│       ├── QtAlignedMalloc
│       ├── SPQRSupport
│       ├── SVD
│       ├── Sparse
│       ├── SparseCholesky
│       ├── SparseCore
│       ├── SparseLU
│       ├── SparseQR
│       ├── StdDeque
│       ├── StdList
│       ├── StdVector
│       ├── SuperLUSupport
│       └── UmfPackSupport
└── eigency_cpp.h

Thanks for a great package!

I got "fatal error: 'complex' file not found"

Hi, from Japan.
I tried to install eigency by using pip, that is to say,"pip install eigency"
I got "fatal error: 'complex' file not found"
image

Here is my environment.
・Mojave 10.14.5
・pip 19.3.1
・gcc 4.2.1
・Python 3.6.8 :: Anaconda, Inc.

I would like someone to tell me what I should do.
Thank you.

Bugs with creating an Eigen Array in a pyx file and returning it with ndarray function

Hello, before start I would like to give thanks for the work you have done. I think there are some bugs.

I have this example:

Eigen::ArrayXXd create_mat()
{
  Eigen::ArrayXXd sigms(3, 3);

  for(int n = 0; n<sigms.cols(); n++)
    for (int m = 0; m < sigms.rows(); m++)
      sigms(m, n) = 1.0;

  return sigms;
}

And have two versions of correspongind cython wrapping as in a file called kernel.pyx:

Version 1

def create_mat1():
    cdef ArrayXXd sigms = create_mat()
    return ndarray(sigms)

Version 2

def create_mat1():
    return ndarray(create_mat())

In my python code a have the following:

import kernel

m1 = kernel.create_mat1()
m2 = kernel.create_mat2()

print(m1)
print(m2)

The output is the following:

[[  0.00000000e+000   0.00000000e+000   0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000]
 [  0.00000000e+000   0.00000000e+000   0.00000000e+000]]
[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]

It is clear that there is something wrong. Both functions should give the same result.

Eigency Roadmap

Hello, my name is Bradley. I've recently been given collaborator access by Wouter (owner) to help with maintaining this package as it's been neglected since early 2018. I have already merged in PR #27 and #41 which should fix the current install issues encountered when using the 1.77 release on PyPi.

My immediate objective is to spin a new 1.78 release as soon as possible with the above mentioned critical fixes and then begin work on quality of life improvements.

TO-DO items:

  • Switch from Travis CI to GitHub Actions.
    This will allow the eigency package to be built and tested across all supported Python versions, OS environments, and build styles (setup.py, pip wheel, pep 517 build).
  • Fix as many open issues as I can!
  • Remove Python 2.7 support.
  • Add Windows and MacOS support.
  • Switch to using a git submodule for eigen to avoid having a copy in the working tree.
  • Upgrade Eigen library
  • Align eigency package version with eigen library version.
    The current bundled version of eigen is 3.2.8 but the eigency version is 1.77. It would be nice if there was a clear correlation between the version of eigency and the underlying eigen library. I am considering switching to a 4-number version for eigency where the first 3 numbers match the version of eigen (ex: 3.2.8.x) and the last number is a simple revision number for eigency itself. With this versioning system, eigency could support and distribute multiple bundled versions and potentially even support non-bundled (system-installed) eigen (indicated with an eigency version of 0.0.0.x).

how to specify eigency dependency before setup.py ?

Thanks for this awesome package. I'm wondering if there is a way around having import eigency in the setup.py file for my project, since setup.py will fail if eigency is not installed, even with install_requires=['eigency'] specified (i'm using setuptools here).

macro expansion in eigency_cpp.h

In Eigen 3.3.3, the macro EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION expands to either Eigen::RowMajor or Eigen::ColMajor as has been introduced by this commit

But in eigency, in eigen_cpp.h, DenseBase is templated using Eigen::EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION, which after expansion yields a

error: ‘Eigen::Eigen’ has not been declared
 #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::ColMajor 

a workaround when building eigency with eigen 3.3.3 will be

sed -i 's,Eigen::EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION,EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION,' eigency/eigency_cpp.h

python setup.py install

Thanks again for this amazing extension

pip install eigency fails with gcc: error: eigency/conversions.cpp: No such file or directory

Hi, I'm trying to install eigency on my machine. For some reason it does not work. I tried with Python 3.8 and 3.7 and get the same error, see below the full log:

> pip install eigency

Collecting eigency
  Using cached eigency-1.77.tar.gz (678 kB)
Requirement already satisfied: numpy in /home/patrick/.pyenv/versions/3.8.2/lib/python3.8/site-packages (from eigency) (1.18.2)
Installing collected packages: eigency
    Running setup.py install for eigency ... error
    ERROR: Command errored out with exit status 1:
     command: /home/patrick/.pyenv/versions/3.8.2/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3cdvjv8m/eigency/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3cdvjv8m/eigency/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-z_dif970/install-record.txt --single-version-externally-managed --compile --install-headers /home/patrick/.pyenv/versions/3.8.2/include/python3.8/eigency
         cwd: /tmp/pip-install-3cdvjv8m/eigency/
    Complete output (364 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/eigency
    copying eigency/__init__.py -> build/lib.linux-x86_64-3.8/eigency
    running egg_info
    writing eigency.egg-info/PKG-INFO
    writing dependency_links to eigency.egg-info/dependency_links.txt
    writing requirements to eigency.egg-info/requires.txt
    writing top-level names to eigency.egg-info/top_level.txt
    reading manifest file 'eigency.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no files found matching 'eigency/*.pyd'
    warning: no previously-included files found matching 'eigency/*.cpp'
    warning: no previously-included files matching 'CMakeLists.txt' found under directory 'eigency/eigen_3.2.8/Eigen'
    writing manifest file 'eigency.egg-info/SOURCES.txt'
    copying eigency/conversions.pxd -> build/lib.linux-x86_64-3.8/eigency
    copying eigency/conversions.pyx -> build/lib.linux-x86_64-3.8/eigency
    copying eigency/conversions_api.h -> build/lib.linux-x86_64-3.8/eigency
    copying eigency/core.pxd -> build/lib.linux-x86_64-3.8/eigency
    copying eigency/core.pyx -> build/lib.linux-x86_64-3.8/eigency
    copying eigency/eigency_cpp.h -> build/lib.linux-x86_64-3.8/eigency
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8
    copying eigency/eigen_3.2.8/COPYING.BSD -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8
    copying eigency/eigen_3.2.8/COPYING.GPL -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8
    copying eigency/eigen_3.2.8/COPYING.LGPL -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8
    copying eigency/eigen_3.2.8/COPYING.MINPACK -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8
    copying eigency/eigen_3.2.8/COPYING.MPL2 -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8
    copying eigency/eigen_3.2.8/COPYING.README -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Array -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Cholesky -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/CholmodSupport -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Core -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Dense -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Eigen -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Eigen2Support -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Eigenvalues -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Geometry -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Householder -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/IterativeLinearSolvers -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Jacobi -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/LU -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/LeastSquares -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/MetisSupport -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/OrderingMethods -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/PaStiXSupport -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/PardisoSupport -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/QR -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/QtAlignedMalloc -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/SPQRSupport -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/SVD -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/Sparse -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/SparseCholesky -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/SparseCore -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/SparseLU -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/SparseQR -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/StdDeque -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/StdList -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/StdVector -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/SuperLUSupport -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    copying eigency/eigen_3.2.8/Eigen/UmfPackSupport -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Cholesky
    copying eigency/eigen_3.2.8/Eigen/src/Cholesky/LDLT.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Cholesky
    copying eigency/eigen_3.2.8/Eigen/src/Cholesky/LLT.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Cholesky
    copying eigency/eigen_3.2.8/Eigen/src/Cholesky/LLT_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Cholesky
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/CholmodSupport
    copying eigency/eigen_3.2.8/Eigen/src/CholmodSupport/CholmodSupport.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/CholmodSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Array.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/ArrayBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/ArrayWrapper.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Assign.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Assign_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/BandMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Block.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/BooleanRedux.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/CommaInitializer.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/CoreIterators.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/CwiseBinaryOp.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/CwiseNullaryOp.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/CwiseUnaryOp.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/CwiseUnaryView.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/DenseBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/DenseCoeffsBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/DenseStorage.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Diagonal.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/DiagonalMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/DiagonalProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Dot.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/EigenBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Flagged.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/ForceAlignedAccess.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Functors.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Fuzzy.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/GeneralProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/GenericPacketMath.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/GlobalFunctions.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/IO.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Map.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/MapBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/MathFunctions.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Matrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/MatrixBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/NestByValue.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/NoAlias.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/NumTraits.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/PermutationMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/PlainObjectBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/ProductBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Random.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Redux.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Ref.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Replicate.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/ReturnByValue.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Reverse.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Select.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/SelfAdjointView.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/SelfCwiseBinaryOp.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/SolveTriangular.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/StableNorm.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Stride.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Swap.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Transpose.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Transpositions.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/TriangularMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/VectorBlock.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/VectorwiseOp.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    copying eigency/eigen_3.2.8/Eigen/src/Core/Visitor.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/AltiVec
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/AltiVec/Complex.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/AltiVec
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/AltiVec/PacketMath.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/AltiVec
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/Default
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/Default/Settings.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/Default
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/NEON
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/NEON/Complex.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/NEON
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/NEON/PacketMath.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/NEON
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/SSE
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/SSE/Complex.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/SSE
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/SSE/MathFunctions.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/SSE
    copying eigency/eigen_3.2.8/Eigen/src/Core/arch/SSE/PacketMath.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/arch/SSE
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/CoeffBasedProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/GeneralBlockPanelKernel.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/GeneralMatrixMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/GeneralMatrixVector.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/GeneralMatrixVector_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/Parallelizer.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/SelfadjointMatrixMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/SelfadjointMatrixVector.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/SelfadjointProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/SelfadjointRank2Update.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/TriangularMatrixMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/TriangularMatrixVector.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/TriangularMatrixVector_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/TriangularSolverMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/TriangularSolverMatrix_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    copying eigency/eigen_3.2.8/Eigen/src/Core/products/TriangularSolverVector.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/products
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/BlasUtil.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/Constants.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/DisableStupidWarnings.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/ForwardDeclarations.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/MKL_support.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/Macros.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/Memory.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/Meta.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/NonMPL2.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/ReenableStupidWarnings.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/StaticAssert.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    copying eigency/eigen_3.2.8/Eigen/src/Core/util/XprHelper.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Core/util
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Block.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Cwise.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/CwiseOperators.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/LU.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Lazy.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/LeastSquares.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Macros.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/MathFunctions.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Memory.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Meta.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Minor.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/QR.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/SVD.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/TriangularSolver.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/VectorBlock.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/AlignedBox.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/All.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/AngleAxis.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/Hyperplane.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/Quaternion.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/Rotation2D.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/RotationBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/Scaling.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/Transform.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry/Translation.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigen2Support/Geometry
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/ComplexEigenSolver.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/ComplexSchur.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/ComplexSchur_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/EigenSolver.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/HessenbergDecomposition.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/RealQZ.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/RealSchur.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/RealSchur_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    copying eigency/eigen_3.2.8/Eigen/src/Eigenvalues/Tridiagonalization.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Eigenvalues
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/AlignedBox.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/AngleAxis.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/EulerAngles.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Homogeneous.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Hyperplane.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/OrthoMethods.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/ParametrizedLine.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Quaternion.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Rotation2D.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/RotationBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Scaling.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Transform.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Translation.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/Umeyama.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry/arch
    copying eigency/eigen_3.2.8/Eigen/src/Geometry/arch/Geometry_SSE.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Geometry/arch
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Householder
    copying eigency/eigen_3.2.8/Eigen/src/Householder/BlockHouseholder.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Householder
    copying eigency/eigen_3.2.8/Eigen/src/Householder/Householder.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Householder
    copying eigency/eigen_3.2.8/Eigen/src/Householder/HouseholderSequence.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Householder
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers
    copying eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers
    copying eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers
    copying eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers
    copying eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers
    copying eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/IterativeLinearSolvers
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Jacobi
    copying eigency/eigen_3.2.8/Eigen/src/Jacobi/Jacobi.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/Jacobi
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU
    copying eigency/eigen_3.2.8/Eigen/src/LU/Determinant.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU
    copying eigency/eigen_3.2.8/Eigen/src/LU/FullPivLU.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU
    copying eigency/eigen_3.2.8/Eigen/src/LU/Inverse.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU
    copying eigency/eigen_3.2.8/Eigen/src/LU/PartialPivLU.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU
    copying eigency/eigen_3.2.8/Eigen/src/LU/PartialPivLU_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU/arch
    copying eigency/eigen_3.2.8/Eigen/src/LU/arch/Inverse_SSE.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/LU/arch
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/MetisSupport
    copying eigency/eigen_3.2.8/Eigen/src/MetisSupport/MetisSupport.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/MetisSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/OrderingMethods
    copying eigency/eigen_3.2.8/Eigen/src/OrderingMethods/Amd.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/OrderingMethods
    copying eigency/eigen_3.2.8/Eigen/src/OrderingMethods/Eigen_Colamd.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/OrderingMethods
    copying eigency/eigen_3.2.8/Eigen/src/OrderingMethods/Ordering.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/OrderingMethods
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/PaStiXSupport
    copying eigency/eigen_3.2.8/Eigen/src/PaStiXSupport/PaStiXSupport.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/PaStiXSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/PardisoSupport
    copying eigency/eigen_3.2.8/Eigen/src/PardisoSupport/PardisoSupport.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/PardisoSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/QR
    copying eigency/eigen_3.2.8/Eigen/src/QR/ColPivHouseholderQR.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/QR
    copying eigency/eigen_3.2.8/Eigen/src/QR/ColPivHouseholderQR_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/QR
    copying eigency/eigen_3.2.8/Eigen/src/QR/FullPivHouseholderQR.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/QR
    copying eigency/eigen_3.2.8/Eigen/src/QR/HouseholderQR.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/QR
    copying eigency/eigen_3.2.8/Eigen/src/QR/HouseholderQR_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/QR
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SPQRSupport
    copying eigency/eigen_3.2.8/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SPQRSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SVD
    copying eigency/eigen_3.2.8/Eigen/src/SVD/JacobiSVD.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SVD
    copying eigency/eigen_3.2.8/Eigen/src/SVD/JacobiSVD_MKL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SVD
    copying eigency/eigen_3.2.8/Eigen/src/SVD/UpperBidiagonalization.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SVD
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCholesky
    copying eigency/eigen_3.2.8/Eigen/src/SparseCholesky/SimplicialCholesky.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCholesky
    copying eigency/eigen_3.2.8/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCholesky
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/AmbiVector.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/CompressedStorage.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/MappedSparseMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseBlock.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseColEtree.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseCwiseBinaryOp.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseCwiseUnaryOp.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseDenseProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseDiagonalProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseDot.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseFuzzy.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseMatrixBase.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparsePermutation.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseProduct.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseRedux.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseSelfAdjointView.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseSparseProductWithPruning.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseTranspose.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseTriangularView.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseUtil.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseVector.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/SparseView.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    copying eigency/eigen_3.2.8/Eigen/src/SparseCore/TriangularSolver.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseCore
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLUImpl.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_Memory.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_Structs.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_Utils.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_column_bmod.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_column_dfs.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_gemm_kernel.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_kernel_bmod.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_panel_bmod.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_panel_dfs.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_pivotL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_pruneL.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    copying eigency/eigen_3.2.8/Eigen/src/SparseLU/SparseLU_relax_snode.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseLU
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseQR
    copying eigency/eigen_3.2.8/Eigen/src/SparseQR/SparseQR.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SparseQR
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/StlSupport
    copying eigency/eigen_3.2.8/Eigen/src/StlSupport/StdDeque.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/StlSupport
    copying eigency/eigen_3.2.8/Eigen/src/StlSupport/StdList.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/StlSupport
    copying eigency/eigen_3.2.8/Eigen/src/StlSupport/StdVector.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/StlSupport
    copying eigency/eigen_3.2.8/Eigen/src/StlSupport/details.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/StlSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SuperLUSupport
    copying eigency/eigen_3.2.8/Eigen/src/SuperLUSupport/SuperLUSupport.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/SuperLUSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/UmfPackSupport
    copying eigency/eigen_3.2.8/Eigen/src/UmfPackSupport/UmfPackSupport.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/UmfPackSupport
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/misc
    copying eigency/eigen_3.2.8/Eigen/src/misc/Image.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/misc
    copying eigency/eigen_3.2.8/Eigen/src/misc/Kernel.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/misc
    copying eigency/eigen_3.2.8/Eigen/src/misc/Solve.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/misc
    copying eigency/eigen_3.2.8/Eigen/src/misc/SparseSolve.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/misc
    copying eigency/eigen_3.2.8/Eigen/src/misc/blas.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/misc
    creating build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    copying eigency/eigen_3.2.8/Eigen/src/plugins/ArrayCwiseBinaryOps.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    copying eigency/eigen_3.2.8/Eigen/src/plugins/ArrayCwiseUnaryOps.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    copying eigency/eigen_3.2.8/Eigen/src/plugins/BlockMethods.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    copying eigency/eigen_3.2.8/Eigen/src/plugins/CommonCwiseBinaryOps.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    copying eigency/eigen_3.2.8/Eigen/src/plugins/CommonCwiseUnaryOps.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    copying eigency/eigen_3.2.8/Eigen/src/plugins/MatrixCwiseBinaryOps.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    copying eigency/eigen_3.2.8/Eigen/src/plugins/MatrixCwiseUnaryOps.h -> build/lib.linux-x86_64-3.8/eigency/eigen_3.2.8/Eigen/src/plugins
    running build_ext
    building 'eigency.conversions' extension
    creating build/temp.linux-x86_64-3.8
    creating build/temp.linux-x86_64-3.8/eigency
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/home/patrick/.pyenv/versions/3.8.2/lib/python3.8/site-packages/numpy/core/include -I/tmp/pip-install-3cdvjv8m/eigency/eigency/eigen_3.2.8 -I/home/patrick/.pyenv/versions/3.8.2/include/python3.8 -c eigency/conversions.cpp -o build/temp.linux-x86_64-3.8/eigency/conversions.o
    gcc: error: eigency/conversions.cpp: No such file or directory
    gcc: fatal error: no input files
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/patrick/.pyenv/versions/3.8.2/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3cdvjv8m/eigency/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3cdvjv8m/eigency/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-z_dif970/install-record.txt --single-version-externally-managed --compile --install-headers /home/patrick/.pyenv/versions/3.8.2/include/python3.8/eigency Check the logs for full command output.

unable to pass empty matrix eigen to numpy

Hello,

A have a code in c++ that compute a variable size vector. then this vector is send using eigency to python.
For some data the algorithm create an empty vector, then when a tried to send this empty vector to python I get the following message:

    return  ndarray(self.dn_cpp.ComputeVectorSometimeEmptyVector())
  File "eigency/conversions.pyx", line 67, in eigency.conversions.ndarray_long_F
ValueError: Cannot create cython.array from NULL pointer

The problem is that at the cython level I have only a PlainObjectBase, with no possibility to test the size (rows() and cols()) to handle this situation correctly.

Any ideas on how can treat this problem.

Felipe

Mapping a list of Numpy matrices to a vector of Eigen matrices fails

I have a C++ function which I want to run from Python. For this I use Cython.
My C++ function relies heavily on Eigen matrices which I map to Python's Numpy matrices using Eigency.

I cannot get this to work for the case where I have a list of Numpy matrices.


What does works (mapping a plain Numpy matrix to an Eigen matrix):

I have a C++ function which in the header (Header.h) looks like:

float MyCppFunction(Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>> &inputMatrix)

In my CythonFile.pyx file I have (and create the maps using Eigency as explained here):

cdef extern from "Header.h":
    cdef void _MyCppFunction "MyCppFunction"(FlattenedMapWithOrder[Matrix, float, Dynamic, Dynamic, RowMajor] &)

and

def my_python_function(np.ndarray[ndim=2, dtype=np.float32_t] my_matrix)
    return _MyCppFunction(FlattenedMapWithOrder[Matrix, float, Dynamic, Dynamic, RowMajor](my_matrix))

I can build this module using Cython and call my_python_function successfully from Python.


What does not work (mapping a list of Numpy matrices to a vector of Eigen matrices):

Now I try to do the same thing, but for a list of matrices. I cannot get this to work.
What I have:

The C++ function in the header (Header.h) looks like:

float MyCppFunction(std::vector<Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>> &inputMatrixList)

In my CythonFile.pyx file I have:

cdef extern from "Header.h":
    cdef void _MyCppFunction "MyCppFunction"(vector[FlattenedMapWithOrder[Matrix, float, Dynamic, Dynamic, RowMajor]] &)

and

def my_python_function(list my_matrix_list)
	cdef vector[FlattenedMapWithOrder[Matrix, float, Dynamic, Dynamic, RowMajor]] map
	
	for matrix in my_matrix_list:
		map.push_back(FlattenedMapWithOrder[Matrix, float, Dynamic, Dynamic, RowMajor](matrix))
		
   return _MyCppFunction(map)

This won't compile unfortunately.

This concept does compile and run when I, for example, simply use a list of int which I want to map to a std::vector<int>. It does not work however, when I map a list of Numpy-matrices to a vector of Eigen matrices (which is the case I have denoted above).


The Error I get:

The error I get during compilation:
error C2664: 'void MyCppFunction(std::vector<Eigen::Map<Eigen::Matrix<float,-1,-1,1,-1,-1>,0,Eigen::Stride<0,0>>,std::allocator<Eigen::Map<Eigen::Matrix<float,-1,-1,1,-1,-1>,0,Eigen::Stride<0,0>>>> &)': cannot convert argument 1 from 'std::vector<eigency::FlattenedMap<Eigen::Matrix,float,-1,-1,1,0,0,0,-1,-1>,std::allocator<eigency::FlattenedMap<Eigen::Matrix,float,-1,-1,1,0,0,0,-1,-1>>>' to 'std::vector<Eigen::Map<Eigen::Matrix<float,-1,-1,1,-1,-1>,0,Eigen::Stride<0,0>>,std::allocator<Eigen::Map<Eigen::Matrix<float,-1,-1,1,-1,-1>,0,Eigen::Stride<0,0>>>> &' ./Header.h(21): note: see declaration of 'MyCppFunction'


My analysis so far:

This works as expected, so: I can assign a python list of int to a C++ std::vector<int>.

This works also as expected, so: I can assing a variable of type eigency::FlattenedMap<Eigen::Matrix,float,-1,-1,1,0,0,0,-1,-1> to a variable of type Eigen::Map<Eigen::Matrix<float,-1,-1,1,-1,-1>,0,Eigen::Stride<0,0>>.

When I wrap the latter two variables in a list/vector, then I cannot assign these two variables:
std::vector<eigency::FlattenedMap<Eigen::Matrix,float,-1,-1,1,0,0,0,-1,-1>, std::allocator<eigency:...> to a variable of type std::vector<Eigen::Map<Eigen::Matrix<float,-1,-1,1,-1,-1>,0,Eigen::Stride<0,0>>, std::allocator<Eigen:...>.

Maybe it has to do with the allocator part but I don't know since I'm not really a C++ expert.
Does anybody has a solution to map a list of Numpy matrices to a vector of Eigen matrices? Preferably, following the same patterns as above but other solutions are also welcome.


Thank you very much!

'dict' object has no attribute 'has_key' error

Hi, I attempted a pip install eigency (v0.61) on python 3.5.1 and received the following error in eigency/setup.py", line 44

        if dist.command_obj.has_key('install'):
    AttributeError: 'dict' object has no attribute 'has_key'

Apparently dict.has_key was removed in python 3.x (one would use in instead).

Is this intentional? Is python 3 supported?

Thanks,
Hamza

int arrays are empty while floats work

Hey, thanks a lot for Eigency, it's exactly what I need.

While playing around with it and getting it work, I was really confused by the fact that normal integers become zero when passed to C++.

I made a little function (copy of the one from readme) which outputs the size, cols and rows as well as the matrix element at a time.

image

As you can see here, it works great for float:

image

Is this intentional? What am I doing wrong?

Also, I'm using std::to_string while printing it through a python function, I don't think that could be the problem.

Thanks

pip install eigency fails with ModuleNotFoundError: No module named 'numpy'

I noticed that you have to install numpy before being able to install eigency, otherwise the installations fails (see log below). This is due to eigency using numpy in the build phase and not (yet) specifying build system requirements in a pyproject.toml as described by PEP517 / PEP518.

This can result in libraries depending on eigency also failing to install when they are installed without numpy already present, even if those libraries specify numpy as build system requirement.

Error log:

> pip install eigency

Collecting eigency
  Using cached eigency-1.77.tar.gz (678 kB)
    ERROR: Command errored out with exit status 1:
     command: /home/patrick/.pyenv/versions/3.7.7/envs/pupil/bin/python3.7 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bfnvr5bv/eigency/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bfnvr5bv/eigency/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-bfnvr5bv/eigency/pip-egg-info
         cwd: /tmp/pip-install-bfnvr5bv/eigency/
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-bfnvr5bv/eigency/setup.py", line 6, in <module>
        import eigency
      File "/tmp/pip-install-bfnvr5bv/eigency/eigency/__init__.py", line 2, in <module>
        import numpy as np
    ModuleNotFoundError: No module named 'numpy'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

test suite

Hi,

I have a failing test with numpy 1.12.0 and python 3.6.0

$ python run_tests.py
._frozen_importlib:205: ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__
E........................
======================================================================
ERROR: test_function_type_char (__main__.TestEigency)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "run_tests.py", line 166, in test_function_type_char
    mat_out = eigency_tests.function_type_uint8(mat_in)
  File "eigency_tests/eigency_tests.pyx", line 140, in eigency_tests.function_type_uint8 (eigency_tests/eigency_tests.cpp:3017)
    return ndarray(_function_type_char(FlattenedMap[Array, char, Dynamic, Dynamic](array)))
  File "eigency/conversions.pyx", line 164, in eigency.conversions.ndarray_copy_char_F (eigency/conversions.cpp:6998)
  File "<...>/lib/python3.6/site-packages/numpy/core/numeric.py", line 531, in asarray
    return array(a, dtype, copy=False, order=order)
ValueError: invalid literal for int() with base 10: '\x01'

----------------------------------------------------------------------
Ran 26 tests in 0.010s

FAILED (errors=1)

Is it a known issue ?

Map SparseMatrix?

Hello,

Thank you for a great package and set of examples!

I want to use eigency to build a package, and I learned from/modified the code in tests to do most of what I need to do.

I haven't been able to figure out if I use eigency to map Eigen SparseMatrix from Python. Is that possible? If so, where can I find an example?

Thanks for any pointers!

Outdated Eigen Library

Hi, I found some compile error when trying to wrap some Eigen 3.3 functions. Solved the problem by replacing the Eigen 3.2.8 Library in this package to Eigen 3.3.7 and it worked in my case. I am not sure if you are still updating this package, but it would be nice if you can update the Eigen library here. Thanks!

multiple definition of `tagPyArrayObject_fields* eigency::_ndarray_view<double>(double*, long, long, bool, long, long)

Hi,

First, Thank you so much for creating this library. It is an extremely useful tool for Cython users.

Now, I was trying to use basic vector and matrix functions in my test C++ wrapping project for cython.
But when I compile my code, I get the following error:

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_view<double>(double*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:27: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_view(double*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:27: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_copy<double>(double const*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:39: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_copy(double const*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:39: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_view<float>(float*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:47: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_view(float*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:47: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_copy<float>(float const*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:54: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_copy(float const*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:54: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_view<long>(long*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:62: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_view(long*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:62: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_copy<long>(long const*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:69: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_copy(long const*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:69: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_view<int>(int*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:77: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_view(int*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:77: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_copy<int>(int const*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:84: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_copy(int const*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:84: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_view<short>(short*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:92: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_view(short*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:92: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_copy<short>(short const*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:99: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_copy(short const*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:99: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_view<char>(char*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:107: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_view(char*, long, long, bool, long, long)'
build/temp.linux-x86_64-3.4/cytest2.o:/usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:107: first defined here

build/temp.linux-x86_64-3.4/cytest.o: In function tagPyArrayObject_fields* eigency::_ndarray_copy<char>(char const*, long, long, bool, long, long)': /usr/local/lib/python3.4/dist-packages/eigency/eigency_cpp.h:114: multiple definition oftagPyArrayObject_fields* eigency::_ndarray_copy(char const*, long, long, bool, long, long)'

I have two files pyx file cytest.pyx and cytest2.pyx. cytest imports cytest2 to use functions defined there. But both cytest and cytest2 requires to use eigency library and hence I have from eigency.core import * in both files.

I have written the setup file as you have suggested in readme and it is able to locate eigency library.

Can you suggest why this is happening?

Thanks

Property and setter methods for eigen attributes

Thank you for the great library!

Is it possible to use properties and setters with eigency? I'm sorry if this isn't a good question; I'm new to cython. A minimal example that doesn't work is below. Hopefully it will be clear what I'm trying to do.

// basic.h:
#include <Eigen/Dense>

class Parameters {
public:
  // Parameters:
  int k_reg;
  Eigen::VectorXd vec;

  // Methods:
  Parameters(int k_reg): k_reg(k_reg) {
      vec = Eigen::VectorXd::Ones(k_reg);
  };

  Parameters() {
    Parameters(1);
  };
};
# autodiff.pyx
# distutils: language = c++

import eigency
from eigency.core cimport *

cdef extern from "basic.h":
     cdef cppclass Parameters:
        Parameters() except +
        Parameters(int) except +
        int k_reg
        VectorXd vec


# This will be exposed to Python
cdef class PyParameters:
    cdef Parameters c_Parameters      # hold a C++ instance which we're wrapping
    def __cinit__(self, int k_reg):
        self.c_Parameters = Parameters(k_reg)
    def __cinit__(self):
        self.c_Parameters = Parameters()
    @property
    def k_reg(self):
        return self.c_Parameters.k_reg
    @k_reg.setter
    def k_reg(self, int k_reg):
        def __set__(self, k_reg): self.c_rect.k_reg = k_reg

    # Doesn't work:
    @property
    def vec(self):
        return self.c_Parameters.vec
    @vec.setter
    def vec(self, np.ndarray vec):
        cdef Map[VectorXd] c_vec = vec
        def __set__(self, vec): self.c_Parameters.vec = c_vec
        # def __set__(self, vec): self.c_Parameters.vec = Map[VectorXd](vec) # Also doesn't work

The error is:

Error compiling Cython file:
------------------------------------------------------------
...
        def __set__(self, k_reg): self.c_rect.k_reg = k_reg

    # Doesn't work:
    @property
    def vec(self):
        return self.c_Parameters.vec
                               ^
------------------------------------------------------------

autodiff.pyx:54:32: Cannot convert 'VectorXd' to Python object

Error compiling Cython file:
------------------------------------------------------------
...
    @property
    def vec(self):
        return self.c_Parameters.vec
    @vec.setter
    def vec(self, np.ndarray vec):
        cdef Map[VectorXd] c_vec = vec
                                     ^
------------------------------------------------------------

autodiff.pyx:57:38: Cannot convert Python object to 'Map[VectorXd]'

Error compiling Cython file:
------------------------------------------------------------
...
    def vec(self):
        return self.c_Parameters.vec
    @vec.setter
    def vec(self, np.ndarray vec):
        cdef Map[VectorXd] c_vec = vec
        def __set__(self, vec): self.c_Parameters.vec = c_vec
                                                            ^
------------------------------------------------------------

autodiff.pyx:58:61: Cannot convert 'Map[VectorXd]' to Python object

Complex matrices failing to convert datatype

Hi, it seems that complex matrices may be broken with the current master. Here is an example:

test.pyx:

from eigency.core cimport *

cdef extern from "test.h":
     cdef MatrixXcd _test_matrix "test_matrix"(Map[MatrixXcd] &)

def test_matrix(np.ndarray array):
    return ndarray_copy(_test_matrix(Map[MatrixXcd](array)))

test.h:

#pragma once

#include <eigen3/Eigen/Dense>

Eigen::MatrixXcd test_matrix(const Eigen::MatrixXcd&);

test.cpp:

#include "test.h"

Eigen::MatrixXcd test_matrix(const Eigen::MatrixXcd& result) {
    return result;
}

Then in python:

import test_matrix
print test_matrix.test_matrix(np.zeros((3, 3)) + 0.4)

The output is not as expected (0.4 + 0.0j for all entries):

[[  4.00000000e-001 +4.00000000e-001j   4.00000000e-001 +4.00000000e-001j
    6.93540132e-310 +6.93540132e-310j]
 [  4.00000000e-001 +4.00000000e-001j   4.00000000e-001 +6.95335581e-309j
    0.00000000e+000 +6.93540132e-310j]
 [  4.00000000e-001 +4.00000000e-001j   6.93540132e-310 +0.00000000e+000j
    6.93540132e-310 +0.00000000e+000j]]

However, if I do something like the following:

m = np.zeros((3, 3)) + 0.4
print test_matrix.test_matrix(m.astype(np.complex128))

I get the correct output:

[[ 0.4+0.j  0.4+0.j  0.4+0.j]
 [ 0.4+0.j  0.4+0.j  0.4+0.j]
 [ 0.4+0.j  0.4+0.j  0.4+0.j]]

While this example shows mixing real with complex types, it also happens between different complex types, like complex64 mixed with complex128.

Is this expected behavior?

Strange problem with row matrices

Hi,
First I have been using eigency for a few months now and I absolutely love it! However, I see a repeated strange issue which occurs when I try to pass row matrices (that is, numpy arrays with a shape of (1, N)) from cython to c++ via Eigency.

When I pass a matrix of shape (M, N) the shape of the Eigen matrix is also (M, N) as it should be. But when I pass a matrix of shape (1, N) the Eigen matrix ends up transposed, having shape (N, 1).

I'm aware of the common problem with non-fortran-order arrays appearing to be transposed once they reach C++, and as far as I can tell that's not what's happening here as it happens even if I create my arrays with order='F'

I've attached some reproducing code. On my machine I compiled this with the commands:

g++-6 -I /usr/local/include/eigen3 -c cpp_print_shape.cpp
python setup.py build_ext --inplace

Running python test.py then shows the problematic behaviour I've been seeing.

Please let me know if I'm doing something wrong here, or if this is a bug!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.