Il long double (che è standard) può garantire (e in genere effettivamente garantisce) una precisione maggiore; su x86 in genere dovrebbe essere ad 80 bit (anche se su VC++ è un alias per double => 64 bit), dato che è la precisione con cui lavora internamente il coprocessore matematico x87.
Se ti serve roba più precisa, devi andare su tipi strani (tipo __float128 su gcc); credevo esistesse qualche set di istruzioni aggiuntivo che fornisse un tipo in precisione quadrupla nativamente, ma non sono riuscito a trovarlo, per cui con ogni probabilità oltre gli 80 bit si va su emulazione software, sicuramente più lenta rispetto alle istruzioni native.