# [File generated by the OpenScop Library 0.8.0]

<OpenScop>

# =============================================== Global
# Language
C

# Context
CONTEXT
1 3 0 0 0 1
# e/i|  N |  1  
   1    1    3    ## N+3 >= 0

# Parameters are provided
1
<strings>
N
</strings>

# Number of statements
1

# =============================================== Statement 1
# Number of relations describing the statement:
6

# ----------------------------------------------  1.1 Domain
DOMAIN
# Union with 2 parts
2
# Union part No.1
5 5 2 0 0 1
# e/i|  i    j |  N |  1  
   1    1    0    0    0    ## i >= 0
   1   -1    0    1   -1    ## -i+N-1 >= 0
   1    0    1    0    0    ## j >= 0
   1    0   -1    1   -1    ## -j+N-1 >= 0
   1    0    1    0  -20    ## j-20 >= 0
# Union part No.2
5 5 2 0 0 1
# e/i|  i    j |  N |  1  
   1    1    0    0    0    ## i >= 0
   1   -1    0    1   -1    ## -i+N-1 >= 0
   1    0    1    0    0    ## j >= 0
   1    0   -1    1   -1    ## -j+N-1 >= 0
   1    0   -1    0   10    ## -j+10 >= 0

# ----------------------------------------------  1.2 Scattering
SCATTERING
5 10 5 2 0 1
# e/i| c1   c2   c3   c4   c5 |  i    j |  N |  1  
   0   -1    0    0    0    0    0    0    0    0    ## c1 == 0
   0    0   -1    0    0    0    1    0    0    0    ## c2 == i
   0    0    0   -1    0    0    0    0    0    0    ## c3 == 0
   0    0    0    0   -1    0    0    1    0    0    ## c4 == j
   0    0    0    0    0   -1    0    0    0    0    ## c5 == 0

# ----------------------------------------------  1.3 Access
READ
2 7 2 2 0 1
# e/i| A1   [1]|  i    j |  N |  1  
   0   -1    0    0    0    0    1    ## A1
   0    0   -1    1    1    0    0    ## [1] == i+j

READ
2 7 2 2 0 1
# e/i| A2   [1]|  i    j |  N |  1  
   0   -1    0    0    0    0    2    ## A2
   0    0   -1    1    0    0    0    ## [1] == i

READ
2 7 2 2 0 1
# e/i| A3   [1]|  i    j |  N |  1  
   0   -1    0    0    0    0    3    ## A3
   0    0   -1    0    1    0    0    ## [1] == j

WRITE
2 7 2 2 0 1
# e/i| A1   [1]|  i    j |  N |  1  
   0   -1    0    0    0    0    1    ## A1
   0    0   -1    1    1    0    0    ## [1] == i+j

# ----------------------------------------------  1.4 Body
# Statement body is provided
1
<body>
# Number of original iterators
2
# Original iterators
i j
# Body expression
C[i+j]+=A[i]*B[j];
</body>


# =============================================== Extensions
<comment>
hello, world

HELLO WORLD I SAID
</comment>

</OpenScop>


