Remix.run Logo
srean 3 hours ago

Very interesting. Does LFortran have the same internal array layout as the standard C runtime ?

A shared layout and a shared calling convention would be very nice.

Sorry about my naive question. Haven't touched Fortran directly in three decades I think.

EDIT: thanks for your reply. For some reason it has been flagged dead. So am responding here. You can mail dang hn at ycombinator dot co m about the flagging. He is very nice.

kmaitreys an hour ago | parent | next [-]

I would also like to know this. Fortran itself is column-major, so I would guess the internal layout isn't same for multi-dimensional arrays when compared to row-major C? I'm not sure how LFortran represents arrays internally though.

assemmedhat 17 minutes ago | parent [-]

LFortran internally uses column-major, so interchanging data with C should be done carefully for multi-dimensional arrays. If row-major representation is highly needed feature, We can introduce a flag to do that. I'm not totally sure about that but it's doable under some conditions for sure.

an hour ago | parent | prev | next [-]
[deleted]
wombatpm 2 hours ago | parent | prev | next [-]

Lots of scientific code in Fortran has sparse arrays, so a NxN array that only has values on 5 diagonals will store that as 5xN array to save memory allowing you to run a larger problem.

srean 2 hours ago | parent [-]

That's a very orthogonal issue.

Sparse arrays are supported on C libraries too. I have done my time with CSC and CSR even inside Python that called out to C libraries.

dionhaefner 2 hours ago | parent | prev | next [-]

[dead]

dionhaefner 2 hours ago | parent | prev [-]

[flagged]