24 USE iso_c_binding,
ONLY :
c_float, c_double, c_char, c_int32_t, c_int64_t
36#ifdef QPALM_FORTRAN_64BIT_INDICES
37 INTEGER,
PARAMETER :: integer_kind = c_int64_t
39 INTEGER,
PARAMETER :: integer_kind = c_int32_t
42#ifdef QPALM_FORTRAN_SINGLE_PRECISION
50#ifdef LADEL_64BIT_INDICES
56#ifdef LADEL_SINGLE_PRECISION
78 TYPE,
BIND( C ),
PUBLIC :: QPALM_settings
82 INTEGER ( KIND = integer_kind_qpalm ) :: max_iter = 10000
86 INTEGER ( KIND = integer_kind_qpalm ) :: inner_max_iter = 100
138 INTEGER ( KIND = integer_kind_qpalm ) :: proximal = 1
154 INTEGER ( KIND = integer_kind_qpalm ) :: scaling = 10
158 INTEGER ( KIND = integer_kind_qpalm ) :: nonconvex = 0
162 INTEGER ( KIND = integer_kind_qpalm ) :: verbose = 1
166 INTEGER ( KIND = integer_kind_qpalm ) :: print_iter = 1
170 INTEGER ( KIND = integer_kind_qpalm ) :: warm_start = 0
174 INTEGER ( KIND = integer_kind_qpalm ) :: reset_newton_iter = 10000
179 INTEGER ( KIND = integer_kind_qpalm ) :: enable_dual_termination = 0
194 INTEGER ( KIND = integer_kind_qpalm ) :: ordering = 1
201 INTEGER ( KIND = integer_kind_qpalm ) :: factorization_method = 2
205 INTEGER ( KIND = integer_kind_qpalm ) :: max_rank_update = 160
210 max_rank_update_fraction = 0.1_real_kind_qpalm
220 TYPE,
BIND( C ),
PUBLIC :: QPALM_info
224 INTEGER ( KIND = integer_kind_qpalm ) :: iter
228 INTEGER ( KIND = integer_kind_qpalm ) :: iter_out
232 CHARACTER ( KIND = C_CHAR ),
DIMENSION( 31 ) :: status
244 INTEGER ( KIND = integer_kind_qpalm ) :: status_val
289 ane, aptr, arow, aval, cl, cu, settings, &
290 x, y, info ) bind( C, NAME = 'qpalm_fortran_c' )
298 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
VALUE :: n
302 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
VALUE :: m
307 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
VALUE :: hne
313 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
DIMENSION( hne ) :: hrow
319 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
DIMENSION( n + 1 ) :: hptr
324 REAL ( kind =
real_kind ),
INTENT( IN ),
DIMENSION( hne ) :: hval
328 REAL ( kind =
real_kind ),
INTENT( IN ),
DIMENSION( n ) :: g
332 REAL ( kind =
real_kind ),
INTENT( IN ),
VALUE :: f
336 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
VALUE :: ane
342 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
DIMENSION( ane ) :: arow
348 INTEGER ( KIND = integer_kind ),
INTENT( IN ),
DIMENSION( n + 1 ) :: aptr
353 REAL ( kind =
real_kind ),
INTENT( IN ),
DIMENSION( ane ) :: aval
358 REAL ( kind =
real_kind ),
INTENT( IN ),
DIMENSION( m ) :: cl
363 REAL ( kind =
real_kind ),
INTENT( IN ),
DIMENSION( m ) :: cu
372 REAL ( kind =
real_kind ),
INTENT( OUT ),
DIMENSION( n ) :: x
376 REAL ( kind =
real_kind ),
INTENT( OUT ),
DIMENSION( m ) :: y
ladel_double c_float
type for floating point numbers
Fortran interface to the C package QPALM, with the aim to minimize the objective function.
real(kind=real_kind_qpalm), parameter ten
integer, parameter integer_kind_qpalm
integer, parameter real_kind
integer, parameter real_kind_qpalm
integer, parameter integer_kind
info derived type with component defaults bound to C’s QPALMInfo
settings derived type with component defaults bound to C’s QPALMSettings