# creating gates

## Synopsis

• Usage:
inputGate L
sumGate L
productGate L
• Inputs:
• Outputs:

This method returns a type of Gate from the given data. Some specific Gates are constructed as follows:

InputGate is constructed with inputGate name, if name is a number then this gate is assumed to be constant.

 i1 : declareVariable X o1 = X o1 : InputGate i2 : declareVariable Y o2 = Y o2 : InputGate i3 : inputGate 3 o3 = 3 o3 : InputGate

SumGate is constructed with sumGate L, where L is a list of gates, or Gate + Gate.

 i4 : X + 1 o4 = (X + 1) o4 : SumGate i5 : sumGate{X,Y} o5 = (X + Y) o5 : SumGate

ProductGate is constructed with productGate L, where L is a list of gates, or Gate * Gate.

 i6 : 2*Y o6 = (2 * Y) o6 : ProductGate i7 : productGate{X,-X,Y} o7 = (X * (-1 * X) * Y) o7 : ProductGate

DivideGate is constructed with Gate / Gate.

 i8 : X / Y X o8 = - Y o8 : DivideGate

DetGate is constructed with detGate L, where L is a doubly-nested list of gates, or det A, where A is a GateMatrix.

 i9 : detGate {{X, Y}, {-Y, X}} o9 = det| X Y | | (-1 * Y) X | o9 : DetGate i10 : det matrix{{Y, 1}, {-1, X}} o10 = det| Y 1 | | -1 X | o10 : DetGate