Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:46

0001 #pragma once
0002 
0003 #if defined(__CUDACC__) || defined(__CUDABE__)
0004 #    define SQUAD_METHOD __host__ __device__ __forceinline__
0005 #else
0006 #    define SQUAD_METHOD inline 
0007 #endif
0008 
0009 
0010 union dquad
0011 {
0012     double4    f ; 
0013     longlong4  i ; 
0014     ulonglong4 u ; 
0015 };
0016 
0017 
0018 
0019 struct dquad4 
0020 { 
0021     dquad q0 ; 
0022     dquad q1 ; 
0023     dquad q2 ; 
0024     dquad q3 ;
0025 
0026     SQUAD_METHOD void zero();
0027     SQUAD_METHOD double* data() ;
0028     SQUAD_METHOD const double* cdata() const ;
0029 };
0030 
0031 SQUAD_METHOD void dquad4::zero() 
0032 {
0033     q0.u.x = 0 ; q0.u.y = 0 ; q0.u.z = 0 ; q0.u.w = 0 ; 
0034     q1.u.x = 0 ; q1.u.y = 0 ; q1.u.z = 0 ; q1.u.w = 0 ; 
0035     q2.u.x = 0 ; q2.u.y = 0 ; q2.u.z = 0 ; q2.u.w = 0 ; 
0036     q3.u.x = 0 ; q3.u.y = 0 ; q3.u.z = 0 ; q3.u.w = 0 ; 
0037 } 
0038 
0039 SQUAD_METHOD double*       dquad4::data() {         return &q0.f.x ;  }
0040 SQUAD_METHOD const double* dquad4::cdata() const  { return &q0.f.x ;  }
0041 
0042 
0043 
0044 #if defined(__CUDACC__) || defined(__CUDABE__)
0045 #else
0046 
0047 
0048 inline std::ostream& operator<<(std::ostream& os, const dquad& q)  
0049 {
0050     os  
0051        << "f " << q.f  
0052     //   << "i " << q.i  
0053     //   << "u " << q.u  
0054        ;   
0055     return os; 
0056 }
0057 
0058 
0059 inline std::ostream& operator<<(std::ostream& os, const dquad4& v)  
0060 {
0061     os 
0062        << std::endl  
0063        << v.q0.f 
0064        << std::endl 
0065        << v.q1.f 
0066        << std::endl 
0067        << v.q2.f 
0068        << std::endl  
0069        << v.q3.f 
0070        << std::endl 
0071        ;   
0072     return os; 
0073 }
0074 
0075 #endif
0076 
0077 
0078