FUNCTION VECMIN, ARRAY, INDEX, VALUE ;- Check arguments if (n_elements(array) eq 0) then $ message, 'Argument ARRAY is undefined' if (n_elements(index) eq 0) then $ message, 'Argument INDEX is undefined' if (n_elements(value) eq 0) then $ message, 'Argument VALUE is undefined' if (n_elements(index) ne n_elements(value)) then $ message, 'Arguments INDEX and VALUE must have the same number of elements' ;- Create copies of arguments to pass to external routine a = (size(array, /tname) eq 'FLOAT') ? array : float(array) x = ((long(index) > 0L) < (n_elements(a) - 1L)) + 1L b = (size(value, /tname) eq 'FLOAT') ? value : float(value) na = n_elements(a) nx = n_elements(x) ;- Call the external routine result = call_external('vecmin.so', 'vecmin_', a, na, x, nx, b) if (result ne 1) then message, 'Error calling external routine' ;- Return result return, a END