20 double compose(
const Eigen::VectorXd &inputs)
const override;
21 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override;
31 double compose(
const Eigen::VectorXd &inputs)
const override
33 assert(inputs.size() == 1);
36 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
38 assert(inputs.size() == 1);
39 return Eigen::VectorXd::Constant(1, 1, -1.);
52 double compose(
const Eigen::VectorXd &inputs)
const override
54 assert(inputs.size() == 1);
57 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
59 assert(inputs.size() == 1);
60 return Eigen::VectorXd::Constant(1, 1, 1.);
71 double compose(
const Eigen::VectorXd &inputs)
const override
73 assert(inputs.size() == 1);
74 return std::log(inputs(0));
76 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
78 assert(inputs.size() == 1);
79 return Eigen::VectorXd::Constant(1, 1, 1. / inputs(0));
86 InequalityConstraintForm(
const std::vector<std::shared_ptr<AdjointForm>> &forms,
const Eigen::Vector2d &bounds,
const double power = 2);
90 double compose(
const Eigen::VectorXd &inputs)
const override;
91 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override;
104 double compose(
const Eigen::VectorXd &inputs)
const override {
return pow(inputs(0),
power_); }
105 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
107 Eigen::VectorXd
x(1);
122 double compose(
const Eigen::VectorXd &inputs)
const override {
return inputs(0) / inputs(1); }
123 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
125 Eigen::VectorXd
x(2);
126 x << 1. / inputs(1), -inputs(0) / pow(inputs(1), 2);