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 { assert(inputs.size() == 1);
return -inputs(0); }
26 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override { assert(inputs.size() == 1);
return Eigen::VectorXd::Constant(1, 1, -1.); }
38 double compose(
const Eigen::VectorXd &inputs)
const override { assert(inputs.size() == 1);
return alpha_ + inputs(0); }
39 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override { assert(inputs.size() == 1);
return Eigen::VectorXd::Constant(1, 1, 1.); }
49 double compose(
const Eigen::VectorXd &inputs)
const override { assert(inputs.size() == 1);
return std::log(inputs(0)); }
50 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override { assert(inputs.size() == 1);
return Eigen::VectorXd::Constant(1, 1, 1. / inputs(0)); }
56 InequalityConstraintForm(
const std::vector<std::shared_ptr<AdjointForm>> &forms,
const Eigen::Vector2d &bounds,
const double power = 2);
60 double compose(
const Eigen::VectorXd &inputs)
const override;
61 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override;
74 double compose(
const Eigen::VectorXd &inputs)
const override {
return pow(inputs(0),
power_); }
75 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override { Eigen::VectorXd
x(1);
x(0) =
power_ * pow(inputs(0),
power_ - 1);
return x; }
87 double compose(
const Eigen::VectorXd &inputs)
const override {
return inputs(0) / inputs(1); }
88 Eigen::VectorXd
compose_grad(
const Eigen::VectorXd &inputs)
const override { Eigen::VectorXd
x(2);
x << 1. / inputs(1), -inputs(0) / pow(inputs(1), 2);
return x; }