<s> import numpy as np <EOL> mu = <NUM_LIT:0.1> <EOL> Lx , Ly = <NUM_LIT> , <NUM_LIT> <EOL> N = <NUM_LIT:1000> <EOL> import parakeet <EOL> import parakeet . c_backend <EOL> def diffuse_loops ( iter_num ) : <EOL> u = np . zeros ( ( Lx , Ly ) , dtype = np . float64 ) <EOL> temp_u = np . zeros_like ( u ) <EOL> temp_u [ Lx / <NUM_LIT:2> , Ly / <NUM_LIT:2> ] = <NUM_LIT> <EOL> for n in range ( iter_num ) : <EOL> for i in range ( <NUM_LIT:1> , Lx - <NUM_LIT:1> ) : <EOL> for j in range ( <NUM_LIT:1> , Ly - <NUM_LIT:1> ) : <EOL> u [ i , j ] = mu * ( temp_u [ i + <NUM_LIT:1> , j ] + temp_u [ i - <NUM_LIT:1> , j ] + <EOL> temp_u [ i , j + <NUM_LIT:1> ] + temp_u [ i , j - <NUM_LIT:1> ] - <EOL> <NUM_LIT:4> * temp_u [ i , j ] ) <EOL> temp = u <EOL> u = temp_u <EOL> temp_u = temp <EOL> return u <EOL> def diffuse_array_expressions ( iter_num ) : <EOL> u = np . zeros ( ( Lx , Ly ) , dtype = np . float64 ) <EOL> temp_u = np . zeros_like ( u ) <EOL> temp_u [ Lx / <NUM_LIT:2> , Ly / <NUM_LIT:2> ] = <NUM_LIT> <EOL> for i in range ( iter_num ) : <EOL> u [ <NUM_LIT:1> : - <NUM_LIT:1> , <NUM_LIT:1> : - <NUM_LIT:1> ] = mu * ( temp_u [ <NUM_LIT:2> : , <NUM_LIT:1> : - <NUM_LIT:1> ] + temp_u [ : - <NUM_LIT:2> , <NUM_LIT:1> : - <NUM_LIT:1> ] + <EOL> temp_u [ <NUM_LIT:1> : - <NUM_LIT:1> , <NUM_LIT:2> : ] + temp_u [ <NUM_LIT:1> : - <NUM_LIT:1> , : - <NUM_LIT:2> ] - <EOL> <NUM_LIT:4> * temp_u [ <NUM_LIT:1> : - <NUM_LIT:1> , <NUM_LIT:1> : - <NUM_LIT:1> ] ) <EOL> temp = u <EOL> u = temp_u <EOL> temp_u = temp <EOL> return u <EOL> from compare_perf import compare_perf <EOL> compare_perf ( diffuse_loops , [ N ] , numba = True ) <EOL> compare_perf ( diffuse_array_expressions , [ N ] , numba = True ) </s>
