Skip to content

Cannot use set_x0 in codegen/pywrapper/bindings.cpp #6

Open
@levioctl

Description

@levioctl

Hi,

I'm trying to build a small C++ program that uses the generated tiny_data.cpp, by calling set_x0 and set_x_ref, like codegen/pywrapper/bindings.cpp.

However, when calling set_x0 (copied from codegen/pywrapper/bindings.cpp) I get a runtime error;
The call to the inner tiny_set_x0 (that expects a tinyVector) fails, as it tries to pass a matrix (that is, more than 1 rows and cols) as an argument (the result of the x0.replicate in here line 25) to a tinyVector. Which Eigen does not like, as it expects the matrix being cast to have at least one dimension of size 1.
(The following message is printed: Assertion `other.rows() == 1 || other.cols() == 1' failed)

  1. I see that codegen/pywrapper/bindings.cpp is used for tinympcgen's operations (set_x0, set_x_ref etc.). Is it that Pybind11's Eigen implementation prevents this from failing (as opposed to when running these lines in pure C++ and Eigen like i've tried)?

  2. Is the replication necessary in the case of set_x0? Is it some kind of necessity from using Pybind11? or am I missing something.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions