28 const auto ecc_BOTH_NON_INF = (
FF(1) - in.get(C::ecc_p_is_inf)) * (
FF(1) - in.get(C::ecc_q_is_inf));
29 const auto ecc_EITHER_INF = ((in.get(C::ecc_p_is_inf) + in.get(C::ecc_q_is_inf)) -
FF(2) * ecc_BOTH_INF);
32 using View =
typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
33 auto tmp =
static_cast<View
>(in.get(C::ecc_sel)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_sel)));
37 using View =
typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
38 auto tmp =
static_cast<View
>(in.get(C::ecc_double_op)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_double_op)));
42 using View =
typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
43 auto tmp =
static_cast<View
>(in.get(C::ecc_add_op)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_add_op)));
47 using View =
typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
48 auto tmp = (
static_cast<View
>(in.get(C::ecc_sel)) -
49 (
static_cast<View
>(in.get(C::ecc_double_op)) +
static_cast<View
>(in.get(C::ecc_add_op)) +
50 CView(ecc_INVERSE_PRED)));
54 using View =
typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
55 auto tmp =
static_cast<View
>(in.get(C::ecc_p_is_inf)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_p_is_inf)));
59 using View =
typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
60 auto tmp =
static_cast<View
>(in.get(C::ecc_q_is_inf)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_q_is_inf)));
64 using View =
typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
65 auto tmp =
static_cast<View
>(in.get(C::ecc_r_is_inf)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_r_is_inf)));
69 using View =
typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
70 auto tmp =
static_cast<View
>(in.get(C::ecc_x_match)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_x_match)));
74 using View =
typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
75 auto tmp =
static_cast<View
>(in.get(C::ecc_sel)) *
76 ((
CView(ecc_X_DIFF) * (
static_cast<View
>(in.get(C::ecc_x_match)) *
77 (
FF(1) -
static_cast<View
>(in.get(C::ecc_inv_x_diff))) +
78 static_cast<View
>(in.get(C::ecc_inv_x_diff))) -
80 static_cast<View
>(in.get(C::ecc_x_match)));
84 using View =
typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
85 auto tmp =
static_cast<View
>(in.get(C::ecc_y_match)) * (
FF(1) -
static_cast<View
>(in.get(C::ecc_y_match)));
89 using View =
typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
90 auto tmp =
static_cast<View
>(in.get(C::ecc_sel)) *
91 ((
CView(ecc_Y_DIFF) * (
static_cast<View
>(in.get(C::ecc_y_match)) *
92 (
FF(1) -
static_cast<View
>(in.get(C::ecc_inv_y_diff))) +
93 static_cast<View
>(in.get(C::ecc_inv_y_diff))) -
95 static_cast<View
>(in.get(C::ecc_y_match)));
99 using View =
typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
100 auto tmp = (
static_cast<View
>(in.get(C::ecc_double_op)) -
101 static_cast<View
>(in.get(C::ecc_x_match)) *
static_cast<View
>(in.get(C::ecc_y_match)));
105 using View =
typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
106 auto tmp =
static_cast<View
>(in.get(C::ecc_double_op)) *
107 (
static_cast<View
>(in.get(C::ecc_p_is_inf)) -
static_cast<View
>(in.get(C::ecc_q_is_inf)));
111 using View =
typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
113 (
FF(1) -
static_cast<View
>(in.get(C::ecc_result_infinity))) *
static_cast<View
>(in.get(C::ecc_double_op)) *
114 (
FF(2) *
static_cast<View
>(in.get(C::ecc_p_y)) *
static_cast<View
>(in.get(C::ecc_inv_2_p_y)) -
FF(1));
118 using View =
typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
119 auto tmp =
static_cast<View
>(in.get(C::ecc_sel)) *
120 (
static_cast<View
>(in.get(C::ecc_lambda)) -
121 (
static_cast<View
>(in.get(C::ecc_double_op)) *
FF(3) *
static_cast<View
>(in.get(C::ecc_p_x)) *
122 static_cast<View
>(in.get(C::ecc_p_x)) *
static_cast<View
>(in.get(C::ecc_inv_2_p_y)) +
123 static_cast<View
>(in.get(C::ecc_add_op)) *
CView(ecc_Y_DIFF) *
124 static_cast<View
>(in.get(C::ecc_inv_x_diff))));
128 using View =
typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
130 (
static_cast<View
>(in.get(C::ecc_use_computed_result)) -
131 static_cast<View
>(in.get(C::ecc_sel)) *
CView(ecc_BOTH_NON_INF) * (
FF(1) -
CView(ecc_INVERSE_PRED)));
135 using View =
typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
136 auto tmp = (
static_cast<View
>(in.get(C::ecc_result_infinity)) -
137 (
CView(ecc_INVERSE_PRED) *
CView(ecc_BOTH_NON_INF) +
CView(ecc_BOTH_INF)));
141 using View =
typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
142 auto tmp =
static_cast<View
>(in.get(C::ecc_sel)) *
143 (((
static_cast<View
>(in.get(C::ecc_r_x)) -
144 CView(ecc_EITHER_INF) *
145 (
static_cast<View
>(in.get(C::ecc_p_is_inf)) *
static_cast<View
>(in.get(C::ecc_q_x)) +
146 static_cast<View
>(in.get(C::ecc_q_is_inf)) *
static_cast<View
>(in.get(C::ecc_p_x)))) -
147 static_cast<View
>(in.get(C::ecc_result_infinity)) *
CView(ecc_INFINITY_X)) -
148 static_cast<View
>(in.get(C::ecc_use_computed_result)) *
CView(ecc_COMPUTED_R_X));
152 using View =
typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
153 auto tmp =
static_cast<View
>(in.get(C::ecc_sel)) *
154 (((
static_cast<View
>(in.get(C::ecc_r_y)) -
155 CView(ecc_EITHER_INF) *
156 (
static_cast<View
>(in.get(C::ecc_p_is_inf)) *
static_cast<View
>(in.get(C::ecc_q_y)) +
157 static_cast<View
>(in.get(C::ecc_q_is_inf)) *
static_cast<View
>(in.get(C::ecc_p_y)))) -
158 static_cast<View
>(in.get(C::ecc_result_infinity)) *
CView(ecc_INFINITY_Y)) -
159 static_cast<View
>(in.get(C::ecc_use_computed_result)) *
CView(ecc_COMPUTED_R_Y));
163 using View =
typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
164 auto tmp =
static_cast<View
>(in.get(C::ecc_sel)) *
165 (
static_cast<View
>(in.get(C::ecc_r_is_inf)) -
static_cast<View
>(in.get(C::ecc_result_infinity)));