PeriDyno 1.0.0
Loading...
Searching...
No Matches
Arithmetic.cu
Go to the documentation of this file.
1#include "Arithmetic.h"
2#include "Function2Pt.h"
3
4namespace dyno {
5
6 template<typename T>
7 Arithmetic<T>::Arithmetic(int n)
8 : m_reduce(NULL)
9 {
10 m_reduce = Reduction<T>::Create(n);
11 m_buf.resize(n);
12 }
13
14 template<typename T>
15 Arithmetic<T>::~Arithmetic()
16 {
17 if (m_reduce != NULL)
18 {
19 delete m_reduce;
20 }
21 //if (m_buf != NULL)
22 m_buf.clear();
23 }
24
25
26 template<typename T>
27 Arithmetic<T>* Arithmetic<T>::Create(int n)
28 {
29 return new Arithmetic<T>(n);
30 }
31
32 template<typename T>
33 T Arithmetic<T>::Dot(DArray<T>& xArr, DArray<T>& yArr)
34 {
35 if (m_buf.size() != xArr.size())
36 {
37 m_buf.resize(xArr.size());
38 }
39 Function2Pt::multiply(m_buf, xArr, yArr);
40 return m_reduce->accumulate(m_buf.begin(), m_buf.size());
41 }
42
43 template class Arithmetic<int>;
44 template class Arithmetic<float>;
45 template class Arithmetic<double>;
46}