Explore chapters and articles related to this topic
A
Published in Phillip A. Laplante, Dictionary of Computer Science, Engineering, and Technology, 2017
(2) the actual parameter to a function. Some languages distinguish between a formal parameter value, as specified in a function definition, and the actual parameter value, as determined at a call site, by calling the former a “parameter” and the latter an “argument”. Other languages make no such distinction. See also parameter.
Mixed-language automatic differentiation
Published in Optimization Methods and Software, 2018
Valérie Pascual, Laurent Hascoët
The impact of mixed-language differentiation on the tangent mode of differentiation is quite limited. In the tangent mode, the data-flow of derivatives follows closely the data-flow of primal variables. Therefore the strategy implemented in the primal code to pass primal variables can be simply reused for the tangent derivatives. There is a minor issue when differentiating a call to a function F which returns a value that has a derivative. Our convention is to pass this derivative as the return value of the differentiated F_D. Therefore F_D must be called with an extra argument to pass the primal result of F. This extra argument and its corresponding passed parameter must be declared and used according to the parameter-passing mechanism, e.g. by passing the address of the argument when F is a Fortran function and the call site is in C, as shown in Figure 2. The issue is already present in mono-language C code.
Detecting all potential null dereferences based on points-to property sound analysis
Published in International Journal of Computers and Applications, 2020
When a function is called in different calling contexts, the points-to information of its pointer arguments maybe different. In order to map the points-to information at call site to the called function, we introduce extended variables to represent the points-to information of pointer parameters and global variables. The extended rules are as follows, let e as the variable that need to be extended, if e is a pointer, and the maximum level of dereference from e is n, then we create n extend variables, include *e, **e, … and so on; if e is a variable with compound type and has n member, then we create n extend variables, include e.f1, e.f2, … and so on.