poly.spad line 1314 [edit on github]
This package implements Karatsuba's trick for multiplying (large) univariate polynomials. It could be improved with a version doing the work on place and also with a special case for squares. We've done this in Basicmath, but we believe that this out of the scope of FriCAS.
karatsuba(a, b, l, k) returns a*b by applying Karatsuba's trick provided that both a and b have at least l terms and k > 0 holds and by calling noKaratsuba otherwise. The other multiplications are performed by recursive calls with the same third argument and k-1 as fourth argument.
karatsuba(a, b) returns a*b by applying Karatsuba's trick once. The other multiplications are performed by calling * from U.
noKaratsuba(a, b) returns a*b without using Karatsuba's trick at all.