20 static IntervalVector fwd(
const IntervalVector& x1,
const IntervalVector& x2);
21 static VectorType fwd_natural(
const VectorType& x1,
const VectorType& x2);
22 static VectorType fwd_centered(
const VectorType& x1,
const VectorType& x2);
23 static void bwd(
const IntervalVector& y, IntervalVector& x1, IntervalVector& x2);
30 cross_prod(
const VectorExpr& x1,
const VectorExpr& x2)
32 return { std::make_shared<AnalyticOperationExpr<CrossProdOp,VectorType,VectorType,VectorType>>(x1,x2) };
37 inline IntervalVector CrossProdOp::fwd(
const IntervalVector& x1,
const IntervalVector& x2)
39 assert_release(x1.size() == 3 && x2.size() == 3);
41 x1[1]*x2[2] - x1[2]*x2[1],
42 x1[2]*x2[0] - x1[0]*x2[2],
43 x1[0]*x2[1] - x1[1]*x2[0]
47 inline VectorType CrossProdOp::fwd_natural(
const VectorType& x1,
const VectorType& x2)
51 x1.def_domain && x2.def_domain
55 inline VectorType CrossProdOp::fwd_centered(
const VectorType& x1,
const VectorType& x2)
61 x1.def_domain && x2.def_domain
65 inline void CrossProdOp::bwd([[maybe_unused]]
const IntervalVector& y, [[maybe_unused]] IntervalVector& x1, [[maybe_unused]] IntervalVector& x2)
67 assert_release(y.size() == 3 && x1.size() == 3 && x2.size() == 3);