From ee7dbcbafd23fa187c8b6a4c5e523a49043e51b2 Mon Sep 17 00:00:00 2001 From: impressionyang Date: Wed, 31 Jul 2024 21:55:05 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E2=9C=85=20=E5=A2=9E=E7=9B=8A?= =?UTF-8?q?=E8=AE=A1=E7=AE=97OK=20update:=20=E2=9C=85=20Makefile=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0math=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- main.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 037f11f..b38cdea 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ INC_DIRS := $(wordlist 1, $(words $(INC_DIRS)), $(INC_DIRS)) # compile job all : mkdir -p $(BUILD_DIR) - $(CC) -fdiagnostics-color=always -g $(SOURCES) $(HEADERS) $(INC_DIRS) -o $(BUILD_DIR)/$(PROJECT) + $(CC) -fdiagnostics-color=always -g -lm $(SOURCES) $(HEADERS) $(INC_DIRS) -o $(BUILD_DIR)/$(PROJECT) # virtual clean job .PHONY : clean diff --git a/main.c b/main.c index 3c9e4a1..aa49880 100644 --- a/main.c +++ b/main.c @@ -1,7 +1,91 @@ #include +#include +#include +#define Q_MAX (31) +#define GAIN_ARRAY_LEN (31) + +uint8_t data_q[GAIN_ARRAY_LEN] = { 0 }; +int32_t data_gain_scale[GAIN_ARRAY_LEN] = { 0 }; +float data_gain_positive[GAIN_ARRAY_LEN] = { + 1.000000000, 1.12201845, 1.25892541, 1.41253754, 1.58489319, 1.77827941, 1.99526231, 2.23872114, + 2.51188643, 2.81838293, 3.16227766, 3.54813389, 3.98107171, 4.46683592, 5.01187234, 5.62341325, + 6.30957344, 7.07945784, 7.94328235, 8.91250938, 10.00000000, 11.22018454, 12.58925412, 14.12537545, + 15.84893192, 17.78279410, 19.95262315, 22.38721139, 25.11886432, 28.18382931, 31.62277660 +}; + +float data_gain_negative[GAIN_ARRAY_LEN] = { + 1.000000000, 0.891250938, 0.794328235, 0.707945784, 0.630957344, 0.562341325, 0.501187234, 0.446683592, + 0.398107171, 0.354813389, 0.316227766, 0.281838293, 0.251188643, 0.223872114, 0.199526231, 0.177827941, + 0.158489319, 0.141253754, 0.125892541, 0.112201845, 0.100000000, 0.089125094, 0.079432823, 0.070794578, + 0.063095734, 0.056234133, 0.050118723, 0.044668359, 0.039810717, 0.035481339, 0.031622777 +}; int main(int argc, char** argv) { printf("hello world!\r\n"); + + int i = 0, j = 0; + int32_t q_gain_max_scale = pow(2, Q_MAX + 1); + uint8_t q_shift = 0; + float data_temp = 0; + printf("max q gain scale is %d\r\n", q_gain_max_scale); + + printf("\r\n//===============calc positive===========================\r\n"); + + for (i = 0; i < GAIN_ARRAY_LEN; i++) { + data_temp = data_gain_positive[i]; + q_shift = 0; + for (j = 0; j < Q_MAX; j++) { + data_temp = data_temp * 2; + if (data_temp > q_gain_max_scale) { + // printf("data temp = %f, gain max = %d, q = %d \r\n", data_temp, q_gain_max_scale, j); + break; + } + } + q_shift = (j >= Q_MAX) ? j - 1: j; + data_q[i] = q_shift; + data_gain_scale[i] = (int32_t)(data_temp / 2); + } + + printf("int32_t positive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN); + for (i = 0; i < GAIN_ARRAY_LEN; i++) { + printf("%d, ", data_gain_scale[i]); + } + printf("\r\n};\r\n"); + + printf("uint8_t positive_q_array[%d] = {\r\n", GAIN_ARRAY_LEN); + for (i = 0; i < GAIN_ARRAY_LEN; i++) { + printf("%d, ", data_q[i]); + } + printf("\r\n};\r\n"); + + printf("\r\n//===============calc negative===========================\r\n"); + + for (i = 0; i < GAIN_ARRAY_LEN; i++) { + data_temp = data_gain_negative[i]; + q_shift = 0; + for (j = 0; j < Q_MAX; j++) { + data_temp = data_temp * 2; + if (data_temp > q_gain_max_scale) { + break; + } + } + q_shift = (j >= Q_MAX) ? j - 1: j; + data_q[i] = q_shift; + data_gain_scale[i] = (int32_t)(data_temp / 2); + } + + printf("int32_t negetive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN); + for (i = 0; i < GAIN_ARRAY_LEN; i++) { + printf("%d, ", data_gain_scale[i]); + } + printf("\r\n};\r\n"); + + printf("uint8_t negetive_q_array[%d] = {\r\n", GAIN_ARRAY_LEN); + for (i = 0; i < GAIN_ARRAY_LEN; i++) { + printf("%d, ", data_q[i]); + } + printf("\r\n};\r\n"); + return 0; } \ No newline at end of file