src/utils/matrix/operation/WinogradConvolutionMatrixOperation.java
public void apply(int row, int column, double value) throws MatrixException {
        final Matrix G1 = new DMatrix(4, 3);
        Matrix Gprime = new DMatrix(4, 4);
        final Matrix C1 = new DMatrix(4, 4);
        final Matrix Crime = new DMatrix(4, 4);
        final Matrix GCprime = new DMatrix(4, 4);
        final Matrix AT1 = new DMatrix(2, 4);
        input.sliceAt(row, column, row + 3, column + 3);
        if (G != null) {
            G.dot(filter, G1);
            G1.dot(GT, Gprime);
        }
        else Gprime = filter;
        CT.dot(input, C1);
        C1.dot(C, Crime);
        Gprime.dot(Crime, GCprime);
        AT.dot(GCprime, AT1);
        result.sliceAt(row, column, row + 1, column + 1);
        AT1.dot(A, result);
        input.unslice();
        result.unslice();
    }
/**
     * Applies operation.
     *
     * @param row current row.
     * @param column current column.
     * @param value current value.
     * @throws MatrixException throws exception if matrix operation fails.
     */
Applies operation.

@param row current row.
@param column current column.
@param value current value.
@throws MatrixException throws exception if matrix operation fails.
Applies operation . @param row current row . @param column current column . @param value current value . @throws MatrixException throws exception if matrix operation fails .
public void apply(int row, int column, double value) throws MatrixException {
        final Matrix G1 = new DMatrix(4, 3);
        Matrix Gprime = new DMatrix(4, 4);
        final Matrix C1 = new DMatrix(4, 4);
        final Matrix Crime = new DMatrix(4, 4);
        final Matrix GCprime = new DMatrix(4, 4);
        final Matrix AT1 = new DMatrix(2, 4);
        input.sliceAt(row, column, row + 3, column + 3);
        if (G != null) {
            G.dot(filter, G1);
            G1.dot(GT, Gprime);
        }
        else Gprime = filter;
        CT.dot(input, C1);
        C1.dot(C, Crime);
        Gprime.dot(Crime, GCprime);
        AT.dot(GCprime, AT1);
        result.sliceAt(row, column, row + 1, column + 1);
        AT1.dot(A, result);
        input.unslice();
        result.unslice();
    }
public void apply ( int row , int column , double value ) throws MatrixException { final Matrix G1 = new DMatrix ( 4 , 3 ) ; Matrix Gprime = new DMatrix ( 4 , 4 ) ; final Matrix C1 = new DMatrix ( 4 , 4 ) ; final Matrix Crime = new DMatrix ( 4 , 4 ) ; final Matrix GCprime = new DMatrix ( 4 , 4 ) ; final Matrix AT1 = new DMatrix ( 2 , 4 ) ; input . sliceAt ( row , column , row + 3 , column + 3 ) ; if ( G != null ) { G . dot ( filter , G1 ) ; G1 . dot ( GT , Gprime ) ; } else Gprime = filter ; CT . dot ( input , C1 ) ; C1 . dot ( C , Crime ) ; Gprime . dot ( Crime , GCprime ) ; AT . dot ( GCprime , AT1 ) ; result . sliceAt ( row , column , row + 1 , column + 1 ) ; AT1 . dot ( A , result ) ; input . unslice ( ) ; result . unslice ( ) ; }
Applies operation.
Applies operation .