cf(sqrt(72)) returns [8,2,2], whose value is 42/5 = 8.4 against sqrt(72) = 8.485
Maxima 5.49post, SBCL 2.6.7.
doc/info/Number.texi explicitly sanctions sqrt(n) arguments to cf.
(%i1) display2d:false$
(%i2) cf(sqrt(72));
(%o2) [8,2,2]
(%i3) [ratsimp(cfdisrep([8,2,2])), float(sqrt(72))];
(%o3) [42/5,8.485281374238571]
(%i4) [cf(sqrt(968)), isqrt(968)];
(%o4) [[30,1,4],31]
(%i5) cf(sqrt(200));
(%o5) 14
(%i6) cfdisrep(cf(sqrt(200)));
cfdisrep: argument must be a list; found 14
(%i7) [cf(sqrt(2)), cf(sqrt(3)), cf(sqrt(8))];
(%o7) [[1,2],[1,1,2],[2,1,4]]
Expected: cf(sqrt(72)) = [8,2,16]; cf(sqrt(968)) = [31,8,1,6,1,8,62]; cf(sqrt(200)) = [14,7,28] as a list.
(%o3) shows the returned fraction is off by 0.085, larger than the convergent bound 1/q^2 = 1/25, so it is not a convergent of the true expansion at all. In (%o4) the very first partial quotient is wrong: it must be floor(sqrt(968)) = 31, not 30. (%o5) returns a bare integer rather than a list, which (%o6) shows breaks cfdisrep.
(%o7) are correct, so the sqrt path works in general; the failures are the n whose sqrt simplifies to k*m^(odd/2).