Ich habe ganzzahlige Werte von 32-8191, die ich grob logarithmisch skalieren möchte. Wenn ich Base 2 verwende, könnte ich einfach die führenden Null-Bits zählen und sie in 8 Slots abbilden, aber das ist zu grobkörnig; Ich brauche 32 Steckplätze (und mehr wäre besser, aber ich brauche sie, um Bits in einem 32-Bit-Wert zuzuordnen), die für den Logarithmus auf eine Basis von ungefähr 1,18-1,20 kommt. Hat jemand ein paar Tricks, um diesen Wert oder eine vernünftige Annäherung sehr schnell zu berechnen?Schneller ganzzahliger Logarithmus für Spezialfall
Meine Intuition ist, den Bereich in 2 oder 3 Unterbereiche mit Bedingungen zu brechen, und verwenden Sie eine kleine Nachschlagetabelle für jeden, aber ich frage mich, ob es einen Trick gibt, mit Zähl-führenden Nullen zu tun und dann das Ergebnis zu verfeinern, zumal die Ergebnisse nicht exakt, sondern nur grob logarithmisch sein müssen.
Ich habe (in dem Sinne kommt dlmalloc) getan gesehen etwas, das vorher, aber ich weiß nicht, ob Ich mag, wie weit es von logarithmischer abweicht .Vielleicht ist es nicht so schlimm. –
Ich frage mich, ob ich Fließkomma verwenden kann, um diese Bits für mich schön zu montieren ... –