         VisitFloatingPointDtype(out.dtype(), [&](auto pt) {
             using T = typename decltype(pt)::type;
             using CudaType = cuda_internal::DataType<T>;
-<<<<<<< HEAD
             auto op = cuda::Sinh<CudaType>{};
             auto functor = UnaryOpImpl<CudaType, decltype(op)>{op};
             Elementwise<const T, T>(functor, x_cast, out);
-=======
-            Elementwise<const T, T>(CudaUnaryOp<CudaType>{cuda::Sinh}, x_cast, out);
->>>>>>> add-a/sinh-a/cosh
         });
     }
 };

    UnaryOpImpl(Op op) : op{op} {}

    __device__ void operator()(int64_t /*i*/, CudaType x, CudaType& out) { out = op(x); }
=======
template <typename T>
struct CudaUnaryOp {
    T (*func)(T);

    CudaUnaryOp(T (*func)(T)) : func{func} {}

    __device__ void operator()(int64_t /*i*/, T x, T& out) { out = func(x); }
>>>>>>> add-a/sinh-a/cosh
};

class CudaSinhOp : public SinhOp {

        VisitFloatingPointDtype(out.dtype(), [&](auto pt) {
            using T = typename decltype(pt)::type;
            using CudaType = cuda_internal::DataType<T>;
            auto op = cuda::Arccosh<CudaType>{};
            auto functor = UnaryOpImpl<CudaType, decltype(op)>{op};
            Elementwise<const T, T>(functor, x_cast, out);
        });
    }
};
