@triton.autotune(configs=get_configs(), key=['m'])
@triton.jit
def _inverse(F_ptr, out_ptr, F_row_stride, out_row_stride, F_col_stride,
    out_col_stride, F_page_stride, out_page_stride, m, BLOCK_SIZE: tl.constexpr
    ):
    row_idx = tl.program_id(0) * BLOCK_SIZE + tl.arange(0, BLOCK_SIZE)
    mask = row_idx < m
    a11 = tl.load(F_ptr + row_idx * F_row_stride + 0 * F_col_stride + 0 *
        F_page_stride, mask=mask)
    a12 = tl.load(F_ptr + row_idx * F_row_stride + 0 * F_col_stride + 1 *
        F_page_stride, mask=mask)
    a13 = tl.load(F_ptr + row_idx * F_row_stride + 0 * F_col_stride + 2 *
        F_page_stride, mask=mask)
    a14 = tl.load(F_ptr + row_idx * F_row_stride + 0 * F_col_stride + 3 *
        F_page_stride, mask=mask)
    a21 = tl.load(F_ptr + row_idx * F_row_stride + 1 * F_col_stride + 0 *
        F_page_stride, mask=mask)
    a22 = tl.load(F_ptr + row_idx * F_row_stride + 1 * F_col_stride + 1 *
        F_page_stride, mask=mask)
    a23 = tl.load(F_ptr + row_idx * F_row_stride + 1 * F_col_stride + 2 *
        F_page_stride, mask=mask)
    a24 = tl.load(F_ptr + row_idx * F_row_stride + 1 * F_col_stride + 3 *
        F_page_stride, mask=mask)
    a31 = tl.load(F_ptr + row_idx * F_row_stride + 2 * F_col_stride + 0 *
        F_page_stride, mask=mask)
    a32 = tl.load(F_ptr + row_idx * F_row_stride + 2 * F_col_stride + 1 *
        F_page_stride, mask=mask)
    a33 = tl.load(F_ptr + row_idx * F_row_stride + 2 * F_col_stride + 2 *
        F_page_stride, mask=mask)
    a34 = tl.load(F_ptr + row_idx * F_row_stride + 2 * F_col_stride + 3 *
        F_page_stride, mask=mask)
    a41 = tl.load(F_ptr + row_idx * F_row_stride + 3 * F_col_stride + 0 *
        F_page_stride, mask=mask)
    a42 = tl.load(F_ptr + row_idx * F_row_stride + 3 * F_col_stride + 1 *
        F_page_stride, mask=mask)
    a43 = tl.load(F_ptr + row_idx * F_row_stride + 3 * F_col_stride + 2 *
        F_page_stride, mask=mask)
    a44 = tl.load(F_ptr + row_idx * F_row_stride + 3 * F_col_stride + 3 *
        F_page_stride, mask=mask)
    det = (a11 * a22 * a33 * a44 - a12 * a23 * a34 * a41 + a13 * a24 * a31 *
        a42 - a14 * a21 * a32 * a43 + a14 * a23 * a32 * a41 - a11 * a24 *
        a33 * a42 + a12 * a21 * a34 * a43 - a13 * a22 * a31 * a44 + a12 *
        a23 * a31 * a44 - a13 * a21 * a34 * a42 + a11 * a24 * a32 * a43 - 
        a14 * a22 * a33 * a41 + a14 * a21 * a33 * a42 - a12 * a24 * a31 *
        a43 + a13 * a22 * a34 * a41 - a11 * a23 * a32 * a44 + a13 * a21 *
        a32 * a44 - a11 * a22 * a34 * a43 + a12 * a24 * a33 * a41 - a14 *
        a23 * a31 * a42 + a14 * a22 * a31 * a43 - a13 * a24 * a32 * a41 + 
        a11 * a23 * a34 * a42 - a12 * a21 * a33 * a44)
    c11 = (a22 * a33 * a44 + a23 * a34 * a42 + a24 * a32 * a43 - a24 * a33 *
        a42 - a23 * a32 * a44 - a22 * a34 * a43)
    c12 = -(a21 * a33 * a44 + a23 * a34 * a41 + a24 * a31 * a43 - a24 * a33 *
        a41 - a23 * a31 * a44 - a21 * a34 * a43)
    c13 = (a21 * a32 * a44 + a22 * a34 * a41 + a24 * a31 * a42 - a24 * a32 *
        a41 - a22 * a31 * a44 - a21 * a34 * a42)
    c14 = -(a21 * a32 * a43 + a22 * a33 * a41 + a23 * a31 * a42 - a23 * a32 *
        a41 - a22 * a31 * a43 - a21 * a33 * a42)
    c21 = -(a12 * a33 * a44 + a13 * a34 * a42 + a14 * a32 * a43 - a14 * a33 *
        a42 - a13 * a32 * a44 - a12 * a34 * a43)
    c22 = (a11 * a33 * a44 + a13 * a34 * a41 + a14 * a31 * a43 - a14 * a33 *
        a41 - a13 * a31 * a44 - a11 * a34 * a43)
    c23 = -(a11 * a32 * a44 + a12 * a34 * a41 + a14 * a31 * a42 - a14 * a32 *
        a41 - a12 * a31 * a44 - a11 * a34 * a42)
    c24 = (a11 * a32 * a43 + a12 * a33 * a41 + a13 * a31 * a42 - a13 * a32 *
        a41 - a12 * a31 * a43 - a11 * a33 * a42)
    c31 = (a12 * a23 * a44 + a13 * a24 * a42 + a14 * a22 * a43 - a14 * a23 *
        a42 - a13 * a22 * a44 - a12 * a24 * a43)
    c32 = -(a11 * a23 * a44 + a13 * a24 * a41 + a14 * a21 * a43 - a14 * a23 *
        a41 - a13 * a21 * a44 - a11 * a24 * a43)
    c33 = (a11 * a22 * a44 + a12 * a24 * a41 + a14 * a21 * a42 - a14 * a22 *
        a41 - a12 * a21 * a44 - a11 * a24 * a42)
    c34 = -(a11 * a22 * a43 + a12 * a23 * a41 + a13 * a21 * a42 - a13 * a22 *
        a41 - a12 * a21 * a43 - a11 * a23 * a42)
    c41 = -(a12 * a23 * a34 + a13 * a24 * a32 + a14 * a22 * a33 - a14 * a23 *
        a32 - a13 * a22 * a34 - a12 * a24 * a33)
    c42 = (a11 * a23 * a34 + a13 * a24 * a31 + a14 * a21 * a33 - a14 * a23 *
        a31 - a13 * a21 * a34 - a11 * a24 * a33)
    c43 = -(a11 * a22 * a34 + a12 * a24 * a31 + a14 * a21 * a32 - a14 * a22 *
        a31 - a12 * a21 * a34 - a11 * a24 * a32)
    c44 = (a11 * a22 * a33 + a12 * a23 * a31 + a13 * a21 * a32 - a13 * a22 *
        a31 - a12 * a21 * a33 - a11 * a23 * a32)
    tl.store(out_ptr + row_idx * out_row_stride + 0 * out_col_stride + 0 *
        out_page_stride, c11 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 0 * out_col_stride + 1 *
        out_page_stride, c21 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 0 * out_col_stride + 2 *
        out_page_stride, c31 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 0 * out_col_stride + 3 *
        out_page_stride, c41 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 1 * out_col_stride + 0 *
        out_page_stride, c12 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 1 * out_col_stride + 1 *
        out_page_stride, c22 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 1 * out_col_stride + 2 *
        out_page_stride, c32 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 1 * out_col_stride + 3 *
        out_page_stride, c42 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 2 * out_col_stride + 0 *
        out_page_stride, c13 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 2 * out_col_stride + 1 *
        out_page_stride, c23 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 2 * out_col_stride + 2 *
        out_page_stride, c33 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 2 * out_col_stride + 3 *
        out_page_stride, c43 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 3 * out_col_stride + 0 *
        out_page_stride, c14 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 3 * out_col_stride + 1 *
        out_page_stride, c24 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 3 * out_col_stride + 2 *
        out_page_stride, c34 / det, mask=mask)
    tl.store(out_ptr + row_idx * out_row_stride + 3 * out_col_stride + 3 *
        out_page_stride, c44 / det, mask=mask)
