Qualcomm Interview Question
Software DevelopersCountry: United States
Interview Type: Written Test
/* To compile use -lm flag */
#include<complex.h>
#include<stdio.h>
#include<math.h>
typedef _Complex float cf_t;
#define PSS_LEN 62
/**
* This function calculates the Zadoff-Chu sequence.
* @param signal Output array.
*/
/* Orig int pss_generate(cf_t *signal, uint32_t N_id_2) */
int pss_generate(cf_t *signal, int N_id_2){
int i;
float arg;
const float root_value[] = { 25.0, 29.0, 34.0 };
int root_idx;
int sign = -1;
if (N_id_2 > 2) {
printf("Error\n");
//fprintf(stderr, "Invalid N_id_2 %d\n", N_id_2);
return -1;
}
root_idx = N_id_2;
for (i = 0; i < PSS_LEN / 2; i++) {
arg = (float) sign * M_PI * root_value[root_idx] * ((float) i * ((float) i + 1.0)) / 63.0;
__real__ signal[i] = cosf(arg);
__imag__ signal[i] = sinf(arg);
}
for (i = PSS_LEN / 2; i < PSS_LEN; i++){
arg = (float) sign * M_PI * root_value[root_idx]* (((float) i + 2.0) * ((float) i + 1.0)) / 63.0;
__real__ signal[i] = cosf(arg);
__imag__ signal[i] = sinf(arg);
}
return 0;
}
int main(){
cf_t pss_signal[PSS_LEN];
pss_generate(pss_signal,1);
}
/* To compile use -lm flag */
- Anonymous November 28, 2017#include<complex.h>
#include<stdio.h>
#include<math.h>
typedef _Complex float cf_t;
#define PSS_LEN 62
/**
* This function calculates the Zadoff-Chu sequence.
* @param signal Output array.
*/
/* Orig int pss_generate(cf_t *signal, uint32_t N_id_2) */
int pss_generate(cf_t *signal, int N_id_2)
{
int i;
float arg;
const float root_value[] = { 25.0, 29.0, 34.0 };
int root_idx;
int sign = -1;
if (N_id_2 > 2)
{
printf("Error\n");
//fprintf(stderr, "Invalid N_id_2 %d\n", N_id_2);
return -1;
}
root_idx = N_id_2;
for (i = 0; i < PSS_LEN / 2; i++)
{
arg = (float) sign * M_PI * root_value[root_idx] * ((float) i * ((float) i + 1.0)) / 63.0;
__real__ signal[i] = cosf(arg);
__imag__ signal[i] = sinf(arg);
}
for (i = PSS_LEN / 2; i < PSS_LEN; i++){
arg = (float) sign * M_PI * root_value[root_idx]* (((float) i + 2.0) * ((float) i + 1.0)) / 63.0;
__real__ signal[i] = cosf(arg);
__imag__ signal[i] = sinf(arg);
}
return 0;
}
int main()
{
cf_t pss_signal[PSS_LEN];
pss_generate(pss_signal,1);
}