Pérdida inesperada de precisión al dividir dobles

Tengo una función getSlope que toma como parámetros 4 dobles y devuelve otro doble calculado usando estos parámetros dados de la siguiente manera:

double QSweep::getSlope(double a, double b, double c, double d){
double slope;
slope=(d-b)/(c-a);
return slope;
}

El problema es que al llamar a esta función con argumentos, por ejemplo:

getSlope(2.71156, -1.64161, 2.70413, -1.72219);

el resultado devuelto es:

10.8557

y este no es un buen resultado para mis cálculos. He calculado la pendiente usando Mathematica y el resultado para la pendiente para los mismos parámetros es:

10.8452

o con más dígitos para mayor precisión:

10.845222072678331.

El resultado devuelto por mi programa no es bueno en mis cálculos posteriores. Además, no entiendo cómo el programa devuelve 10.8557 a partir de 10.845222072678331 (suponiendo que este sea el resultado aproximado para la división). ¿Cómo puedo obtener el buen resultado para mi división?

gracias por adelantado, madalina

Imprimo el resultado usando la línea de comando:

std::cout<<slope<<endl;

Puede ser que mis parámetros tal vez no sean buenos, ya que los leí desde otro programa (que calcula un gráfico; después de leer estos parámetros en su gráfico, los acabo de mostrar para ver su valor, pero tal vez los vectores mostrados no tienen el misma precisión interna para el valor calculado ... No sé si es realmente extraño. Aparecen algunos errores numéricos ...)

Cuando se calcula el gráfico del que estoy leyendo mis parámetros, se utilizan algunas bibliotecas numéricas escritas en C ++ (con plantillas). No se utiliza OpenGL para este cálculo.

gracias, madalina

Respuestas a la pregunta(8)

Su respuesta a la pregunta