lpython icon indicating copy to clipboard operation
lpython copied to clipboard

Implement numpy.size() and numpy.shape()

Open certik opened this issue 3 years ago • 4 comments

And use the ArraySize intrinsic.

certik avatar Jan 24 '23 17:01 certik

Also shape()

certik avatar Jan 24 '23 18:01 certik

Next on my TODO list (after https://github.com/lfortran/lfortran/issues/1210).

czgdp1807 avatar Jan 24 '23 19:01 czgdp1807

numpy.size() has already been completed in this #1777 .

Also shape()

I can try to add this. But for shape we would need another intrinsic like ArrayShape right?

faze-geek avatar Feb 16 '24 07:02 faze-geek

Use the Shape IntrinsicArrayFunction. Here is how LFortran does it:

integer(8) :: x(2, 2)
print*, shape(x)
end

It gives:

                    [(Print
                        [(IntrinsicArrayFunction
                            Shape
                            [(ArrayPhysicalCast
                                (Var 2 x)
                                FixedSizeArray
                                DescriptorArray
                                (Array
                                    (Integer 8)
                                    [((IntegerConstant 1 (Integer 4))
                                    (IntegerConstant 2 (Integer 4)))
                                    ((IntegerConstant 1 (Integer 4))
                                    (IntegerConstant 2 (Integer 4)))]
                                    DescriptorArray
                                )
                                ()
                            )]
                            0
                            (Array
                                (Integer 4)
                                [((IntegerConstant 1 (Integer 4))
                                (IntegerConstant 2 (Integer 4)))]
                                FixedSizeArray
                            )
                            (ArrayConstant
                                [(IntegerConstant 2 (Integer 4))
                                (IntegerConstant 2 (Integer 4))]
                                (Array
                                    (Integer 4)
                                    [((IntegerConstant 1 (Integer 4))
                                    (IntegerConstant 2 (Integer 4)))]
                                    FixedSizeArray
                                )
                                ColMajor
                            )
                        )]
                        ()
                        ()
                    )]

certik avatar Feb 16 '24 19:02 certik