RasterProcessTool/GPUBaseLib/GPUTool/GPUDouble32.cuh

77 lines
2.2 KiB
Plaintext
Raw Permalink Normal View History

2025-03-11 01:31:03 +00:00
#ifndef __GPUDOUBLE32__H__
#define __GPUDOUBLE32__H__
// <20><><EFBFBD><EFBFBD>double32 struct ,ʹ<><CAB9>fp32ģ<32><C4A3>double
struct double32{
float high;
float low;
__device__ __host__ double32(float h = 0, float l = 0) : high(h), low(l) {}
};
extern __device__ double32 double_to_double32(double value);
extern __device__ __host__ double double32_to_double(const double32& value);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ļӷ<C4BC><D3B7><EFBFBD><EFBFBD><EFBFBD>
extern __device__ double32 double32_add(const double32& a, const double32& b);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern __device__ double32 double32_sub(const double32& a, const double32& b);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ij˷<C4B3><CBB7><EFBFBD><EFBFBD><EFBFBD>
extern __device__ double32 double32_mul(const double32& a, const double32& b);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern __device__ double32 double32_div(const double32& a, const double32& b);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> sin <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_sin(const double32& a);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> cos <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_cos(const double32& a);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> log2 <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_log2(const double32& a);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> log10 <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_log10(const double32& a);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> ln <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_ln(const double32& a);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> exp <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_exp(const double32& a);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> pow <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_pow(const double32& a, const double32& b);
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> sqrt <20><><EFBFBD><EFBFBD>
extern __device__ double32 double32_sqrt(const double32& a);
extern "C" GPUBASELIBAPI void test_double_to_double32();
extern "C" GPUBASELIBAPI void test_function(int operation, const char* operation_name);
extern "C" GPUBASELIBAPI void time_test_add();
extern "C" GPUBASELIBAPI void time_test_sub();
extern "C" GPUBASELIBAPI void time_test_mul();
extern "C" GPUBASELIBAPI void time_test_div();
extern "C" GPUBASELIBAPI void time_test_sin();
extern "C" GPUBASELIBAPI void time_test_cos();
extern "C" GPUBASELIBAPI void time_test_log2();
extern "C" GPUBASELIBAPI void time_test_log10();
extern "C" GPUBASELIBAPI void time_test_ln();
extern "C" GPUBASELIBAPI void time_test_exp();
extern "C" GPUBASELIBAPI void time_test_pow();
extern "C" GPUBASELIBAPI void time_test_sqrt();
#endif // !__GPUDOUBLE32__H__