ComplexConstructor¶
Complex constructor expression.
Declaration¶
Syntax¶
ComplexConstructor(expr re, expr im, ttype type, expr? value)
Arguments¶
| Argument name | Argument Description | 
|---|---|
| 
 | real expression | 
| 
 | imaginary expression | 
| 
 | table entry type | 
| 
 | expression value | 
Return values¶
The return value is the expression that the ComplexConstructor represents.
Description¶
ComplexConstructor represents constructor of complex type. A complex literal constant is a complex constructor where each expression if a pair of initialisation expressions.
Types¶
Only accepts complex and real types. The imaginary part can be 0 or can have value.
Examples¶
program complex
    integer :: i = 42
    real :: x = 3.14
    complex :: z1, z2
    z1 = cmplx(i, x)
    print *, z1, cmplx(x, kind=8)
    z2 = cmplx(z2, kind=8)
end program complex
ASR:
(TranslationUnit
    (SymbolTable
        1
        {
            complex:
                (Program
                    (SymbolTable
                        2
                        {
                            i:
                                (Variable
                                    2
                                    i
                                    Local
                                    (IntegerConstant 42 (Integer 4 []))
                                    ()
                                    Save
                                    (Integer 4 [])
                                    Source
                                    Public
                                    Required
                                    .false.
                                ),
                            x:
                                (Variable
                                    2
                                    x
                                    Local
                                    (RealConstant
                                        3.140000
                                        (Real 4 [])
                                    )
                                    ()
                                    Save
                                    (Real 4 [])
                                    Source
                                    Public
                                    Required
                                    .false.
                                ),
                            z1:
                                (Variable
                                    2
                                    z1
                                    Local
                                    ()
                                    ()
                                    Default
                                    (Complex 4 [])
                                    Source
                                    Public
                                    Required
                                    .false.
                                ),
                            z2:
                                (Variable
                                    2
                                    z2
                                    Local
                                    ()
                                    ()
                                    Default
                                    (Complex 4 [])
                                    Source
                                    Public
                                    Required
                                    .false.
                                )
                        })
                    complex
                    []
                    [(=
                        (Var 2 z1)
                        (ComplexConstructor
                            (Var 2 i)
                            (Var 2 x)
                            (Complex 4 [])
                            ()
                        )
                        ()
                    )
                    (Print
                        ()
                        [(Var 2 z1)
                        (ComplexConstructor
                            (Var 2 x)
                            (RealConstant
                                0.000000
                                (Real 8 [])
                            )
                            (Complex 8 [])
                            ()
                        )]
                        ()
                        ()
                    )
                    (=
                        (Var 2 z2)
                        (Var 2 z2)
                        ()
                    )]
                )
        })
    []
)