block calc_c11(block A, block B, block C) { block tempC = C.block11();//scratch space tempC.add_scratch(); future<block> A11B11 = async(rec_mult, A.block11(), B.block11(), C.block11()); future<block> A12B21 = async(rec_mult, A.block12(), B.block21(), tempC); return add_blocks(A11B11.get(), A12B21.get(), C.block11()); }
block calc_c21(block A, block B, block C) { block tempC = C.block21(); tempC.add_scratch(); future<block> A21B11 = async(rec_mult, A.block21(), B.block11(), C.block21()); future<block> A22B21 = async(rec_mult, A.block22(), B.block21(), tempC); return add_blocks(A21B11.get(), A22B21.get(), C.block21()); }
block calc_c12(block A, block B, block C) { block tempC = C.block12(); tempC.add_scratch(); future<block> A11B12 = async(rec_mult, A.block11(), B.block12(), C.block12()); future<block> A12B22 = async(rec_mult, A.block12(), B.block22(), tempC); return add_blocks(A11B12.get(), A12B22.get(), C.block12()); }