如何使 Ada 数学函数使用双精度(长浮点数)变量?

How to make Ada math function use double precision (Long float)variables?

Ada 的标准数学函数如sin、cos、*、/ 等仅支持Float 类型变量作为输入和输出。是否可以使这些函数处理输入和输出变量的双精度或 long_float?

实际上(幸运的是)支持任何精度的数学函数。

with Ada.Numerics.Generic_Elementary_Functions;

...

  type Real is digits 15;

  package REF is new Ada.Numerics.Generic_Elementary_Functions (Real);

  use REF;

你应该找到

  • Ada.Numerics.Long_Elementary_Functions(对于Long_Float
  • Ada.Numerics.Short_Elementary_Functions(对于Short_Float

以及

  • Ada.Numerics.Elementary_Functions(对于 Float)。

参见 ARM A.5.1(9)