Der Kompromiss ist ziemlich einfach. Ein LUT verwendet zusätzlichen Speicher in der Hoffnung, die Anweisungszahl genug zu reduzieren, um etwas Zeit zu sparen. Ob es wirksam ist, hängt viel von den Details des Prozessors ab - insbesondere vom Zwischenspeichern.
Bei Newton-Raphson ändern Sie X/Y zu X*(1/Y) und verwenden Ihre Iteration, um 1/Y zu finden. Zumindest nach meiner Erfahrung, wenn Sie volle Präzision benötigen, ist es selten nützlich - seine primäre Stärke liegt darin, Ihnen zu helfen, etwas mit (sagen wir) 16-Bit Präzision schneller zu finden.
Die übliche Methode für die Division ist eine Bit-für-Bit-Methode. Obwohl diese spezielle Antwort sich mit ganzen Zahlen befasst, machen Sie für Gleitkommazahl im Wesentlichen dasselbe, nur dass Sie zusätzlich die Exponenten subtrahieren. Eine Gleitkommazahl ist im Grunde A*2N, wobei A die Signifikante und N der Exponent des Zahlenanteils ist. Also, Sie nehmen zwei Zahlen A*2N / B * 2M und führen die Division als A/B * 2N-M aus, wobei A und B in diesem Fall (im Wesentlichen) als ganze Zahlen behandelt werden. Der einzige wirkliche Unterschied besteht darin, dass Sie bei Gleitkomma normalerweise das Ergebnis runden möchten, anstatt es abzuschneiden. Das bedeutet im Grunde genommen, die Division mit (mindestens) einem zusätzlichen Bit Präzision durchzuführen und dann aufzurunden, wenn dieses zusätzliche Bit eine Eins ist.
Die häufigste Methode unter Verwendung von Lookup-Tabellen ist die SRT-Division. Diese wird meistens in Hardware durchgeführt, daher würde ich wahrscheinlich nach etwas wie "Verilog SRT" oder "VHDL SRT" googeln. Es sollte jedoch nicht allzu schwierig sein, es in C++ zu implementieren. Während die Methode, die ich in der verlinkten Antwort umrissen habe, ein Bit pro Iteration produziert, kann diese so geschrieben werden, dass sie 2, 4 usw. Bits pro Iteration produziert. Soweit ich mich erinnere, wächst die Größe der Tabelle jedoch quadratisch mit der Anzahl der pro Iteration produzierten Bits, so dass man in der Praxis selten viel mehr als 4 sieht.