#include function mv_0( I: [[int]], D: [[real]], V: [real] ): [real] { return dpl_reduce_plus_p( let V1_2 = D, V2_3 = let V1_7 = V, V2_8 = 1, V3_9 = I in dpl_insert( dpl_index_nr_p( V1_7 , V2_8, dpl_extract( V3_9, 1 ) ), V3_9, 1 ) in dpl_insert( dpl_mult_p( dpl_extract( V1_2, 1 ), dpl_extract( V2_3, 1 ) ), V1_2, 1 ) ); } var m: int; var n: int; var k: int; var I: [[int]]; var D: [[real]]; var V: [real]; var R: real; m = 40; n = 40; k = 2; I = dpl_restrict_p( let cse_14 = [ 1.. m ], cse_16 = dpl_dist_i( k, m ), cse_6 = dpl_range_p( dpl_sub_p( cse_14, cse_16 ), dpl_add_p( cse_14, cse_16 ) ), cse_15 = dpl_length_p( cse_6 ), V1_4 = let V1_10 = cse_6, V2_11 = dpl_dist_p( dpl_dist_i( 1, m ), cse_15 ) in dpl_insert( dpl_grteq_p( dpl_extract( V1_10, 1 ), dpl_extract( V2_11, 1 ) ), V1_10, 1 ), V2_5 = let V1_12 = cse_6, V2_13 = dpl_dist_p( dpl_dist_i( n, m ), cse_15 ) in dpl_insert( dpl_leseq_p( dpl_extract( V1_12, 1 ), dpl_extract( V2_13, 1 ) ), V1_12, 1 ) in dpl_insert( dpl_and_p( dpl_extract( V1_4, 1 ), dpl_extract( V2_5, 1 ) ), V1_4, 1 ), dpl_range_p ( dpl_sub_p( [ 1.. m ], dpl_dist_i( k, m ) ), dpl_add_p( [ 1.. m ], dpl_dist_i( k, m ) ) ) ); D = dpl_dist_p( dpl_dist_r( 1.000000, #I ), dpl_length_p( I ) ); V = dpl_dist_r( 1.000000, n ); R = +/ mv_0( I, D, V ); show( R );