Efficient way to compute square roots with bignums?

I'm trying to compute square roots on big numbers, returning fractions with a given precision of digits (1024 at the moment). This works fine for small ones, but for bigger ones is a problem because it is super slow (reaching more than 3 ms, my max desired speed).

I am currently using Halley's and Newton-Raphson's methods. I like Halley's ones because of its cubic convergence and smaller numerators and denominators, and Newton's one if it needs a bit more precision.

Can someone help me?

Any thoughts?....

These are the functions I use.

Halley's Method:

Newton-Raphson's Method: