Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<typename T, unsigned long N>
- class CudaVec {
- public:
- CUDA_CALLABLE CudaVec(const T& val=T());
- CUDA_CALLABLE CudaVec(T array[N]);
- CUDA_CALLABLE CudaVec(const T& x, const T& y, const T& z);
- CUDA_CALLABLE CudaVec(const CudaVec<T,N>& other) = default;
- CUDA_CALLABLE CudaVec(CudaVec<T,N>&& other) = default;
- CUDA_CALLABLE virtual ~CudaVec() = default;
- CUDA_CALLABLE CudaVec<T,N>& operator=(const CudaVec<T,N>& right) = default;
- CUDA_CALLABLE CudaVec<T,N>& operator=(CudaVec<T,N>&& right) = default;
- CUDA_CALLABLE CudaVec<T,N> operator+(const CudaVec<T,N>& right) const;
- CUDA_CALLABLE CudaVec<T,N> operator-(const CudaVec<T,N>& right) const;
- CUDA_CALLABLE CudaVec<T,N> operator+(const T& right) const;
- CUDA_CALLABLE CudaVec<T,N> operator-(const T& right) const;
- CUDA_CALLABLE CudaVec<T,N> operator*(const T& right) const;
- CUDA_CALLABLE CudaVec<T,N> operator/(const T& right) const;
- CUDA_CALLABLE CudaVec<T,N> operator-() const;
- CUDA_CALLABLE CudaVec<T,N>& operator+=(const CudaVec<T,N>& right);
- CUDA_CALLABLE CudaVec<T,N>& operator-=(const CudaVec<T,N>& right);
- CUDA_CALLABLE CudaVec<T,N>& operator+=(const T& right);
- CUDA_CALLABLE CudaVec<T,N>& operator-=(const T& right);
- CUDA_CALLABLE CudaVec<T,N>& operator*=(const T& right);
- CUDA_CALLABLE CudaVec<T,N>& operator/=(const T& right);
- CUDA_CALLABLE CudaVec<T,3> cross(const CudaVec<T,3>& right) const;
- CUDA_CALLABLE CudaVec<T,N> dot(const CudaVec<T,N>& right) const;
- CUDA_CALLABLE T norm2() const;
- CUDA_CALLABLE T norm() const;
- CUDA_CALLABLE T normalize();
- CUDA_CALLABLE const T& get(unsigned long index) const;
- CUDA_CALLABLE const T& x() const;
- CUDA_CALLABLE const T& y() const;
- CUDA_CALLABLE const T& z() const;
- CUDA_CALLABLE const T& operator[](unsigned long index) const;
- CUDA_CALLABLE T& operator[](unsigned long index);
- private:
- T elems[N];
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement