The algorithm is of course similar for the conjuguate Fourier transform. Let n be a power of two. Thus the product of two large integers with n digits has a complexity asymptotically equal to 3 FFTs. To square a number of size n, only one direct FFT is needed, thus the squaring complexity is asymptotically equal to 2 FFTs. In the practice, one should use the basic data type double in C to handle floating point numbers appearing in the Fourier transform.
Numerical errors appear during the computation.
But this bound is a worst case one and is very pessimistic. Choosing a base B of three or four digits usually suffices to have the desired accuracy for multiplying two large integers. This approach overpass numerical errors. But is seems that, except on special architectures, actual implementation of NTT approach are less efficient. Let us be more precise.