This method mainly ought to serve as a reference- and fallback- implementation for tensor backends and also
as the backend for handling the calculation of scalar inputs passed to a given abstract syntax tree of
Function
instances...
( (almost) every Function instance contains an OperationType reference to which it passes scalar executions... )
This is also the reason why the last parameter of this method is a list of Function objects :
The list stores the child nodes of the Function node that is currently being processed.
Therefore, when implementing this method one should first call the child nodes in
order to get the "real inputs" of this current node.
One might ask : Why does that not happen automatically?
The answer is to that question lies in the other parameters of this method.
Specifically the parameter "d" !
This argument determines if the derivative ought to be calculated and
also which value is being targeted within the input array.
Depending on this variable and also the nature of the operation,
the execution calls to the child nodes of this node change considerably!