### Related

##### mat_fullunblocker

? mat_fullunblocker;

Calculate

##### mat_fullunblocker

? mat_fullunblocker;

Calculate

### mat_fullunblocker

Run Example
```(%i1)C4ex : matrix([C4,zeromatrix(3,3)],[zeromatrix(3,3),C4]);
[              [ 0  0  0 ] ]
[              [         ] ]
[     C4       [ 0  0  0 ] ]
[              [         ] ]
[              [ 0  0  0 ] ]
(%o1)                    [                          ]
[ [ 0  0  0 ]              ]
[ [         ]              ]
[ [ 0  0  0 ]      C4      ]
[ [         ]              ]
[ [ 0  0  0 ]              ]
(%i2) C4exi : matrix([C4i,zeromatrix(3,3)],[zeromatrix(3,3),C4i]);
[              [ 0  0  0 ] ]
[              [         ] ]
[     C4i      [ 0  0  0 ] ]
[              [         ] ]
[              [ 0  0  0 ] ]
(%o2)                    [                          ]
[ [ 0  0  0 ]              ]
[ [         ]              ]
[ [ 0  0  0 ]      C4i     ]
[ [         ]              ]
[ [ 0  0  0 ]              ]
(%i3) C4 : (2/3)*matrix([1/sqrt(2),1/sqrt(2),1/sqrt(2)],[1,-1/2,-1/2],[0,sqrt(3)/2,-sqrt(3)/2]);
[ sqrt(2)  sqrt(2)   sqrt(2)  ]
[ -------  -------   -------  ]
[    3        3         3     ]
[                             ]
[    2         1         1    ]
(%o3)                   [    -       - -       - -    ]
[    3         3         3    ]
[                             ]
[             1          1    ]
[    0     -------  - ------- ]
[          sqrt(3)    sqrt(3) ]
(%i4) C4i : ratsimp(invert(C4));
[    1                    ]
[ -------   1       0     ]
[ sqrt(2)                 ]
[                         ]
[    1       1   sqrt(3)  ]
(%o4)                     [ -------  - -   -------  ]
[ sqrt(2)    2      2     ]
[                         ]
[    1       1    sqrt(3) ]
[ -------  - -  - ------- ]
[ sqrt(2)    2       2    ]
(%i5) C4ex : mat_fullunblocker(ev(C4ex));
[ sqrt(2)  sqrt(2)   sqrt(2)                               ]
[ -------  -------   -------      0        0         0     ]
[    3        3         3                                  ]
[                                                          ]
[    2         1         1                                 ]
[    -       - -       - -        0        0         0     ]
[    3         3         3                                 ]
[                                                          ]
[             1          1                                 ]
[    0     -------  - -------     0        0         0     ]
[          sqrt(3)    sqrt(3)                              ]
(%o5)    [                                                          ]
[                              sqrt(2)  sqrt(2)   sqrt(2)  ]
[    0        0         0      -------  -------   -------  ]
[                                 3        3         3     ]
[                                                          ]
[                                 2         1         1    ]
[    0        0         0         -       - -       - -    ]
[                                 3         3         3    ]
[                                                          ]
[                                          1          1    ]
[    0        0         0         0     -------  - ------- ]
[                                       sqrt(3)    sqrt(3) ]
(%i6) C4exi : ratsimp(invert(C4ex));
[    1                                             ]
[ -------   1       0         0      0       0     ]
[ sqrt(2)                                          ]
[                                                  ]
[    1       1   sqrt(3)                           ]
[ -------  - -   -------      0      0       0     ]
[ sqrt(2)    2      2                              ]
[                                                  ]
[    1       1    sqrt(3)                          ]
[ -------  - -  - -------     0      0       0     ]
[ sqrt(2)    2       2                             ]
(%o6)        [                                                  ]
[                             1                    ]
[    0      0       0      -------   1       0     ]
[                          sqrt(2)                 ]
[                                                  ]
[                             1       1   sqrt(3)  ]
[    0      0       0      -------  - -   -------  ]
[                          sqrt(2)    2      2     ]
[                                                  ]
[                             1       1    sqrt(3) ]
[    0      0       0      -------  - -  - ------- ]
[                          sqrt(2)    2       2    ]
(%i7) ```
Run Example
```B:matrix([-1,-4,5],[3,12,0]);
[ - 1  - 4  5 ]
(%o1)                           [             ]
[  3   12   0 ]
(%i2) BI:matrix([B,ident(2)]);
[ [ - 1  - 4  5 ]  [ 1  0 ] ]
(%o2)                    [ [             ]  [      ] ]
[ [  3   12   0 ]  [ 0  1 ] ]
(%i3) BI:mat_fullunblocker(BI);
[ - 1  - 4  5  1  0 ]
(%o3)                        [                   ]
[  3   12   0  0  1 ]
(%i4) BI:triangularize(BI);
[ 3  12  0   0  1 ]
(%o4)                         [                 ]
[ 0  0   15  3  1 ]
(%i5) P:submatrix(BI,1,2,3);
[ 0  1 ]
(%o5)                              [      ]
[ 3  1 ]
(%i6) BJ:mat_fullunblocker(matrix([submatrix(BI,4,5)],[ident(3)]));
[ 3  12  0  ]
[           ]
[ 0  0   15 ]
[           ]
(%o6)                            [ 1  0   0  ]
[           ]
[ 0  1   0  ]
[           ]
[ 0  0   1  ]
(%i7) BJ:transpose(echelon(transpose(BJ)));
[ 1  0    0  ]
[            ]
[ 0  1    0  ]
[            ]
[ 1          ]
[ -  0    1  ]
[ 3          ]
(%o7)                           [            ]
[          1 ]
[ 0  0   - - ]
[          4 ]
[            ]
[    1       ]
[ 0  --   0  ]
[    15      ]
(%i8) J:submatrix(3,4,5,BJ);
[ 1  0  0 ]
(%o8)                             [         ]
[ 0  1  0 ]
(%i9) Q:submatrix(1,2,BJ);
[ 1          ]
[ -  0    1  ]
[ 3          ]
[            ]
[          1 ]
(%o9)                           [ 0  0   - - ]
[          4 ]
[            ]
[    1       ]
[ 0  --   0  ]
[    15      ]
(%i10) P.B.Q;
[ 1  0  0 ]
(%o10)                            [         ]
[ 0  1  0 ]
(%i11) G:Q.transpose(J).P;
[    1  ]
[ 0  -  ]
[    3  ]
[       ]
(%o11)                             [ 0  0  ]
[       ]
[ 1  1  ]
[ -  -- ]
[ 5  15 ]
(%i12) B.G.B;
[ - 1  - 4  5 ]
(%o12)                          [             ]
[  3   12   0 ]
(%i13) ```
Run Example
```B:matrix([-1,-4,5],[3,12,0]);
[ - 1  - 4  5 ]
(%o1)                           [             ]
[  3   12   0 ]
(%i2) BI:matrix([B,ident(2)]);
[ [ - 1  - 4  5 ]  [ 1  0 ] ]
(%o2)                    [ [             ]  [      ] ]
[ [  3   12   0 ]  [ 0  1 ] ]
(%i3) BI:mat_fullunblocker(BI);
[ - 1  - 4  5  1  0 ]
(%o3)                        [                   ]
[  3   12   0  0  1 ]
(%i4) BI:triangularize(BI);
[ 3  12  0   0  1 ]
(%o4)                         [                 ]
[ 0  0   15  3  1 ]
(%i5) P:submatrix(BI,1,2,3);
[ 0  1 ]
(%o5)                              [      ]
[ 3  1 ]
(%i6) BJ:mat_fullunblocker(matrix([submatrix(BI,4,5)],[ident(3)]));
[ 3  12  0  ]
[           ]
[ 0  0   15 ]
[           ]
(%o6)                            [ 1  0   0  ]
[           ]
[ 0  1   0  ]
[           ]
[ 0  0   1  ]
(%i7) BJ:transpose(echelon(transpose(BJ)));
[ 1  0    0  ]
[            ]
[ 0  1    0  ]
[            ]
[ 1          ]
[ -  0    1  ]
[ 3          ]
(%o7)                           [            ]
[          1 ]
[ 0  0   - - ]
[          4 ]
[            ]
[    1       ]
[ 0  --   0  ]
[    15      ]
(%i8) ```

### Related Help

Help for Mat_fullunblocker