16479 {
16480 const T* vec = v->vec()->vds().data();
16481 const std::size_t
vec_size = v->vec()->size();
16482
16484
16485 if (
vec_size <=
static_cast<std::size_t
>(
lud.batch_size))
16486 {
16489
16491 {
16492 #define case_stmt(N,fall_through) \
16493 case N : result *= vec[i++]; \
16494 fall_through \
16495
16496 #ifndef exprtk_disable_superscalar_unroll
16503 #endif
16506 }
16507
16508 #undef case_stmt
16509
16510 return result;
16511 }
16512
16514 T(1),
T(1),
T(1),
T(1),
T(1),
T(1),
T(1),
T(1),
16515 T(1),
T(1),
T(1),
T(1),
T(1),
T(1),
T(1),
T(1)
16516 };
16517
16518 const T* upper_bound = vec +
lud.upper_bound;
16519
16520 while (vec < upper_bound)
16521 {
16522 #define exprtk_loop(N) \
16523 r[N] *= vec[N]; \
16524
16527 #ifndef exprtk_disable_superscalar_unroll
16534 #endif
16535
16536 vec +=
lud.batch_size;
16537 }
16538
16540
16541 switch (
lud.remainder)
16542 {
16543 #define case_stmt(N,fall_through) \
16544 case N : r[0] *= vec[i++]; \
16545 fall_through \
16546
16547 #ifndef exprtk_disable_superscalar_unroll
16554 #endif
16557 }
16558
16559 #undef exprtk_loop
16560 #undef case_stmt
16561
16562 return (r[ 0] * r[ 1] * r[ 2] * r[ 3])
16563 #ifndef exprtk_disable_superscalar_unroll
16564 * (r[ 4] * r[ 5] * r[ 6] * r[ 7])
16565 * (r[ 8] * r[ 9] * r[10] * r[11])
16566 * (r[12] * r[13] * r[14] * r[15])
16568 ;
16569 }
#define exprtk_fallthrough
bool match_impl(const Iterator pattern_begin, const Iterator pattern_end, const Iterator data_begin, const Iterator data_end, const typename std::iterator_traits< Iterator >::value_type &zero_or_more, const typename std::iterator_traits< Iterator >::value_type &exactly_one)