void Optim::setMode(Mode mode) { m_mode = mode; if(m_mode == Basic) { for(unsigned int i = 0; i < m_number_of_harmonics; i++) { m_harmonics[i] = 1.; } } else if (m_mode == MaxRe) { for(unsigned int i = 0; i < m_number_of_harmonics; i++) { m_harmonics[i] = cos(fabs(getHarmonicBand(i)) * HOA_PI / (2 * m_order + 2));; } } else { long double gain = ((m_order + 1) * (m_order + 1)) / (2 * m_order + 1); for(unsigned int i = 0; i < m_number_of_harmonics; i++) { m_harmonics[i] = (long double)((long double)factorial(m_order) * (long double)factorial(m_order + 1.)) / (long double)((long double)factorial(m_order + getHarmonicBand(i) + 1.) * (long double)factorial(m_order - fabs(getHarmonicBand(i)))) * gain; } } }
void Optim::setMode(Mode mode) { long double temp1; long double temp2; m_mode = mode; if(m_mode == Basic) { for(unsigned int i = 0; i < m_number_of_harmonics; i++) { m_harmonics[i] = 1.; } } else if (m_mode == MaxRe) { for(unsigned int i = 0; i < m_number_of_harmonics; i++) { m_harmonics[i] = cos(fabs((double)getHarmonicBand(i)) * HOA_PI / (double)(2. * m_order + 2)); } } else { for(unsigned int i = 0; i < m_number_of_harmonics; i++) { temp1 = (long double)factorial(m_order) / (long double)factorial(m_order + getHarmonicBand(i) + 1.); temp2 = (long double)factorial(m_order + 1.) / (long double)factorial(m_order - fabs(getHarmonicBand(i))); m_harmonics[i] = temp1 * temp2; } } }