Вот так оно получше будет:
#include "findpoint.h"
typedef struct
{
int phase3Mhz;
int coefmux[2];
} TableItem;
static TableItem table[] =
{
{ 0, { 1, 1 } }, // 0
{ 300, { 2, 1 } }, // 1
{ 1100, { 2, 2 } }, // 2
{ 3100, { 3, 2 } }, // 3
{ 4100, { 3, 3 } }, // 4
{ 5100, { 4, 3 } }, // 5
{ 6400, { 4, 4 } }, // 6
{ 8300, { 5, 4 } }, // 7
{ 8900, { 5, 5 } }, // 8
{ 10700, { 6, 5 } }, // 9
{ 11500, { 6, 6 } }, // 10
{ 13000, { 7, 6 } }, // 11
{ 14000, { 7, 7 } }, // 12
{ 15500, { 8, 7 } }, // 13
{ 16500, { 8, 8 } }, // 14
{ 18000, { 9, 8 } }, // 15
{ 19300, { 9, 9 } }, // 16
{ 20400, { 10, 9 } }, // 17
{ 21700, { 10, 10 } }, // 18
{ 23000, { 11, 10 } }, // 19
{ 24500, { 11, 11 } }, // 20
{ 33000, { 1, 1 } }, // 21
{ 36000, { 0, 0 } } // 22
};
static int lookup(int phase3Mhz_deg, int phase45Mhz_deg)
{
int top = 0;
int bottom = sizeof table / sizeof table[0] - 2;
int middle;
do
{
middle = (top + bottom) / 2;
if (phase3Mhz_deg < table[middle].phase3Mhz)
{
bottom = middle - 1;
}
else if (phase3Mhz_deg >= table[middle + 1].phase3Mhz)
{
top = middle + 1;
}
} while (!((phase3Mhz_deg >= table[middle].phase3Mhz) && (phase3Mhz_deg < table[middle + 1].phase3Mhz)));
return table[middle].coefmux[(int)(phase45Mhz_deg > 18000)];
}
extern long findpoint(int phase3Mhz_deg, int phase45Mhz_deg)
{
int coefmux = lookup(phase3Mhz_deg, phase45Mhz_deg);
return coefmux;
}