# Simulate SFG

**Description of issue: **

Given a valid SFG, then the program should be able to simulate the SFG by evaluating all of it's operations. The return value should be numerical. The word length of input to operations should be able to be changed to full precision or modified word length #29 (closed) at simulation.

**Linked Requirements:**

( 41, 42, 43, 44, 45, 46 )

**Potential Issues:**

None

**Blockers:**

( #5 (closed), #12 (closed), #29 (closed) )

**Issue Requirements:**

- Given a valid SFG, then the program should be able to correctly simulate the SFG and return a numerical value based on input.
- The entire flow of the SFG should be taking into account correctly when simulating.
- The original SFG should not be modified when simulating.
- The input should be able to be given as a NumPy vector and the output should also be able to be given as a NumPy vector.
- The simulation should be able to handle real numbers.
- The simulation should be able to handle complex numbers. (P2)
- If float numbers are used then the precision should be at least 64 bits (IEEE-754 double precision).
- The list of inputs that are sent to be used in evaluation of an operation shall be truncated based on the word length limit specified in the InputPort class. These word length limitation should give an error if the software tries to limit a complex input data type.<\li>

**Comment:**

Most likely given that #5 (closed) is correctly implemented then you might be able to iterate over the SFG and evaluate each operation and pass that on through the ports.