(TranslationUnit
    [(Subroutine
        sum_reduce
        [(a)
        (s)]
        []
        ()
        ()
        []
        []
        []
        [(Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            [(AttrIntent
                In
            )]
            [(a
            [(()
            ()
            DimensionExpr)]
            []
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeReal
                []
                ()
                ()
                None
            )
            [(AttrIntent
                Out
            )]
            [(s
            []
            []
            ()
            ()
            None
            ())]
            ()
        )
        (Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(N
            []
            []
            ()
            ()
            None
            ())
            (i
            []
            []
            ()
            ()
            None
            ())]
            ()
        )]
        [(Assignment
            0
            N
            (FuncCallOrArray
                size
                []
                [(()
                a
                ()
                0)]
                []
                []
                []
            )
            ()
        )
        (Assignment
            0
            s
            0
            ()
        )
        (DoConcurrentLoop
            0
            ()
            [(ConcurrentControl
                ()
                i
                1
                N
                ()
            )]
            ()
            [(ConcurrentReduce
                ReduceMul
                [s]
            )]
            [(Assignment
                0
                s
                (+ s (FuncCallOrArray
                    a
                    []
                    [(()
                    i
                    ()
                    0)]
                    []
                    []
                    []
                ))
                ()
            )]
            ()
            ()
        )
        (DoConcurrentLoop
            0
            ()
            [(ConcurrentControl
                ()
                i
                1
                N
                ()
            )]
            ()
            [(ConcurrentReduce
                ReduceMIN
                [s]
            )]
            [(Assignment
                0
                s
                (+ s (FuncCallOrArray
                    a
                    []
                    [(()
                    i
                    ()
                    0)]
                    []
                    []
                    []
                ))
                ()
            )]
            ()
            ()
        )
        (DoConcurrentLoop
            0
            ()
            [(ConcurrentControl
                ()
                i
                1
                N
                ()
            )]
            ()
            [(ConcurrentReduce
                ReduceMAX
                [s]
            )]
            [(Assignment
                0
                s
                (+ s (FuncCallOrArray
                    a
                    []
                    [(()
                    i
                    ()
                    0)]
                    []
                    []
                    []
                ))
                ()
            )]
            ()
            ()
        )]
        []
        []
    )]
)
