Initializing help system before first use

Multi-purpose functions and the dependency matrix

If a complicated function taking multiple variables as input and capable of calculating different expressions as return values is used, it can be beneficial to explicitly declare the dependency relationship between the input variables and the various return values (in other words, defining which derivatives will always be zero). Even when a function would return its own derivatives, this feature can help to reduce the number of small perturbations appearing in the matrix (see XSLP_DELTA_Z). A complicated function is called multi-purpose if it can provide a dependency matrix.

To mark a user function multi-purposed, XSLP_UFEXETYPE needs to be specified to have bit XSLP_MULTIPURPOSE defined, or the appropriate field in the MPS file must have the 'P' identifier.

A user function being marked as multi-purpose will be called in a special way during augmentation (XSLPconstruct). This call will have the number of derivatives required ("nDelta" in XSLPgetfuncinfo) set to be a negative number, signaling that the nature of the call is to retrieve the dependency matrix. Assuming a user function with n input variables, and m output values, the value of nDelta will be (n+1)*m. For each return value, there will be n+1 values expected in the following order: the first value indicates whether for that specific return value, a dependency matrix is provided or not; 0 meaning no dependency matrix, nonzero meaning a dependency matrix is supplied. The following n values indicating whether the expression depends on the corresponding input value or not.

The following simple example shows how the dependency matrix is filled out:

Consider the following user function:
 MyFunc( x, y, z : ret1 ) := x + y
 MyFunc( x, y, z : ret2 ) := z * z
The dependency matrix for MyFunc would be
 [1, 1,1,0, 1, 0,0,1]

© 2001-2019 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.