/******************************************************************************** * * Livermoore Loop no 1 * * Hydro Fragment * Parallel Algorithm * ********************************************************************************/ use StdIO: all; use Array: all; inline double[.] mytake( int[1] n, double[.] y) { z = with { ( . <= iv <= .) : y[iv]; } : genarray( n, 0.0); return (z); } inline double[.] mydrop( int[1] n, double[.] y) { shpz = shape(y) - n; z = with { ( . <= iv <= .) : y[ n + iv]; } : genarray( shpz, 0.0); return( z); } double[.], double Loop1( int i, int n, double q, double r, double t, double[1000] y, double[1000] z, double xx) { val = q + ( mytake([n], y) * ( r * mytake( [n], mydrop( [10], z)) + t * mytake( [n], mydrop( [11], z)))); xx = xx + 1.0; return(val, xx); } inline double[.] genArray(int size, int different) { A = tod(different + iota(size)); return(A); } int main () { iterations = 500000; arraysize = 1000; n = 990; q = 1.6; r = 9.4; t = 5.8; yyy = genArray(arraysize, 1); zzz = genArray(arraysize, 2); res1 = zzz; xx = 0.0; for (i=1; i<=iterations; i++){ res1, xx = Loop1( i, n, q, r, t, yyy, zzz, xx); } StdIO::show(res1[0]); StdIO::show(xx); return(0); }