

#----------------------SCoP NO. 20

#-------------------CONTEXT------------------------
   c # language is c
   # Context (no constarints on parameters)
   1 3		# 1 lines and 3 coloumns
   #  NDE    1
   0    0    0 

   1 # We want to set manually the parameter names
 NDE 	# parameter names

#---------------------STATEMENTS--------------------
  19 #Number of Statements

   1 #STMT 1 at line no. 1605 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 2 at line no. 1608 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 3 at line no. 1613 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 4 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 5 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 6 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 7 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 8 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 9 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 10 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 11 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 12 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 13 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 14 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 15 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 16 at line no. 1614 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 17 at line no. 1620 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 #STMT 18 at line no. 1628 has 1 domain
   # Domain 1
   2 4
   #    I  NDE    1 
   1    1    0    1 
   1   -1    1    0 
   0    0    0 

   1 #STMT 19 at line no. 1636 has 1 domain
   # Domain 1
   1 3
   #  NDE    1 
   0    0    0 
   0    0    0 

   1 # Set Iterator Names
   I 	#Iterator Names

#---------------------SCATTERING FUNCTIONS--------------------
  19 #Scattering functions

# Scattering Matrix for stmt at line no.1605
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0    0 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1608
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -1 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1613
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -2 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -3 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -4 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -5 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -6 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -7 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -8 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0   -9 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -10 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -11 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -12 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -13 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -14 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1614
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -15 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1620
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -16 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

# Scattering Matrix for stmt at line no.1628
   3 7
   #   p0   p1   p2    I  NDE    1 
   0    1    0    0    0    0  -17 
   0    0    1    0   -1    0    0 
   0    0    0    1    0    0    0 

# Scattering Matrix for stmt at line no.1636
   3 6
   #   p0   p1   p2  NDE    1 
   0    1    0    0    0  -18 
   0    0    1    0    0    0 
   0    0    0    1    0    0 

   1 # Set manually the scattering dimension names
  p0   p1   p2 	#Scattering dimension names
