dedup.
This commit is contained in:
parent
64b2ce979c
commit
5b72d547e7
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cosdata.c,v 1.2 2017/01/30 14:55:17 jakllsch Exp $ */
|
||||
/* $NetBSD: cosdata.c,v 1.3 2017/01/30 15:50:21 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2015 - 2016 Nathanial Sloss <nathanialsloss@yahoo.com.au>
|
||||
@ -34,7 +34,7 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
static const double sbc8_coeffs[] = {
|
||||
static const double sbc_coeffs8[] = {
|
||||
0.00000000e+00, 1.56575398e-04, 3.43256425e-04, 5.54620202e-04,
|
||||
8.23919506e-04, 1.13992507e-03, 1.47640169e-03, 1.78371725e-03,
|
||||
2.01182542e-03, 2.10371989e-03, 1.99454554e-03, 1.61656283e-03,
|
||||
@ -57,7 +57,7 @@ static const double sbc8_coeffs[] = {
|
||||
8.23919506e-04, 5.54620202e-04, 3.43256425e-04, 1.56575398e-04,
|
||||
};
|
||||
|
||||
static const double sbc4_coeffs[] = {
|
||||
static const double sbc_coeffs4[] = {
|
||||
0.00000000e+00, 5.36548976e-04, 1.49188357e-03, 2.73370904e-03,
|
||||
3.83720193e-03, 3.89205149e-03, 1.86581691e-03,-3.06012286e-03,
|
||||
1.09137620e-02, 2.04385087e-02, 2.88757392e-02, 3.21939290e-02,
|
||||
@ -70,133 +70,71 @@ static const double sbc4_coeffs[] = {
|
||||
3.83720193e-03, 2.73370904e-03, 1.49188357e-03, 5.36548976e-04,
|
||||
};
|
||||
|
||||
#define COEFFS_MULTI (float)(1 << 12)
|
||||
#define SI_MULTI (float)512
|
||||
#define COEFFS_MULTI (1 << 12)
|
||||
#define SI_MULTI 512
|
||||
|
||||
static void
|
||||
arrayprint(const char *name, const double *arr, size_t len)
|
||||
{
|
||||
size_t k, count;
|
||||
|
||||
printf("static const int32_t %s[] = {\n\t", name);
|
||||
for (count = k = 0; k < len; k++, count++) {
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n\t");
|
||||
printf("%d, ", (int)roundf((float)arr[k] * COEFFS_MULTI));
|
||||
}
|
||||
printf("\n};\n");
|
||||
}
|
||||
|
||||
#define ARRAYPRINT(a) arrayprint(#a, a, sizeof(a) / sizeof(a[0]))
|
||||
|
||||
static void
|
||||
cosprint(int lim, int sgn)
|
||||
{
|
||||
size_t count, i, k;
|
||||
size_t mi = lim * 4;
|
||||
size_t mk = mi * 2;
|
||||
int dk = sgn * lim * 2;
|
||||
double mp = M_PI_4 / lim;
|
||||
float val;
|
||||
|
||||
printf("static const int32_t cos%sdata%zu[%zu][%zu] = {\n\t",
|
||||
sgn == -1 ? "" : "dec", mi, mi, mk);
|
||||
|
||||
for (count = 0, i = 0; i < mi; i++) {
|
||||
for (k = 0; k < mk; k++, count++) {
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n\t");
|
||||
if (k == 0)
|
||||
printf("{ ");
|
||||
|
||||
val = cosf((i + 0.5) * ((int)k + dk) * mp);
|
||||
printf("%d, ", (int)roundf(val * SI_MULTI));
|
||||
|
||||
if (k == mk - 1)
|
||||
printf("},");
|
||||
}
|
||||
}
|
||||
printf("\n};\n");
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
float S[8][16], val;
|
||||
int i,k, count = 0;
|
||||
int vali;
|
||||
|
||||
printf("/* sbc_coeffs.h - Automatically generated by cosdata.c. */\n"
|
||||
"\n");
|
||||
|
||||
vali = SI_MULTI;
|
||||
printf("#define SIMULTI\t%d\n\n", vali);
|
||||
vali = COEFFS_MULTI;
|
||||
printf("#define COEFFSMULTI\t%d\n\n", vali);
|
||||
printf("#define\tSIMULTI\t%d\n\n", SI_MULTI);
|
||||
printf("#define\tCOEFFSMULTI\t%d\n\n", COEFFS_MULTI);
|
||||
|
||||
printf("static const int32_t sbc_coeffs8[] = {\n ");
|
||||
for (k = 0;k < (int)(sizeof(sbc8_coeffs)/sizeof(sbc8_coeffs[0]));k++) {
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n ");
|
||||
val = (float)(sbc8_coeffs[k] * COEFFS_MULTI);
|
||||
vali = (int)roundf(val);
|
||||
printf("%d, ",vali);
|
||||
count++;
|
||||
}
|
||||
printf("\n};\n");
|
||||
ARRAYPRINT(sbc_coeffs8);
|
||||
ARRAYPRINT(sbc_coeffs4);
|
||||
|
||||
count = 0;
|
||||
printf("static const int32_t sbc_coeffs4[] = {\n ");
|
||||
for (k = 0;k < (int)(sizeof(sbc4_coeffs)/sizeof(sbc4_coeffs[0]));k++) {
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n ");
|
||||
val = (float)(sbc4_coeffs[k] * COEFFS_MULTI);
|
||||
vali = (int)roundf(val);
|
||||
printf("%d, ",vali);
|
||||
count++;
|
||||
}
|
||||
printf("\n};\n");
|
||||
|
||||
count = 0;
|
||||
printf("static const int32_t cosdata8[8][16] = {\n ");
|
||||
for (i = 0; i < 8; i++) {
|
||||
for (k = 0;k < 16;k++) {
|
||||
S[i][k] = cosf((float)((i+0.5)*(k-4)*(M_PI_4/2)));
|
||||
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n ");
|
||||
if (k == 0)
|
||||
printf("{ ");
|
||||
val = S[i][k] * SI_MULTI;
|
||||
vali = (int)roundf(val);
|
||||
printf("%d, ",vali);
|
||||
|
||||
if (k == 15)
|
||||
printf("},");
|
||||
count++;
|
||||
}
|
||||
}
|
||||
printf("\n};\n");
|
||||
|
||||
count = 0;
|
||||
printf("static const int32_t cosdata4[4][8] = {\n ");
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (k = 0;k < 8;k++) {
|
||||
S[i][k] = cosf((float)((i+0.5)*(k-2)*(M_PI_4)));
|
||||
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n ");
|
||||
if (k == 0)
|
||||
printf("{ ");
|
||||
|
||||
val = S[i][k] * SI_MULTI;
|
||||
vali = (int)roundf(val);
|
||||
printf("%d, ",vali);
|
||||
|
||||
if (k == 7)
|
||||
printf("},");
|
||||
count++;
|
||||
}
|
||||
}
|
||||
printf("\n};\n");
|
||||
|
||||
count = 0;
|
||||
printf("static const int32_t cosdecdata8[8][16] = {\n ");
|
||||
for (i = 0; i < 8; i++) {
|
||||
for (k = 0;k < 16;k++) {
|
||||
S[i][k] = cosf((float)((i+0.5)*(k+4)*(M_PI_4/2)));
|
||||
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n ");
|
||||
if (k == 0)
|
||||
printf("{ ");
|
||||
val = S[i][k] * SI_MULTI;
|
||||
vali = (int)roundf(val);
|
||||
printf("%d, ",vali);
|
||||
|
||||
if (k == 15)
|
||||
printf("},");
|
||||
count++;
|
||||
}
|
||||
}
|
||||
printf("\n};\n");
|
||||
|
||||
count = 0;
|
||||
printf("static const int32_t cosdecdata4[4][8] = {\n ");
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (k = 0;k < 8;k++) {
|
||||
S[i][k] = cosf((float)((i+0.5)*(k+2)*(M_PI_4)));
|
||||
|
||||
if (count % 8 == 0 && count != 0)
|
||||
printf("\n ");
|
||||
if (k == 0)
|
||||
printf("{ ");
|
||||
|
||||
val = S[i][k] * SI_MULTI;
|
||||
vali = (int)roundf(val);
|
||||
printf("%d, ",vali);
|
||||
|
||||
if (k == 7)
|
||||
printf("},");
|
||||
count++;
|
||||
}
|
||||
}
|
||||
printf("\n};\n");
|
||||
cosprint(2, -1);
|
||||
cosprint(1, -1);
|
||||
cosprint(2, 1);
|
||||
cosprint(1, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user