C****************************************************************************** C FILE: arit03.f C DESCRIPTION: C Demonstrates factorization C****************************************************************************** PROGRAM arit03 IMPLICIT NONE INTEGER ARRAY_SIZE PARAMETER(ARRAY_SIZE = 1000000) REAL EPSILON, FFACTOR PARAMETER(EPSILON = 2.45) PARAMETER(FFACTOR = 0.337) INTEGER I INTEGER(8) T1, T2, IRTC REAL A(ARRAY_SIZE), AA(ARRAY_SIZE) REAL B(ARRAY_SIZE), BB(ARRAY_SIZE) REAL C(ARRAY_SIZE), CC(ARRAY_SIZE) REAL D(ARRAY_SIZE), DD(ARRAY_SIZE) REAL F, FF, X, XX C Initialization DO I=1, ARRAY_SIZE A(I) = I*1.0 B(I) = I*2.0 C(I) = I*3.0 D(I) = I*4.0 AA(I) = I*1.0 BB(I) = I*2.0 CC(I) = I*3.0 DD(I) = I*4.0 ENDDO C***************************************************************************** C* Untuned Loop * C***************************************************************************** T1 = IRTC() DO I=1,ARRAY_SIZE F = I/EPSILON * FFACTOR X = F*A(I) + F*B(I) + F*C(I) + F*D(I) ENDDO T2 = IRTC() WRITE(*,*)'Untuned loop took', (T2-T1)/1000000, 'msec' C***************************************************************************** C* Tuned Loop * C***************************************************************************** T1 = IRTC() DO I=1,ARRAY_SIZE FF = I/EPSILON * FFACTOR XX = FF*(AA(I) + BB(I) + CC(I) + DD(I)) ENDDO T2 = IRTC() WRITE(*,*)'Tuned loop took', (T2-T1)/1000000, 'msec' C Need to actually use the results of the calculations or else the C optimizing compiler may just skip doing them...so we'll just C print them. This will force the optimizer to actually do the work. PRINT *, X, XX 999 end