import flame import laff as laff def Mvmult_n_unb_var2(A, x, y): AL, AR = flame.part_1x2(A, \ 0, 'LEFT') xT, \ xB = flame.part_2x1(x, \ 0, 'TOP') while AL.shape[1] < A.shape[1]: A0, a1, A2 = flame.repart_1x2_to_1x3(AL, AR, \ 1, 'RIGHT') x0, \ chi1, \ x2 = flame.repart_2x1_to_3x1(xT, \ xB, \ 1, 'BOTTOM') #------------------------------------------------------------# laff.axpy( chi1, a1, y ) #------------------------------------------------------------# AL, AR = flame.cont_with_1x3_to_1x2(A0, a1, A2, \ 'LEFT') xT, \ xB = flame.cont_with_3x1_to_2x1(x0, \ chi1, \ x2, \ 'TOP') from numpy import random from numpy import matrix A = matrix( random.rand( 4,3 ) ) x = matrix( random.rand( 3,1 ) ) y = matrix( random.rand( 4,1 ) ) yold = matrix( random.rand( 4,1 ) ) print( 'y before =' ) print( y ) print( 'x before =' ) print( x ) print( 'y before =' ) print( y ) laff.copy( y, yold ) # save the original vector y Mvmult_n_unb_var2( A, x, y ) print( 'y after =' ) print( y ) print( 'y - ( A * x + yold ) = ' ) print( y - ( A * x + yold ) )