"""Authored exact rectangular matrix product and separate output bias; not a tensor framework."""
from fractions import Fraction as F
import json
def shape(a):
    if not a or not a[0] or any(len(r)!=len(a[0]) for r in a):raise ValueError('nonempty rectangular matrix')
    return len(a),len(a[0])
def matmul(a,b):
    m,k=shape(a);q,n=shape(b)
    if k!=q:raise ValueError('inner dimensions differ')
    return [[sum((F(a[i][t])*F(b[t][j]) for t in range(k)),F(0)) for j in range(n)] for i in range(m)]
def fmt(a):return [[str(v) for v in r] for r in a]
def demo():
    x=[[1,2,0],[-1,0,3]];w=[[2,1],[0,-1],[1,2]];bias=[F(1,2),-F(1,2)]
    product=matmul(x,w);assert product==[[2,-1],[1,5]]
    output=[[v+bias[j] for j,v in enumerate(r)] for r in product]
    assert output==[[F(5,2),-F(3,2)],[F(3,2),F(9,2)]]
    reverse=matmul(w,x);assert shape(reverse)==(3,3)
    rejects=[]
    for label,a,b in [('transposed_wrong_inner',x,list(map(list,zip(*w)))),('ragged',[[1,2],[3]],w),('empty',[],w)]:
        try:matmul(a,b)
        except ValueError:rejects.append(label)
        else:raise AssertionError(label)
    return {'X':x,'W':w,'input_shape':list(shape(x)),'weight_shape':list(shape(w)),'actual_product':fmt(product),'bias_shared_across_rows':[str(v) for v in bias],'actual_affine_output':fmt(output),'reverse_WX':fmt(reverse),'reverse_shape':list(shape(reverse)),'first_output_dot_terms':['1*2','2*0','0*1'],'rejected':rejects,'model_training_embedding_or_tensorflow_run':False}
if __name__=='__main__':print(json.dumps(demo(),ensure_ascii=False,indent=2))
