0

I'm trying to create a Karatsuba algorithm in python for two polynomials of the same degree which should return an array of the coefficients of the result.

def karatsuba(a, b):  

    n = len(a)

    aHigh = []
    aLow = []

    bHigh = []
    bLow = []

    c = []

    for i in range(n//2):
        aLow.append(a[i])
        bLow.append(b[i])

    for i in range(n//2):
        aHigh.append(a[n//2+i])
        bHigh.append(b[n//2+i])

    tA = []
    tB = []

    for i in range(n//2):
        tA.append(aLow[i] + aHigh[i])
        tB.append(bLow[i] + bHigh[i])

    cMid = karatsuba(tA, tB)
    cLow = karatsuba(aLow, bLow)
    cHigh = karatsuba(aHigh, bHigh)

    for i in range(n-1):
        c.append(cLow[i])

    c[n-1] = 0

    for i in range(n-1):
        c.append(cHigh[i])

    for i in range(n-1):
        c[n//2 + i] += cMid[i] - (cLow[i] + cHigh[i])

    return c

I get a max recursion depth error at cMid = karatsuba(tA, tB). Does anyone have any input? I would appreciate it so much!

Engineero
  • 12,340
  • 5
  • 53
  • 75

0 Answers0