Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
2 Views

Trying to understand how dimension works

Hello, I'm trying to understand the difference between the following lines of code, as the output appears to be the same.


Version 1

complex(kind=c_double_complex), dimension(1:4,1:8,1:16) :: Z

Version 2

complex(kind=c_double_complex), dimension(4,8,16) :: Z

When I print Z the output is exactly the same. Complex, all zeros.

print *, Z

I'm transcribing this code into another language, and I'm trying to understand why  "dimension(1:4,1:8,1:16)" is used instead of "dimension(4,8,16)"

0 Kudos
4 Replies
Highlighted
Valued Contributor II
2 Views

In Fortran the start index is

In Fortran the start index is 1 by default. The 1:4 is the same as 4. The 1: is redundant. I would guess the coder was more familiar with a language where 0 is the start index..... 

0 Kudos
Highlighted
Black Belt
2 Views

Or, the coder employed 0-base

Or, the coder employed 0-base arrays in many places elsewhere in the code, and wanted to emphasize that in this place a different base index was being used. We would have to see the whole code to judge.

0 Kudos
Highlighted
New Contributor I
2 Views

!

  !
    real*4 d(0:nx,0:ny),x(0:nx),y(0:ny),z(1:nc)
    real*4 trace(0:nx,0:ny), sum(0:nx),XTrace(0:nx,0:ny)
    real*4 traceR(0:nx,0:ny), XRTrace(0:nx,0:ny)
    real*4 x1,y1,x2,y2
    real*4 xdelta, ydelta, x4,y4,x3,y3, maxX, maxY
    real*4 zmax,zmin, dist
    integer*4 i,j, count, counter, k

 

This is a sample from the program CONREC.  Conrec was developed and published in BYTE in about 1986 

 !
    !     The following is a simplistic application of the CONREC routine.
    !     A mathematical function is evaluated over a regular grid of points
    !     on a computer raster graphics screen.
    !
    !     Paul D. Bourke
    !

The original code was not in Fortran and I translated the code into Fortran, I kept the zero indexing so I could check the code easily.  There is a web page where this routine has been translated in many languages.  I prefer a regular array instead of the triangles that can be a beast. 

Each language has a standard index start - so C is usually zero.  Thankfully LISP is easier to use but is a beast of language to learn. 

You need  to be careful - although in Fortran not using a standard Z(30) would be unusual -- but each to their own. 

 

0 Kudos
Highlighted
New Contributor I
2 Views

I was mistaken -- I apologize

I was mistaken -- I apologize to Paul Bourke who provided the CONREC code in Fortran -- I translated his Fortran into C#.  

I did add a DXF generator to the CONREC program in Fortran. 

0 Kudos