Equação quadrática em Ada

Acabei de chegar e decidi experimentar um pouco de Ada. A desvantagem é que a sintaxe e a função se afastam bastante do C ++. Então eu tive que gostar de várias coisas para fazer essa coisa funcionar.

Minha pergunta é se existe alguma maneira melhor de fazer esse cálculo que o que eu fiz aqui

   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;

Eu tive algum problema com números negativos, foi por isso que fiz uma declaração SE e usei ABS () para transformá-los em positivos. Mas o estranho é que funciona perfeitamente para o outro caso, o que é estranho ...

questionAnswers(5)

yourAnswerToTheQuestion