mirror of
https://github.com/aicodix/code.git
synced 2026-04-27 22:35:44 +00:00
keep ranges symmetric
This commit is contained in:
parent
b146d9739a
commit
7e589c85ef
7 changed files with 10 additions and 10 deletions
|
|
@ -172,7 +172,7 @@ struct PolarHelper<int8_t>
|
||||||
template <typename IN>
|
template <typename IN>
|
||||||
static int8_t quant(IN in)
|
static int8_t quant(IN in)
|
||||||
{
|
{
|
||||||
return std::min<IN>(std::max<IN>(std::nearbyint(in), -128), 127);
|
return std::min<IN>(std::max<IN>(std::nearbyint(in), -127), 127);
|
||||||
}
|
}
|
||||||
static int8_t qabs(int8_t a)
|
static int8_t qabs(int8_t a)
|
||||||
{
|
{
|
||||||
|
|
@ -184,11 +184,11 @@ struct PolarHelper<int8_t>
|
||||||
}
|
}
|
||||||
static int8_t qadd(int8_t a, int8_t b)
|
static int8_t qadd(int8_t a, int8_t b)
|
||||||
{
|
{
|
||||||
return std::min<int16_t>(std::max<int16_t>(int16_t(a) + int16_t(b), -128), 127);
|
return std::min<int16_t>(std::max<int16_t>(int16_t(a) + int16_t(b), -127), 127);
|
||||||
}
|
}
|
||||||
static int8_t qmul(int8_t a, int8_t b)
|
static int8_t qmul(int8_t a, int8_t b)
|
||||||
{
|
{
|
||||||
// return std::min<int16_t>(std::max<int16_t>(int16_t(a) * int16_t(b), -128), 127);
|
// return std::min<int16_t>(std::max<int16_t>(int16_t(a) * int16_t(b), -127), 127);
|
||||||
// only used for hard decision values anyway
|
// only used for hard decision values anyway
|
||||||
return a * b;
|
return a * b;
|
||||||
}
|
}
|
||||||
|
|
@ -198,7 +198,7 @@ struct PolarHelper<int8_t>
|
||||||
}
|
}
|
||||||
static int8_t madd(int8_t a, int8_t b, int8_t c)
|
static int8_t madd(int8_t a, int8_t b, int8_t c)
|
||||||
{
|
{
|
||||||
return std::min<int16_t>(std::max<int16_t>(int16_t(a) * int16_t(b) + int16_t(c), -128), 127);
|
return std::min<int16_t>(std::max<int16_t>(int16_t(a) * int16_t(b) + int16_t(c), -127), 127);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ int main()
|
||||||
float DIST = 2; // BPSK
|
float DIST = 2; // BPSK
|
||||||
float fact = DIST / (sigma_noise * sigma_noise);
|
float fact = DIST / (sigma_noise * sigma_noise);
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -128), 127);
|
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -127), 127);
|
||||||
|
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
noisy[i] = code[i];
|
noisy[i] = code[i];
|
||||||
|
|
|
||||||
|
|
@ -579,7 +579,7 @@ int main()
|
||||||
float DIST = 2; // BPSK
|
float DIST = 2; // BPSK
|
||||||
float fact = DIST * FACTOR / (sigma_noise * sigma_noise);
|
float fact = DIST * FACTOR / (sigma_noise * sigma_noise);
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -128), 127);
|
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -127), 127);
|
||||||
|
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
noisy[i] = code[i];
|
noisy[i] = code[i];
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ int main()
|
||||||
double DIST = 2; // BPSK
|
double DIST = 2; // BPSK
|
||||||
double fact = DIST / (sigma_noise * sigma_noise);
|
double fact = DIST / (sigma_noise * sigma_noise);
|
||||||
for (int i = 0; i < N; ++i)
|
for (int i = 0; i < N; ++i)
|
||||||
noisy[i] = std::min<double>(std::max<double>(std::nearbyint(fact * symb[i]), -128), 127);
|
noisy[i] = std::min<double>(std::max<double>(std::nearbyint(fact * symb[i]), -127), 127);
|
||||||
|
|
||||||
bool unique = osddec(decoded, noisy, genmat);
|
bool unique = osddec(decoded, noisy, genmat);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ int main()
|
||||||
double DIST = 2; // BPSK
|
double DIST = 2; // BPSK
|
||||||
double fact = DIST / (sigma_noise * sigma_noise);
|
double fact = DIST / (sigma_noise * sigma_noise);
|
||||||
for (int i = 0; i < N; ++i)
|
for (int i = 0; i < N; ++i)
|
||||||
noisy[i] = std::min<double>(std::max<double>(std::nearbyint(fact * symb[i]), -128), 127);
|
noisy[i] = std::min<double>(std::max<double>(std::nearbyint(fact * symb[i]), -127), 127);
|
||||||
|
|
||||||
osddec(rank, decoded, noisy, genmat);
|
osddec(rank, decoded, noisy, genmat);
|
||||||
bool unique = rank[0] != rank[1];
|
bool unique = rank[0] != rank[1];
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ int main()
|
||||||
float DIST = 2; // BPSK
|
float DIST = 2; // BPSK
|
||||||
float fact = DIST / (sigma_noise * sigma_noise);
|
float fact = DIST / (sigma_noise * sigma_noise);
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -128), 127);
|
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -127), 127);
|
||||||
|
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
noisy[i] = code[i];
|
noisy[i] = code[i];
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ int main()
|
||||||
float DIST = 2; // BPSK
|
float DIST = 2; // BPSK
|
||||||
float fact = DIST / (sigma_noise * sigma_noise);
|
float fact = DIST / (sigma_noise * sigma_noise);
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -128), 127);
|
code[i] = std::min<float>(std::max<float>(std::nearbyint(fact * symb[i]), -127), 127);
|
||||||
|
|
||||||
for (int i = 0; i < CODE_LEN; ++i)
|
for (int i = 0; i < CODE_LEN; ++i)
|
||||||
noisy[i] = code[i];
|
noisy[i] = code[i];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue