init
This commit is contained in:
87
old/9apr26_prerefactor/include/amsculib2/cuvect2.hpp
Normal file
87
old/9apr26_prerefactor/include/amsculib2/cuvect2.hpp
Normal file
@ -0,0 +1,87 @@
|
||||
#ifndef __CUVECT2_HPP__
|
||||
#define __CUVECT2_HPP__
|
||||
|
||||
namespace amscuda
|
||||
{
|
||||
|
||||
class cuvect2
|
||||
{
|
||||
public:
|
||||
double x;
|
||||
double y;
|
||||
|
||||
|
||||
__host__ __device__ cuvect2();
|
||||
__host__ __device__ ~cuvect2();
|
||||
__host__ __device__ cuvect2(double _x, double _y);
|
||||
|
||||
__host__ __device__ double& operator[](const int I);
|
||||
__host__ __device__ const double& operator[](const int I) const;
|
||||
|
||||
__host__ __device__ cuvect2 operator+(cuvect2 lhs);
|
||||
__host__ __device__ cuvect2 operator-(cuvect2 lhs);
|
||||
__host__ __device__ cuvect2 operator*(double lhs);
|
||||
__host__ __device__ cuvect2 operator/(double lhs);
|
||||
__host__ __device__ friend cuvect2 operator-(cuvect2 rhs);
|
||||
};
|
||||
|
||||
class cumat2
|
||||
{
|
||||
public:
|
||||
double dat[4];
|
||||
|
||||
__host__ __device__ cumat2();
|
||||
__host__ __device__ ~cumat2();
|
||||
__host__ __device__ double& operator[](const int I);
|
||||
__host__ __device__ double& operator()(const int I, const int J);
|
||||
__host__ __device__ double& at(const int I, const int J);
|
||||
|
||||
__host__ __device__ cumat2 operator+(cumat2 lhs);
|
||||
__host__ __device__ cumat2 operator-(cumat2 lhs);
|
||||
__host__ __device__ cumat2 operator*(double lhs);
|
||||
__host__ __device__ cumat2 operator/(double lhs);
|
||||
__host__ __device__ cuvect2 operator*(cuvect2 lhs);
|
||||
__host__ __device__ cumat2 operator*(cumat2 lhs);
|
||||
__host__ __device__ friend cumat2 operator-(cumat2 rhs);
|
||||
|
||||
__host__ __device__ double det();
|
||||
__host__ __device__ cumat2 transpose();
|
||||
__host__ __device__ cumat2 inverse();
|
||||
};
|
||||
|
||||
__host__ __device__ double cuvect2_dot(cuvect2 a, cuvect2 b);
|
||||
__host__ __device__ double cuvect2_cross(cuvect2 a, cuvect2 b);
|
||||
__host__ __device__ double cuvect2_norm(cuvect2 a);
|
||||
__host__ __device__ cuvect2 cuvect2_normalize(cuvect2 a);
|
||||
__host__ __device__ cuvect2 cuvect2_proj(cuvect2 a, cuvect2 b);
|
||||
|
||||
//2x2 matrix operations
|
||||
//matrix order is assumed to be mat[I,J] = mat[I+3*J]
|
||||
|
||||
//transpose a 2x2 matrix in place
|
||||
__host__ __device__ void mat2_transpose(double *mat2inout);
|
||||
|
||||
//copies src to dest
|
||||
__host__ __device__ void mat2_copy(double *mat2_dest, const double *mat2_src);
|
||||
|
||||
//inverts mat?inout[4]
|
||||
__host__ __device__ void mat2_inverse(double *mat2inout);
|
||||
|
||||
//rotatin matrix from angle
|
||||
__host__ __device__ void mat2_rot_from_angle(double angle, double *mat2);
|
||||
|
||||
//multiplies c = a*b
|
||||
__host__ __device__ void mat2_mult(double *mat2a, double *mat2b, double *mat2c);
|
||||
|
||||
// ret = a*b
|
||||
__host__ __device__ cuvect2 mat2_mult(double *mat2a, cuvect2 b);
|
||||
|
||||
|
||||
|
||||
void test_cuvect2_1();
|
||||
|
||||
|
||||
}; //end namespace amscuda
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user