Melhor maneira do que se else if else… para interpolação linear

pergunta é fácil. Vamos dizer que você tem função

double interpolate (double x);

e você tem uma tabela que tem mapa de x-> y conhecido
por exemplo
5 15
7 18
10 22
Nota: mesas reais são maiores ofc, isso é apenas exemplo.

então para 8 você retornaria 18 + ((8-7) / (10-7)) * (22-18) = 19.3333333

Uma maneira legal que eu encontrei éhttp://www.bnikolic.co.uk/blog/cpp-map-interp.html (longa história curta usa std :: map, key = x, valor = y para pares de dados x-> y).

Se alguém perguntar qual é o caminho if else if else no título é basicamente:

if ((x>=5) && (x<=7))
{
//interpolate
}
else 
     if((x>=7) && x<=10)
     {
      //interpolate
     }

Então, existe uma maneira mais inteligente de fazê-lo ou mapear o caminho é o estado da arte? :)

Btw eu prefiro soutions em C ++, mas, obviamente, qualquer solução de linguagem que tenha mapeamento 1: 1 para C ++ é legal.

questionAnswers(6)

yourAnswerToTheQuestion