Next: Defining Function Sets, Up: Functions [Index]
A function called ‘med3’ and selecting the median value over its three real argument values may be defined as:
const struct x1f4_function_type med3 = {
"med3",
median3,
X1f4_E4_REAL,
real3,
3,
0,
4
};
See struct x1f4_function_type.
The name field of the function definition specifies the name of the
function: ‘med3’.
The function field selects the routine performing the function logic, a
certain median3 function.
The type field specifies that the function return type is real,
hence it translates X1f4_E4_REAL.
See Symbolic Types.
The args field specifies the types of the function arguments and is
assumed defined as:
int real3[] = { X1f4_E4_REAL, X1f4_E4_REAL, X1f4_E4_REAL };
The count field specifies the number of function arguments: 3.
The flags field specifies pretty much nothing in this function
definition, hence is 0.
See Function Flags.
See Operator And Function Flags.
The length field specifies the function name length, 4.
The median3 function realizes the median over a set of three, i.e. it
selects the value that is neither the smallest, neither the biggest.
int
median3(void *context, void *output, void **input)
{
X1f4_E4_C_REAL a, b, c, o, *out;
a = *(X1f4_E4_C_REAL *) input[0];
b = *(X1f4_E4_C_REAL *) input[1];
c = *(X1f4_E4_C_REAL *) input[2];
if (a < b) {
if (b < c) {
o = b;
} else {
if (a < c) {
o = c;
} else {
o = a;
}
}
} else {
if (a < c) {
o = a;
} else {
if (b < c) {
o = c;
} else {
o = b;
}
}
}
out = output;
*out = o;
return 0;
}
See C Types.
The median3 function reads its logic arguments from the addresses
specified by input. Conversely, the computed value is stored at the
address specified by output. The return 0 value marks successful
execution.
Next: Defining Function Sets, Up: Functions [Index]