#pragma once #include "op.h" namespace ctranslate2 { namespace ops { class Rotary : public Op { public: Rotary(const dim_t ndims, const bool interleave); void operator()(const StorageView& input, const StorageView& sin, const StorageView& cos, StorageView& output, bool is_transpose=true) const; private: const dim_t _ndims; const bool _interleave; template void compute(const StorageView& input, const StorageView& sin, const StorageView& cos, StorageView& output, bool is_transpose) const; }; } }