Como você pode calcular facilmente a raiz quadrada de um longo não assinado em C?

Eu estava olhando para outra questão (Aqui) onde alguém estava procurando uma maneira de obter a raiz quadrada de um inteiro de 64 bits no assembly x86.

Isso acaba sendo muito simples. A solução é converter em um número de ponto flutuante, calcular o sqrt e depois converter de volta.

Eu preciso fazer algo muito semelhante em C, no entanto, quando olho para equivalentes, estou ficando um pouco preso. Eu só posso encontrar uma função sqrt que leva em duplas. Os duplos não têm a precisão para armazenar números inteiros grandes de 64 bits sem introduzir um erro de arredondamento significativo.

Existe uma biblioteca de matemática comum que eu possa usar e que tenhalong double função sqrt?