14 double compose(
const Eigen::VectorXd &inputs)
const override;
15 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override;
25 double compose(
const Eigen::VectorXd &inputs)
const override
27 assert(inputs.size() == 1);
30 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
32 assert(inputs.size() == 1);
33 return Eigen::VectorXd::Constant(1, 1, -1.);
46 double compose(
const Eigen::VectorXd &inputs)
const override
48 assert(inputs.size() == 1);
51 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
53 assert(inputs.size() == 1);
54 return Eigen::VectorXd::Constant(1, 1, 1.);
65 double compose(
const Eigen::VectorXd &inputs)
const override
67 assert(inputs.size() == 1);
68 return std::log(inputs(0));
70 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
72 assert(inputs.size() == 1);
73 return Eigen::VectorXd::Constant(1, 1, 1. / inputs(0));
80 InequalityConstraintForm(
const std::vector<std::shared_ptr<AdjointForm>> &forms,
const Eigen::Vector2d &bounds,
const double power = 2);
84 double compose(
const Eigen::VectorXd &inputs)
const override;
85 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override;
98 double compose(
const Eigen::VectorXd &inputs)
const override {
return pow(inputs(0),
power_); }
99 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
101 Eigen::VectorXd
x(1);
116 double compose(
const Eigen::VectorXd &inputs)
const override {
return inputs(0) / inputs(1); }
117 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override
119 Eigen::VectorXd
x(2);
120 x << 1. / inputs(1), -inputs(0) / pow(inputs(1), 2);