     C cols>>
     A Mwidth
     alpha
-    A underlying>>
+    A
     A ld>>
-    B underlying>>
+    B
     B ld>>
     beta
-    C underlying>>
+    C
     C ld>>
     C f >>transpose ; inline
 

    A rows>>
    A cols>>
    alpha
    A underlying>>
    A ld>>
    x underlying>>
    x inc>>
    beta
    y underlying>>
    y inc>>
    y ; inline

: (validate-ger) ( x y A -- )
    {
        [ nip  [ length>> ] [ Mheight ] bi* = ]
        [ nipd [ length>> ] [ Mwidth  ] bi* = ]
    } 3&&
    [ "Mismatched vertices and matrix in vector outer product" throw ]
    unless ;

    A rows>>
    A cols>>
    alpha
    x
    x inc>>
    y
    y inc>>
    A
    A ld>>
    A f >>transpose ; inline

: (validate-gemm) ( A B C -- )
    {
        [ [ Mwidth  ] [ Mheight ] [ drop    ] tri* = ]
        [ [ Mheight ] [ drop    ] [ Mheight ] tri* = ]
        [ [ drop    ] [ Mwidth  ] [ Mwidth  ] tri* = ]
    } 3&&
    [ "Mismatched matrices in matrix multiplication" throw ]
    unless ;
