Program Listing for File constants.hpp

Return to documentation for file (include/nanoeigenpy/constants.hpp)

#pragma once

#include <nanobind/nanobind.h>
#include <Eigen/Core>

namespace nanoeigenpy {
namespace nb = nanobind;
inline void exposeConstants(nb::module_ m) {
  nb::enum_<Eigen::ComputationInfo>(m, "ComputationInfo")
      .value("Success", Eigen::Success, "Computation was successful.")
      .value("NumericalIssue", Eigen::NumericalIssue,
             "The provided data did not satisfy the prerequisites.")
      .value("NoConvergence", Eigen::NoConvergence,
             "Iterative procedure did not converge.")
      .value("InvalidInput", Eigen::InvalidInput,
             "The inputs are invalid, or the algorithm has been improperly "
             "called. "
             "When assertions are enabled, such errors trigger an assert.");
  using Eigen::DecompositionOptions;
#define _c(name) value(#name, DecompositionOptions::name)
  nb::enum_<DecompositionOptions>(m, "DecompositionOptions")
      ._c(ComputeFullU)
      ._c(ComputeThinU)
      ._c(ComputeFullV)
      ._c(ComputeThinV)
      ._c(EigenvaluesOnly)
      ._c(ComputeEigenvectors)
      ._c(Ax_lBx)
      ._c(ABx_lx)
      ._c(BAx_lx);
#undef _c
  using Eigen::TransformTraits;
#define _c(name) value(#name, TransformTraits::name)
  nb::enum_<TransformTraits>(m, "TransformTraits")
      ._c(Isometry)
      ._c(Affine)
      ._c(AffineCompact)
      ._c(Projective);
#undef _c
}
}  // namespace nanoeigenpy