Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.

Help With EOSHIFT

Ernie_P_1
Beginner
797 Views

Hi,

I have an array as follows:
ARRAY1(50,78)

I want to perform an EOSHIFT for only one value of dimension 1. For example, I want to shift all of the following values:

ARRAY1(16,1:78)

My example has 16 but I want this to be dynamic. I want to leave all other values unchanged. ARRAY1(1:15,1:78) and ARRAY1(17:50,1:78) should be unchanged.

I think I can use this:

INTEGER SHIFT(50)
INTEGER MY_INT
SHIFT=0
MY_INT = 16
SHIFT(MY_INT) = 1
ARRAY1 = EOSHIFT(ARRAY1, SHIFT, DIM=2)

I'm pretty sure this will work butis therea more efficient way?
Can I eliminate the SHIFT array with 50 elements?

Thanks,
Ernie P.

0 Kudos
1 Solution
IanH
Honored Contributor III
797 Views
Perhaps
[fortran]array1(my_int,:) = EOSHIFT(array1(my_int,:), 1)[/fortran]
The compiler may (?) still create temporary arrays for the expression and assignment, but at least it's reasonably clear from the line of source what your intent is.

View solution in original post

0 Kudos
2 Replies
IanH
Honored Contributor III
798 Views
Perhaps
[fortran]array1(my_int,:) = EOSHIFT(array1(my_int,:), 1)[/fortran]
The compiler may (?) still create temporary arrays for the expression and assignment, but at least it's reasonably clear from the line of source what your intent is.
0 Kudos
Ernie_P_1
Beginner
797 Views

IanH,

Works. Thanks a lot!

Ernie P.

0 Kudos
Reply