The following source files contain both the Ada specification part and body part. These can either be separated manually, or automatically using a tool such as gnatchop.

Each function implementation is a generic package so the programmer can choose which floating point type to use. For example, to instantiate the Gamma package using Long_Float:

package My_Gamma is new Gamma(Long_Float);

Implementations by function: