What is a modern way to map constant value doubles to integers?
I want this as a header only include.
I have avoided #define
and started with a nest of if
statements.
I believe the if
statements were faster ( I had them prioritized and a few goto
s in there) but the switch below seems more readable.
I looked at dis-assembly of code below and it seemed reasonable.
I do not like the giant switch. I thought there may be a better modern approach (without loosing performance or requiring linking).
inline int InchtoGauge(double d)
{
switch (static_cast<int>(d * 10000))
{
case 2391: return 3;
case 2242: return 4;
case 2092: return 5;
case 1943: return 6;
case 1793: return 7;
case 1644: return 8;
case 1495: return 9;
case 1345: return 10;
case 1196: return 11;
case 1046: return 12;
case 897: return 13;
case 747: return 14;
case 673: return 15;
case 598: return 16;
case 538: return 17;
case 478: return 18;
case 418: return 19;
case 359: return 20;
case 329: return 21;
case 299: return 22;
case 269: return 23;
case 239: return 24;
case 209: return 25;
case 179: return 26;
case 164: return 27;
case 149: return 28;
case 135: return 29;
case 120: return 30;
case 105: return 31;
case 97: return 32;
case 90: return 33;
case 82: return 34;
case 75: return 35;
case 67: return 36;
default:return -1;
}
}