20 concept IsScalar = std::is_same_v<S,ScalarExpr> || std::is_same_v<S,ScalarVar> ||
21 std::is_same_v<typename ValueType<S>::Type,ScalarType>;
23 struct ScalarExprList :
public AnalyticExprWrapper<VectorType>
27 ScalarExprList(
const S1& y1)
28 : AnalyticExprWrapper<VectorType>(vec(to_ScalarExpr(y1)))
31 template<
typename S1,
typename S2>
32 requires IsScalar<S1> && IsScalar<S2>
33 ScalarExprList(
const S1& y1,
const S2& y2)
34 : AnalyticExprWrapper<VectorType>(vec(
35 to_ScalarExpr(y1),to_ScalarExpr(y2)
39 template<
typename S1,
typename S2,
typename S3>
40 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3>
41 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3)
42 : AnalyticExprWrapper<VectorType>(vec(
43 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3)
47 template<
typename S1,
typename S2,
typename S3,
typename S4>
48 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3> && IsScalar<S4>
49 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3,
const S4& y4)
50 : AnalyticExprWrapper<VectorType>(vec(
51 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3), to_ScalarExpr(y4)
55 template<
typename S1,
typename S2,
typename S3,
typename S4,
typename S5>
56 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3> && IsScalar<S4> && IsScalar<S5>
57 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3,
const S4& y4,
const S5& y5)
58 : AnalyticExprWrapper<VectorType>(vec(
59 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3), to_ScalarExpr(y4), to_ScalarExpr(y5)
63 template<
typename S1,
typename S2,
typename S3,
typename S4,
typename S5,
65 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3> && IsScalar<S4> && IsScalar<S5>
67 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3,
const S4& y4,
const S5& y5,
69 : AnalyticExprWrapper<VectorType>(vec(
70 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3), to_ScalarExpr(y4), to_ScalarExpr(y5),
75 template<
typename S1,
typename S2,
typename S3,
typename S4,
typename S5,
76 typename S6,
typename S7>
77 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3> && IsScalar<S4> && IsScalar<S5>
78 && IsScalar<S6> && IsScalar<S7>
79 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3,
const S4& y4,
const S5& y5,
80 const S6& y6,
const S7& y7)
81 : AnalyticExprWrapper<VectorType>(vec(
82 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3), to_ScalarExpr(y4), to_ScalarExpr(y5),
83 to_ScalarExpr(y6), to_ScalarExpr(y7)
87 template<
typename S1,
typename S2,
typename S3,
typename S4,
typename S5,
88 typename S6,
typename S7,
typename S8>
89 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3> && IsScalar<S4> && IsScalar<S5>
90 && IsScalar<S6> && IsScalar<S7> && IsScalar<S8>
91 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3,
const S4& y4,
const S5& y5,
92 const S6& y6,
const S7& y7,
const S8& y8)
93 : AnalyticExprWrapper<VectorType>(vec(
94 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3), to_ScalarExpr(y4), to_ScalarExpr(y5),
95 to_ScalarExpr(y6), to_ScalarExpr(y7), to_ScalarExpr(y8)
99 template<
typename S1,
typename S2,
typename S3,
typename S4,
typename S5,
100 typename S6,
typename S7,
typename S8,
typename S9>
101 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3> && IsScalar<S4> && IsScalar<S5>
102 && IsScalar<S6> && IsScalar<S7> && IsScalar<S8> && IsScalar<S9>
103 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3,
const S4& y4,
const S5& y5,
104 const S6& y6,
const S7& y7,
const S8& y8,
const S9& y9)
105 : AnalyticExprWrapper<VectorType>(vec(
106 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3), to_ScalarExpr(y4), to_ScalarExpr(y5),
107 to_ScalarExpr(y6), to_ScalarExpr(y7), to_ScalarExpr(y8), to_ScalarExpr(y9)
111 template<
typename S1,
typename S2,
typename S3,
typename S4,
typename S5,
112 typename S6,
typename S7,
typename S8,
typename S9,
typename S10>
113 requires IsScalar<S1> && IsScalar<S2> && IsScalar<S3> && IsScalar<S4> && IsScalar<S5>
114 && IsScalar<S6> && IsScalar<S7> && IsScalar<S8> && IsScalar<S9> && IsScalar<S10>
115 ScalarExprList(
const S1& y1,
const S2& y2,
const S3& y3,
const S4& y4,
const S5& y5,
116 const S6& y6,
const S7& y7,
const S8& y8,
const S9& y9,
const S10& y10)
117 : AnalyticExprWrapper<VectorType>(vec(
118 to_ScalarExpr(y1), to_ScalarExpr(y2), to_ScalarExpr(y3), to_ScalarExpr(y4), to_ScalarExpr(y5),
119 to_ScalarExpr(y6), to_ScalarExpr(y7), to_ScalarExpr(y8), to_ScalarExpr(y9), to_ScalarExpr(y10)
123 const ScalarExpr& to_ScalarExpr(
const ScalarExpr& e)
129 requires std::is_same_v<typename ValueType<T>::Type,ScalarType>
130 ScalarExpr to_ScalarExpr(
const T& e)
132 return const_value(e);