js8544 commented on code in PR #39158:
URL: https://github.com/apache/arrow/pull/39158#discussion_r1421616243


##########
cpp/src/arrow/compute/kernels/base_arithmetic_internal.h:
##########
@@ -426,6 +426,45 @@ struct DivideChecked {
   }
 };
 
+struct FloatingDivide {
+  template <typename T, typename Arg0, typename Arg1>
+  static enable_if_floating_value<Arg0> Call(KernelContext*, Arg0 left, Arg1 
right,
+                                             Status*) {
+    return left / right;
+  }
+
+  template <typename T, typename Arg0, typename Arg1>
+  static enable_if_integer_value<Arg0, double> Call(KernelContext* ctx, Arg0 
left,
+                                                    Arg1 right, Status* st) {
+    static_assert(std::is_same<Arg0, Arg1>::value);
+    return Call<double>(ctx, static_cast<double>(left), 
static_cast<double>(right), st);
+  }
+
+  // TODO: Add decimal
+};
+
+struct FloatingDivideChecked {
+  template <typename T, typename Arg0, typename Arg1>
+  static enable_if_integer_value<Arg0, double> Call(KernelContext* ctx, Arg0 
left,
+                                                    Arg1 right, Status* st) {
+    static_assert(std::is_same<Arg0, Arg1>::value);
+    return Call<double>(ctx, static_cast<double>(left), 
static_cast<double>(right), st);
+  }
+
+  template <typename T, typename Arg0, typename Arg1>
+  static enable_if_floating_value<Arg0> Call(KernelContext*, Arg0 left, Arg1 
right,
+                                             Status* st) {
+    static_assert(std::is_same<T, Arg0>::value && std::is_same<T, 
Arg1>::value);
+    if (ARROW_PREDICT_FALSE(right == 0)) {
+      *st = Status::Invalid("divide by zero");
+      return 0;
+    }
+    return left / right;
+  }

Review Comment:
   Sure! Updated.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to