This function implements S-LSTM unit. It is an extension of LSTM unit
applied to tree structures.
The function is applied to binary trees. Each node has two child nodes.
It gets four arguments, previous cell states c_prev1 and c_prev2,
and input arrays x1 and x2.

First both input arrays x1 and x2 are split into eight arrays
\(a_1, i_1, f_1, o_1\), and \(a_2, i_2, f_2, o_2\). They have the
same shape along the second axis.
It means that x1 and x2 ‘s second axis must have 4 times
the length of c_prev1 and c_prev2.

where \(\sigma\) is the elementwise sigmoid function.
The function returns c and h as a tuple.

Parameters:

c_prev1 (Variable or numpy.ndarray or cupy.ndarray) – Variable that holds the previous cell state of the first child
node. The cell state should be a zero array or the output of
the previous call of LSTM.

x1 (Variable or numpy.ndarray or cupy.ndarray) – Variable that holds the sources of cell input, input gate, forget
gate and output gate from the first child node. It must have the
second dimension whose size is four times of that of the cell
state.

It corresponds to calculate the input array x1, or the input
sources \(a_1, i_1, f_1, o_1\) from the previous cell state of
first child node c1, and the previous outgoing signal from first
child node h1. Different parameters are used for different kind of
input sources.