Ecuación cuadrática en Ada

Acabo de dar la vuelta y decidí probar un poco de Ada. La desventaja es que la sintaxis y la función se alejan bastante de C ++. Así que me gustaba meter varias cosas para que esto funcionara.

Mi pregunta es si hay alguna forma mejor de hacer este cálculo que lo que he hecho aquí

   IF(B < 0.0) THEN
      B := ABS(B);
      X1 := (B / 2.0) + Sqrt( (B / 2.0) ** 2.0 + ABS(C));
      X2 := (B / 2.0) - Sqrt( (B / 2.0) ** 2.0 + ABS(C));
   ELSE
      X1 := -(B / 2.0) + Sqrt( (B / 2.0) ** 2.0 - C);
      X2 := -(B / 2.0) - Sqrt( (B / 2.0) ** 2.0 - C);
   END IF;

Tuve algunos problemas con los números negativos, por eso hice una declaración IF y usé ABS () para convertirlos en positivos. Pero lo extraño es que funciona perfectamente para el otro caso, lo cual es extraño ...

Respuestas a la pregunta(5)

Su respuesta a la pregunta