@@ -44,15 +44,15 @@ using zip_common_type = vector<
44
44
* vec<float, 3> c = zip_common([](float x, float y){ return x + y; }, a, b); // returns [5.0f, 7.0f, 9.0f]
45
45
* ```
46
46
*/
47
- template <typename F, typename L, typename R>
47
+ template <typename Accuracy = default_policy, typename F, typename L, typename R>
48
48
KERNEL_FLOAT_INLINE zip_common_type<F, L, R> zip_common (F fun, const L& left, const R& right) {
49
49
using T = promoted_vector_value_type<L, R>;
50
50
using O = result_t <F, T, T>;
51
51
using E = broadcast_vector_extent_type<L, R>;
52
52
53
53
vector_storage<O, extent_size<E>> result;
54
54
55
- detail::default_map_impl< F, extent_size<E>, O, T, T>::call (
55
+ detail::map_impl<Accuracy, F, extent_size<E>, O, T, T>::call (
56
56
fun,
57
57
result.data (),
58
58
detail::convert_impl<vector_value_type<L>, vector_extent_type<L>, T, E>::call (
@@ -65,10 +65,17 @@ KERNEL_FLOAT_INLINE zip_common_type<F, L, R> zip_common(F fun, const L& left, co
65
65
return result;
66
66
}
67
67
68
- #define KERNEL_FLOAT_DEFINE_BINARY_FUN (NAME ) \
69
- template <typename L, typename R, typename C = promoted_vector_value_type<L, R>> \
70
- KERNEL_FLOAT_INLINE zip_common_type<ops::NAME<C>, L, R> NAME (L&& left, R&& right) { \
71
- return zip_common (ops::NAME<C> {}, static_cast <L&&>(left), static_cast <R&&>(right)); \
68
+ #define KERNEL_FLOAT_DEFINE_BINARY_FUN (NAME ) \
69
+ template < \
70
+ typename Accuracy = default_policy, \
71
+ typename L, \
72
+ typename R, \
73
+ typename C = promoted_vector_value_type<L, R>> \
74
+ KERNEL_FLOAT_INLINE zip_common_type<ops::NAME<C>, L, R> NAME (L&& left, R&& right) { \
75
+ return zip_common<Accuracy>( \
76
+ ops::NAME<C> {}, \
77
+ static_cast <L&&>(left), \
78
+ static_cast <R&&>(right)); \
72
79
}
73
80
74
81
#define KERNEL_FLOAT_DEFINE_BINARY (NAME, EXPR, EXPR_F64, EXPR_F32 ) \
0 commit comments