For routines where we depend on the Fortran LAPACK for implementation,
we have created a new C/LAPACK API, which can be found in
ATLAS/interfaces/lapack/C2F/src. This API is presently
undocumented. It prefixes ATL_C2F to the native LAPACK
routine name.
This interface is designed to be quick to extend, and it's main
goal is to provide access to the F77 LAPACK without requiring the
caller to know the arcana of calling a Fortran77 routine from C
(which varies by compiler and platform). Therefore, you get a
nice C interface, using enums, with correct pass-by-address/value.
For every routine that takes a work argument, this API provides
two routines: one with the normal name which does not take
a work, where the API does the malloc for the user, and a second
routine with _wrk suffixed to the name that works exactly
like the F77 routine (user must pass in appropriate workspace).
So, for instance the lapack routine geqrf takes work, and
so for double precision this API provides a routine ATL_C2Fdgeqrf
which takes no workspace-related parameters, and a
ATL_C2Fdgeqrf_wrk which takes workspace parameters.
The C2F API is built by simple wrappers around the F77 LAPACK,
and presently we have wrappers only for the QR-related routines.
It is extremely straightfoward to expand this API to cover all
of LAPACK, but I won't do so unless users ask for given routines,
or my own research requires them (no use producing code that
one using), so let me know if there are routines you'd like to
see ATLAS provide via this API.
<982>>
R. Clint Whaley
2016-07-28