DE102012204971A1 - Verfahren und Schaltung zur Approximation von Logarithmuswerten - Google Patents

Verfahren und Schaltung zur Approximation von Logarithmuswerten Download PDF

Info

Publication number
DE102012204971A1
DE102012204971A1 DE201210204971 DE102012204971A DE102012204971A1 DE 102012204971 A1 DE102012204971 A1 DE 102012204971A1 DE 201210204971 DE201210204971 DE 201210204971 DE 102012204971 A DE102012204971 A DE 102012204971A DE 102012204971 A1 DE102012204971 A1 DE 102012204971A1
Authority
DE
Germany
Prior art keywords
value
log
circuit arrangement
register
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE201210204971
Other languages
English (en)
Inventor
Siegbert Steinlechner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE201210204971 priority Critical patent/DE102012204971A1/de
Publication of DE102012204971A1 publication Critical patent/DE102012204971A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

Die Erfindung betrifft eine Schaltungsanordnung (1) und ein Verfahren zur Bestimmung eines Näherungswertes YN für den binären Logarithmus log2(x) einer positiven reellen Zahl x. Die Schaltungsanordnung umfasst eine Normierungseinheit (10), die eingerichtet ist, eine Zahl Y1 Є Z derart zu bestimmen, dass fürDie Schaltungsanordnung umfasst ferner mindestens eine Recheneinheit, die eingerichtet ist, die Zahl YN zu berechnen, wobei N Є N und YN das N-te Folgenglied derjenigen reellen Zahlenfolge (Yn)nЄN ist, die zusammen mit der reellen Zahlenfolge (Ln)nЄN rekursiv gegeben ist durch Ln+1 := Ln(1 + 2–n) und Yn+1 := Yn -log2(1 + 2–n) falls Ln(1 + 2–n) < 1 und Ln+1 := Ln und Yn+1 := Yn sonst. Die Erfindung betrifft weiterhin ein Computerprogramm mit Programmcodemitteln, die das Verfahren implementieren, und ein maschinenlesbares Speichermedium, das derartige Programmcodemittel aufweist.

Description

  • Die vorliegende Erfindung betrifft betrifft eine Schaltungsanordnung, ein Verfahren und ein Computerprogramm zur schnellen und einfachen Approximation von Funktionswerten der Logarithmusfunktion sowie ein maschinenlesbares Speichermedium mit Programmcodemitteln, die eine Recheneinheit zu einer derartigen Approximation veranlassen.
  • Stand der Technik
  • Mit Hilfe der Logarithmusfunktion können ganzzahlige wie allgemeine Potenzen (z.B. Wurzeln) von Zahlen bestimmt werden. Neben einer Vielzahl von weiteren Anwendungen treten solche Potenzfunktionen beispielsweise bei der Temperaturkompensation von Sensoren auf. Zudem können Logarithmen dazu dienen, Multiplizierer, Dividierer oder Wurzelberechner im Betrieb auf korrekte Funktion zu überprüfen, was in sicherheitskritischen Anwendungen relevant ist. Eine kostengünstige Berechnung von Logarithmenwerten in der Festkommaarithmetik ist daher von großer Bedeutung.
  • Die Berechnung von Funktionswerten der Logarithmusfunktion ist seit etwa 1990 in vielen Fließkommaprozessoren als eingebaute Hardwarefunktion verfügbar. Zumeist wird sie durch einen integrierten Gleitkomma-Coprozessor erledigt. Alternativ erfolgt die Logarithmenberechnung durch Software (sogenannte „Gleitkomma-Emulation“), was naturgemäß deutlich langsamer geschieht. In der Regel werden zur näherungsweisen Berechnung des Logarithmus Potenzreihen oder Kettenbrüche herangezogen. Dazu sind jeweils mehrere Multiplikationen, Divisionen und Additionen durchzuführen, was einen hohen Rechen- und Zwischenspeicheraufwand bedeutet.
  • Alternativ lassen sich Logarithmen iterativ berechnen (siehe z.B. J.-C. Bajard, S. Kla und J.-M. Muller: „BKM: A new hardware algorithm for complex elementary functions" in: IEEE transactions on computers, vol. 43, no. 8, August 1994). Die Anwendung dieses Verfahrens auf Logarithmen reeller Zahlen beruht im Kern auf einem Algorithmus, der im Wesentlichen bereits 1624 von Henry Briggs in dessen Buch „Arithmetica Logarithmica“ veröffentlicht wurde.
  • Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines Verfahrens und einer Schaltungsanordnung zur schnellen und einfachen Berechnung von Näherungen von Funktionswerten der Logarithmusfunktion zur Basis zwei.
  • Offenbarung der Erfindung
  • Erfindungsgemäß wird eine Schaltungsanordnung, ein Verfahren, ein Computerprogramm und ein maschinenlesbares Speichermedium gemäß den unabhängigen Patentansprüchen vorgeschlagen. Bevorzugte Ausführungsformen sind in den Unteransprüchen offenbart.
  • Die erfindungsgemäße Schaltungsanordnung dient der Bestimmung eines Näherungswertes YN für den binären Logarithmus log2(x) einer (beliebig) gewählten positiven reellen Zahl x. Die positive Zahl x kann der Schaltungsanordnung beispielsweise vom Nutzer oder automatisch von einer anderen Einheit zugeführt werden. Analog kann der Wert N von einem Anwender oder von einem Prozess in einem Rechnersystem, in dem die Schaltungsanordnung eingebunden ist, vorgegeben werden oder worden sein.
  • Die Schaltungsanordnung umfasst eine Normierungseinheit, die eingerichtet ist, eine Zahl k Є Z derart zu bestimmen, dass für x‘ := 2–kx gilt ½ ≤ x‘ < 1. (Hier und im Folgenden seien N := {1, 2, 3, ....} die Menge der natürlichen Zahlen und Z die Menge der ganzen Zahlen.)
  • Für die als Binärzahl dargestellte Zahl x entspricht die Normierung von x auf den Wert x‘ Є [1/2, 1] einer Verschiebung um k Stellen, und zwar nach rechts, falls k positiv ist und nach links, wenn k ≤ 0 ist. Die Verschiebung erfolgt so, dass die erste Nachkommastelle der Zahl x‘, wenn diese als (nichtperiodische) Binärzahl dargestellt ist, eine Eins ist und alle Vorkommastellen null sind.
  • Verfahren zur Bestimmung von k sind beispielsweise auch aus der kombinatorischen Logik bekannt. Eine solche kombinatorische Lösung (d.h. eine logische Beschreibung mit AND, OR und NOT) lässt sich in Gatter umsetzen und kostet nur die Gatterlaufzeit (keine Taktung).
  • Die erfindungsgemäße Schaltungsanordnung umfasst weiterhin eine Recheneinheit, die eingerichtet ist, die Zahl YN als Näherungswert für log2(x) zu berechnen. YN ist als N-tes Folgenglied der Folge (Yn)nЄN definiert, die zusammen mit der reellen Zahlenfolge (Ln)nЄN gegeben ist durch
    L1 := x‘ und Y1 := k
    sowie rekursiv
    Ln+1 := Ln(1 + 2–n) und Yn+1 := Yn -log2(1 + 2–n) falls Ln(1 + 2–n) < 1
    und
    Ln+1 := Ln und Yn+1 := Yn sonst.
  • Es versteht sich, dass hier und im Folgenden die Zahlen log2(1 + 2–n) gegebenenfalls durch geeignete Näherungen zu ersetzen sind, wie es für die konkrete Arithmetik mit endlich vielen Stellen erforderlich ist. Beispielsweise werden die Werte nur auf 8 oder 16 Nachkommastellen genau bestimmt. Die Bezeichnung log2(1 + 2–n) wird für diese Näherungswerte beibehalten.
  • Nach Definition von x‘ ist log2 x = k + log2 x‘ = Y1 + log2 L1. Damit ist log2L1 = log2x – Y1.
  • Induktiv ergibt sich (unter Verwendung des Logarithmengesetzes log2(ab) = log2a + log2b für a, b >0) weiter log2Ln = log2x – Yn für alle n Є N
  • Wie unten gezeigt wird, konvergiert die Folge (Ln)nЄN gegen eins. Aufgrund der Stetigkeit der Logarithmusfunktion folgt daraus, dass
    Figure 00030001
    also
    Figure 00030002
    Somit ist YN in der Tat ein Näherungswert für log2x.
  • Analog kann das erfindungsgemäße Verfahren zur automatischen Bestimmung eines Näherungswertes für einen Logarithmus die genannten und nachfolgend beschriebenen Schritte umfassen.
  • Das erfindungsgemäße Verfahren erlaubt eine besonders einfache Umsetzbarkeit in digitale Hardware; entsprechend ist die erfindungsgemäße Schaltungsanordnung besonders einfach. Anders als bei der oben erwähnten Methode von Briggs sind nämlich keinerlei Divisionen notwendig. Im Gegensatz zur oben genannten BKM-Methode, bei der jeweils zwei komplette Datenworte miteinander verglichen werden, muss erfindungsgemäß während der Iteration immer nur ein einziges Bit geprüft werden. Außerdem bestehen einige Unterschiede in der Initialisierung und in der Steuerung der Iterationen.
  • Die durchzuführenden Berechnungen sind einfach zu realisieren, weil nur bedingte Additionen und Verschiebungen von Datenwörtern („shifts“) durchzuführen sind. Die bedingten Additionen werden jeweils nur durch ein einziges Bit gesteuert.
  • Beispielsweise lassen sich die Zahlen Ln+1 wegen Ln+1 = Ln(1 + 2–n) = Ln + Ln2–n aus Ln durch eine einfache Addition und eine Stellenverschiebung um n Stellen nach rechts realisieren.
  • Je höher die Ordnung N, desto höher ist die Genauigkeit des Ergebnisses. Mittelt man bei der Berechnung des Logarithmus in N Schritten den Fehler über alle möglichen Werte für x‘, so halbiert beispielsweise eine Erhöhung von N um 1 diesen mittleren Fehler.
  • Die Erfindung erlaubt eine schnelle (näherungsweise) Logarithmusberechnung schon bei beschränkten Systemkapazitäten, wie sie beispielsweise in einem Kraftfahrzeug vorliegen. Sie bietet die Möglichkeit, in ASICS (anwendungsspezifische integrierte Schaltung) die Berechnung von Potenzfunktionen über Logarithmen kostengünstig umzusetzen.
  • Wie oben erwähnt wurde, ist L1 = x‘ so gewählt, dass seine erste binäre Nachkommastelle eins ist. Aus den Ausführungen weiter unten ergibt sich weiterhin, dass die Länge der mit der ersten Nachkommastelle beginnenden, nicht von einer Null unterbrochenen Einserketten nach Konstruktion der Ln monoton mit n wächst. Im Grenzübergang erhält man dabei die Binärzahl 0, 1 bin = 1. Dies erklärt die verwendete, oben angegebene Beziehung
    Figure 00050001
    die auch durch Simulation nachgewiesen werden kann.
  • Mathematisch-analytisch lässt sich
    Figure 00050002
    Beispiel folgendermaßen beweisen: Zunächst wird eine äquivalente Definition der Folge (Ln)nЄN verwendet, bei der eine Folge (dn)nЄN eingeführt wird: Es ist L1 = x‘ und rekursiv für n ≥ 1: Ln+1 = Ln+1(1 + dn2–n) = x‘(1 + d12–1)(1 + d22–2)...(1 + dn2–n), wobei jeweils dj := 1 falls Lj(1 + 2–j) < 1 und dj := 0 sonst.
  • Behauptung: Die Folge (Ln)n konvergiert gegen 1.
  • Beweis: Zunächst ist die Folge (Ln)n monoton wachsend und durch 1 beschränkt, also konvergent gegen einen Grenzwert
    Figure 00050003
  • Annahme: a < 1. Dann existiert ein m Є N derart, dass a(1 + 2–m) < 1; dabei kann man m ≥ 3 annehmen. Wegen 0 < Lm ≤ a und 0 < Lm+1 ≤ a gilt damit auch Lm(1 + 2–m) < 1 und Lm+1(1 + 2–m) < 1.
  • Die erste dieser Ungleichungen liefert dm = 1 und also Lm+1 = Lm (1 + 2–m) nach Definition der Folge. Damit folgt aus der zweiten Ungleichung Lm(1 + 2–m) = Lm+1(1 + 2–m) < 1 (1).
  • Zwischenbehauptung: Für alle j = 1, ..., m – 1 ist dm-j = 1 und Lm-j(1 + 2–(m–j))2 < 1.
  • Damit folgt dann insbesondere d1 = d2 = d3 = 1 und daher a ≥ L4 = x‘ (1 + 2–1)(1 + 2–2)(1 + 2–3) = x‘·3/2·5/4·9/8 ≥ 1/2·135/64 ≥ 1 im Widerspruch zur Annahme a < 1.
  • Beweis der Zwischenbehauptung:
  • Zunächst ist 1 + 2–(m–1) ≤ 1 + 2–(m–1) + 2–2m = (1 + 2–m)2 (2).
  • Wegen 0 < Lm–1 ≤ Lm folgt Lm-1(1 + 2–(m–1)) ≤ Lm(1 + 2–(m–1)) ≤ Lm(1 + 2–m)2 < 1; bei der letzten Ungleichung wurde dabei die Ungleichung (1) verwendet. Nach Definition ergibt sich dm-1 = 1 und daher Lm = Lm-1(1 + 2–(m–1)). Erneute Verwendung von (2) liefert dann mit (1) Lm-1(1 + 2–(m–1))2 = Lm(1 + 2–(m–1)) ≤ Lm(1 + 2–m) < 1.
  • Sukzessive ergibt sich mit m – 1 (bzw. m – 2, ..., 2) in den Ungleichung (1) und (2) anstelle von m die Zwischenbehauptung. Das beendet den Beweis.
  • In einer bevorzugten Ausführungsform umfasst die Schaltungsanordnung der Erfindung eine Speichereinheit, in der für verschiedene Werte von n Є N die Werte -log2(1 + 2–n) abgelegt sind. Diese Werte hängen nicht von der Zahl x ab und können daher im Voraus berechnet und bei der Berechnung eines Approximationswertes einer beliebigen positiven Zahl x herangezogen werden. Die Berechnung des Näherungswertes wird dadurch beschleunigt.
  • Vorzugsweise sind mindestens für n = 1, 2, ... N – 1 die Werte -log2(1 + 2–n) abrufbar. Damit stehen alle für eine Bestimmung von Yn, n = 2, 3, ... N erforderlichen Faktoren bereits vorab zur Verfügung.
  • Vorteilhaft ist es, wenn die Werte in Form einer Tabelle gespeichert sind, in der jeder gespeicherte Wert -log2(1 + 2–n) mit dem zugehörigen n assoziiert ist. Auf diese Weise können die Werte bei Kenntnis von n besonders leicht abgerufen werden. Alternativ können die Werte in einer vorbestimmten Reihenfolge beispielsweise in einer Liste gespeichert werden. In dieser Reihenfolge werden die Werte dann vorzugsweise abgerufen bzw. (im Falle Ln(1 + 2–n) < 1) verworfen.
  • Geeignet als Speichereinheit sind beispielsweise Permanentspeichermedien wie eine ROM(read only memory)- eine PROM(programable read only memory)- oder eine EPROM(erasable programmable read-only memory)-Einheit. Die Verwendung einer anderen Speichereinheit ist jedoch ebenfalls möglich.
  • Es ist möglich, anhand der binären Darstellung der Zahl Ln auf die kleinste Zahl j Є N0 := N ∪ {0} zu schließen, für die Ln(1 + 2–(n+j))<1 ist. Sind nämlich beispielsweise mit v ≥ 1 die ersten n + v binären Nachkommastellen von Ln gleich 1, so folgt
    Figure 00070001
    und daher
    Figure 00070002
    für alle m mit 0 ≤ m < v.
  • Also ist Ln = Ln+1 = ... = Ln+v-1 = Ln+v und entsprechend Yn = Yn+1 = ... = Yn+v-1 = Yn+v.
  • Ist umgekehrt für k ≤ n die k-te binäre Nachkommastelle von Ln gleich null, so folgt
    Figure 00070003
    und damit Ln(1 + 2–n)<1.
  • Auf diese Weise lassen sich Rechenschritte durch eine Betrachtung der binären Nachkommastellen vermeiden. Beispielsweise kann der Index im ersteren Fall direkt von n auf n + ν hochgesetzt werden, ohne dass für m = 1, ... v – 1 die Zahlen
    Figure 00070004
    ausgerechnet werden.
  • In einer alternativen bevorzugten Ausführungsform bestimmt die Recheneinheit den Wert YN, indem iterativ für jedes n = 2, 3, ..., N – 1 der Wert Ln(1 + 2–n) bestimmt wird. Der zugehörige Index n wird vorzugsweise von einer Ablaufsteuerung bereitgestellt. Diese kann getaktet sein und dadurch den zeitlichen Ablauf des Verfahrens steuern.
  • Jeder Iterationsschritt kann dann eine Vergleichsoperation umfassen, in der die Gültigkeit der Ungleichung Ln(1 + 2–n) < 1 geprüft wird. Vorteilhafterweise wird dabei lediglich die erste binäre Vorkommastelle des Produkts Ln(1 + 2–n) betrachtet, also dasjenige Bit, das der Stelle 20 entspricht: Da das Produkt jedenfalls kleiner ist als zwei, ist die Ungleichung genau dann nicht erfüllt, wenn seine erste binäre Vorkommastelle gleich eins ist. Durch die Betrachtung nur der ersten Vorkommastelle kann also die Operation beschleunigt und vereinfacht werden.
  • In einer bevorzugten Ausführungsform werden die Werte Ln und/oder Yn in einem jeweils eigenen oder auch in einem gemeinsamen Speicherbereich gespeichert, beispielsweise in einem jeweiligen Register. Dies erlaubt einen unmittelbaren und schnellen Zugriff auf die Werte. Die Register können getaktet sein, beispielsweise synchronisiert mit der oben erwähnten Ablaufsteuerung.
  • Wenn ein höherer Index n einen geänderten Wert für Ln und/oder Yn ergibt, werden die jeweiligen Werte vorteilhafterweise überschrieben. Durch das Überschreiben kann Speicherplatz gespart werden, da beispielsweise für alle Ln ein einziges Register verwendet werden kann.
  • Die Schaltungsanordnung der vorliegenden Erfindung kann in eine Schaltungseinrichtung zur punktweisen Approximation des Logarithmus zu einer beliebig gewählten Basis a > 0, a ≠ 1 eingebunden sein. Dabei kann die Schaltungseinrichtung Mittel umfassen, mit denen ein Anwender oder ein anderes System die Basis a festlegen kann. Bekanntlich gilt
    Figure 00080001
    Um einen Näherungswert von logax zu berechnen, können die Logarithmenwerte auf der rechten Seite dieser Gleichung jeweils durch Näherungswerte ersetzt werden, die durch eine Schaltungsanordnung der oben beschriebenen Ausführungsformen bestimmt werden oder wurden. Soll logax für verschiedene Zahlen x näherungsweise berechnet werden, umfasst die Schaltungseinrichtung vorzugsweise eine Speichereinheit, in der ein geeigneter Näherungswert für log2a abgelegt ist. Damit muss der genannte approximierte Wert für log2a für mehrere x-Werte nur einmal berechnet werden.
  • Gegenstand der Erfindung ist weiterhin das bereits oben erwähnte entsprechende Verfahren zur automatischen Bestimmung eines Näherungswertes für log2x.
  • Zu Ausgestaltungen dieses Verfahren sei ausdrücklich auf die obigen Ausführungen verwiesen.
  • Die oben beschriebenen Möglichkeiten der Berechnung eines Näherungswertes YN für einen Logarithmuswert können in Programmcodemitteln festgelegt sein, die auf einem oder mehreren computerlesbaren Datenträger(n) gespeichert sind.
  • Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
  • Es versteht sich, dass die vorstehend genannten und die nachfolgend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
  • Die Erfindung ist anhand von Ausführungsbeispielen in den Zeichnungen schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
  • Kurze Beschreibung der Zeichnungen
  • 1 stellt eine beispielhafte Schaltungsanordnung gemäß einer Ausführungsform der vorliegenden Erfindung schematisch dar.
  • 2 zeigt ein Ablaufdiagramm für eine Logarithmusapproximation gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Ausführungsform(en) der Erfindung
  • In der in 1 gezeigten Schaltungsanordnung 1 steuert eine getaktete Ablaufsteuerung 111 den zeitlichen Ablauf des Näherungsverfahrens. Ebenso werden die dargestellten Register 12 und 14 getaktet.
  • Eine mit einem Eingabemittel 101 bereitgestellte Zahl x>0 wird einer Normierungseinheit 10 zugeführt. Dort wird aus x der normierte Wert x‘ gewonnen und die dazu erforderliche Anzahl k von Verschiebungen bestimmt.
  • Die Ablaufsteuerung 111 sorgt zunächst dafür, dass der links dargestellte Multiplexer 11 in der Position B steht, bei der er den Wert x‘ an das links dargestellte Register 12 weiterleitet, in dem x‘ gespeichert wird. Gleichzeitig steht der rechts dargestellte Multiplexer 13 in der Stellung D, wobei der Verschiebewert k an das nachfolgende Register 14 weitergeleitet und dort gespeichert wird.
  • In den nachfolgenden N – 1 Ablaufschritten (wobei z.B. N = 17 ist) steht der Multiplexer 13 stets in der Stellung E. Der links dargestellte Addierer 15 berechnet bei der j-ten Iteration jeweils das (1 + 2j)-fache des Inhalts des Registers 12. Hierbei wird der jeweilige Wert j von der Ablaufsteuerung 100 geliefert. Ist das Ergebnis kleiner als 1, so wird dies vom Vergleicher 16 erkannt. Der Vergleich ist sehr einfach zu realisieren, indem beim Ergebnis des Addierers das Bit mit der Wertigkeit 20 = 1 betrachtet wird.
  • Ist das Ergebnis des Addierers kleiner als eins, so wird der Multiplexer 11 so gesteuert, dass er den Eingang A (d.h. das Ergebnis) an das Register 12 weiterleitet, wo das Ergebnis gespeichert wird. Ist das Ergebnis hingegen größer oder gleich 1, so wird stattdessen der Eingang C des Multiplexers 11 zum Register 12 durchgeschaltet, so dass der Registerinhalt unverändert bleibt.
  • Gleichzeitig wird unter Verwendung des von der Ablaufsteuerung 111 gelieferten Wertes j eine Tabelle 17 (z.B. in einem ROM) adressiert, in der die Werte log2(1 + 2–j) mindestens für j = 1, ... N – 1 abgelegt sind.
  • Der entsprechende Wert wird ausgelesen und über eine bitweise AND-Verknüpfung dem rechts dargestellten Addierer 18 zugeführt. War das Ergebnis des Addierers 15 kleiner als eins, so werden die AND-Gatter 19 aktiviert und bewirken eine Addition des Tabellenwertes zum vorherigen Inhalt des Registers 14, andernfalls wird die Zahl Null addiert.
  • Nach N – 1 Schritten steht am Ausgang der gesuchte Approximationswert YN für log2x zur Verfügung.
  • Das in 2 schematisch dargestellte Verfahren dient der automatischen Bestimmung eines Näherungswertes für log2x, wobei x > 0 ist.
  • In Schritt 20 wird zunächst der Wert x normiert. Dies umfasst ein Bestimmen eines k Є Z derart, dass für x‘ := 2–kx gilt ½ ≤ x‘ < 1. Der Wert x‘ wird vorzugsweise gespeichert, beispielsweise in einem Register.
  • In Schritt 21 wird n = 1 gesetzt. Mit L1 := x‘ und Y1 := k wird dann eine Iteration begonnen. Darin wird für jedes n = 1, 2, ... N zunächst im Schritt 22 der Wert Ln(1 + 2–n) berechnet, beispielsweise durch Addition von Ln und der Zahl, die sich aus Ln durch Verschiebung des Kommas um n Stellen nach links ergibt. Im Schritt 23 wird geprüft, ob das so bestimmte Produkt kleiner ist als eins. Ist dies der Fall, wird in Schritt 24 der Wert Ln+1 := Ln(1 + 2–n) bestimmt. Analog wird in Schritt 24 der Wert Yn+1 := Yn -log2(1 + 2–n) berechnet.
  • Ergibt die Prüfung in Schritt 23, dass Ln(1 + 2–n) ≥ 1 ist, so wird in Schritt 25 Ln+1 := Ln und Yn+1 := Yn gesetzt. In beiden Fällen wird das Verfahren mit Schritt 26 fortgesetzt, in dem der Index durch die Zuordnung n → n + 1 um eins erhöht wird. In Schritt 27 wird geprüft, ob das neu erhaltene n noch kleiner ist als N. Ist dies der Fall, wird die Iteration 2 fortgesetzt, indem in Schritt 22 für das nun aktuelle n durchgeführt wird.
  • Ist hingegen n = N, so ist der aktuelle Wert Yn = YN der gesuchte Näherungswert für log2x und wird in Schritt 28 vorzugsweise ausgegeben oder in einem weiteren Rechenschritt verwendet.
  • Wie oben erläutert wurde, kann anstelle der Schritte 22 und 23 die Anzahl der unmittelbar aufeinanderfolgenden ersten binären Nachkommastellen (Bits) von Ln bestimmt werden, die gleich eins sind. Der Index n kann dann unmittelbar um die jeweilige Anzahl heraufgesetzt werden, ohne dass die zugehörigen Produkte Ln(1 + 2–n) berechnet werden müssen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • J.-C. Bajard, S. Kla und J.-M. Muller: „BKM: A new hardware algorithm for complex elementary functions“ in: IEEE transactions on computers, vol. 43, no. 8, August 1994 [0004]

Claims (15)

  1. Schaltungsanordnung (1) zur Bestimmung eines Näherungswertes YN für den binären Logarithmus log2(x) einer positiven reellen Zahl x, wobei die Schaltungsanordnung die folgenden Komponenten umfasst: eine Normierungseinheit (10), die eingerichtet ist, eine Zahl k Є Z derart zu bestimmen, dass für x‘ := 2–kx gilt ½ ≤ x‘ < 1; und mindestens eine Recheneinheit (100), die eingerichtet ist, die Zahl YN zu berechnen, wobei N Є N ist und YN das N-te Folgenglied derjenigen reellen Zahlenfolge (Yn)nЄN ist, die zusammen mit der reellen Zahlenfolge (Ln)nЄN gegeben ist durch L1 := x‘ und Y1 := k sowie rekursiv Ln+1 := Ln(1 + 2–n) und Yn+1 := Yn -log2(1 + 2–n) falls Ln(1 + 2–n) < 1 und Ln+1 := Ln und Yn+1 := Yn sonst.
  2. Schaltungsanordnung gemäß Anspruch 1, wobei die Recheneinheit den Wert YN bestimmt, indem nacheinander für jedes n Є {1, 2, ..., N – 1} ein Iterationsschritt (2) ausgeführt wird, wobei ein zum Iterationsschritt jeweils zugehöriger Wert n Є {1, 2, ..., N – 1} vorzugsweise von einer Ablaufsteuerung (111) bereitgestellt wird, die von der Schaltungsanordnung umfasst wird.
  3. Schaltungsanordnung gemäß Anspruch 2, wobei jeder Iterationsschritt eine Vergleichsoperation (23) umfasst, mit der geprüft wird, ob Ln(1 + 2–n) < 1 ist, wobei vorzugsweise die Vergleichoperation durch Betrachtung lediglich desjenigen Bits erfolgt, das der Stelle 20 entspricht.
  4. Schaltungsanordnung gemäß Anspruch 2 oder 3, die ein Register (12) für Lj-Werte umfasst, das den Wert von Ln für n Є {1, 2, ..., N – 1} mindestens für die Zeit eines Iterationsschritts speichert, wobei vorzugsweise der im Iterationsschritt aktuelle Wert in dem Register für Lj-Werte in einem nachfolgenden Iterationsschritt mit dem Wert für Ln+1 überschrieben wird, wenn Ln(1 + 2–n) < 1 ist.
  5. Schaltungsanordnung gemäß Anspruch 4, die einen Addierer (15) für Lj-Werte umfasst, der für n Є {1, 2, ..., N – 1} im n-ten Iterationsschritt den aktuellen Inhalt des Registers (12) für Lj-Werte mit (1 + 2–n) multipliziert.
  6. Schaltungsanordnung gemäß einem der Ansprüche 2 bis 5, die ein Register (14) für Yj-Werte umfasst, das den Wert Yn für n Є {1, 2, ..., N – 1} mindestens für die Zeit eines Iterationsschritts speichert, wobei vorzugsweise der jeweils aktuelle Wert im Register (14) für Yj-Werte in einem nachfolgenden Iterationsschritt mit dem Wert für Yn+1 überschrieben wird, wenn Ln(1 + 2–n) < 1 ist.
  7. Schaltungsanordnung gemäß Anspruch 6, die einen Addierer (18) umfasst, der für n Є {1, 2, ..., N – 1} im n-ten Iterationsschritt den aktuellen Inhalt des Registers (14) für Yj-Werte zum Wert (–1)∙log2(1 + 2–n) addiert, falls Ln(1 + 2–n) < 1 ist, wobei der Wert -log2(1 + 2–n) vorzugsweise aus einer Speichereinheit (17) ausgelesen wird.
  8. Schaltungsanordnung gemäß einem der vorstehenden Ansprüche, die eine Speichereinheit (17), vorzugsweise ein ROM, umfasst, in der mindestens für n Є {1, 2, ..., N – 1} die Werte -log2(1 + 2–n) abrufbar gespeichert sind, und/oder die Mittel (101) zum Bereitstellen der positiven Zahl x und/oder der Zahl N Є N durch einen Anwender oder durch einen maschinellen Prozess aufweist.
  9. Schaltungseinrichtung zur Bestimmung eines Näherungswertes XN für den Logarithmus loga(x) einer positiven reellen Zahl x zur Basis a > 0, a ≠ 1, wobei die Schaltungseinrichtung eine Schaltungsanordnung zur Bestimmung eines Näherungswertes YN für den binären Logarithmus log2(x) der Zahl x gemäß einem der vorstehenden Ansprüche umfasst und eingerichtet ist, den Wert XN := YN·(log2a)–1 zu berechnen.
  10. Verfahren zur automatischen Bestimmung eines Näherungswertes YN für den binären Logarithmus log2(x) einer positiven reellen Zahl x, wobei N Є N ist und das Verfahren die folgenden Schritte umfasst: Bestimmen (20) einer Zahl Y1 Є Z derart, dass für L1 := 2Y1x gilt ½ ≤ L1 < 1; und Durchführen einer Iteration, die für jedes n = 1, 2, 3, ... N – 1 die folgenden Schritte umfasst: Bestimmen (23), ob Ln(1 + 2–n) < 1; falls Ln(1 + 2–n) < 1, Berechnen (24) von Yn+1 := Yn -log2(1 + 2–n) und Fortfahren mit Ln+1 := Ln(1 + 2–n) < 1 falls Ln(1 + 2–n) ≥ 1, Fortfahren mit n+1, wobei Ln+1 := Ln und Yn+1 := Yn.
  11. Verfahren gemäß Anspruch 10, wobei jeder Iterationsschritt zudem ein Berechnen der Zahl Ln(1 + 2–n) umfasst, wobei vorzugsweise für jedes n = 1, 2, 3, ... N das Berechnen der Zahl Ln(1 + 2–n) durch binäre Addition von Ln und der um n Stellen nach rechts verschobenen Binärdarstellung von Ln erfolgt.
  12. Verfahren gemäß Anspruch 10, wobei das Bestimmen (23), ob Ln(1 + 2–n) < 1 ist, durch automatisches Abzählen einer Anzahl von von Null verschiedenen binären Nachkommastellen von Ln erfolgt.
  13. Verfahren gemäß einem der Ansprüche 10 bis 12, wobei das Berechnen von Yn -log2(1 + 2–n) erfolgt, indem ein vorberechneter Wert für -log2(1 + 2–n) aus einer Speichereinheit herausgelesen wird.
  14. Computerprogramm mit Programmcodemitteln, die einen Computer oder eine entsprechenden Recheneinheit veranlassen, ein Verfahren nach einem der Ansprüche 10 bis 13 durchzuführen, wenn sie auf dem Computer bzw. der entsprechenden Recheneinheit ausgeführt werden.
  15. Maschinenlesbares Speichermedium mit einem darauf gespeicherten Computerprogramm, welches Programmcodemittel aufweist, die einen Computer oder eine entsprechenden Recheneinheit veranlassen, ein Verfahren nach einem der Ansprüche 10 bis 13 durchzuführen, wenn sie auf dem Computer bzw. der entsprechenden Recheneinheit ausgeführt werden.
DE201210204971 2012-03-28 2012-03-28 Verfahren und Schaltung zur Approximation von Logarithmuswerten Pending DE102012204971A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE201210204971 DE102012204971A1 (de) 2012-03-28 2012-03-28 Verfahren und Schaltung zur Approximation von Logarithmuswerten

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201210204971 DE102012204971A1 (de) 2012-03-28 2012-03-28 Verfahren und Schaltung zur Approximation von Logarithmuswerten

Publications (1)

Publication Number Publication Date
DE102012204971A1 true DE102012204971A1 (de) 2013-10-02

Family

ID=49154661

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201210204971 Pending DE102012204971A1 (de) 2012-03-28 2012-03-28 Verfahren und Schaltung zur Approximation von Logarithmuswerten

Country Status (1)

Country Link
DE (1) DE102012204971A1 (de)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J.-C. Bajard, S. Kla und J.-M. Muller: "BKM: A new hardware algorithm for complex elementary functions" in: IEEE transactions on computers, vol. 43, no. 8, August 1994

Similar Documents

Publication Publication Date Title
WO2013060467A1 (de) Effiziente primzahlprüfung
Abi Jaber The characteristic function of Gaussian stochastic volatility models: an analytic expression
EP1499954B1 (de) Berechnung eines ergebnisses einer modularen multiplikation
DE102006025569A1 (de) Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE2732008C3 (de) Einrichtung zur Reduzierung von Fibonacci-p-Codes auf die Minimalform
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät
EP2641241B1 (de) Verfahren zur langzahldivision oder modulare reduktion
DE102006025713B4 (de) Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102012204971A1 (de) Verfahren und Schaltung zur Approximation von Logarithmuswerten
DE102013212840B4 (de) Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten
DE102006013989A1 (de) Verfahren zur Reduktion eines Polynoms in einem binären finiten Feld
DE10219161A1 (de) Vorrichtung und Verfahren zum Umrechnen eines Terms
DE1222290B (de) Binaere Recheneinrichtung zur Bildung und Akkumulation von Produkten
DE102011117219A1 (de) Bestimmen eines Divisionsrests und Ermitteln von Primzahlkandidaten für eine kryptographische Anwendung
DE102013209657A1 (de) FMA-Einheit, insbesondere zur Verwendung in einer Modellberechnungseinheit zur rein hardwarebasierten Berechnung von Funktionsmodellen
EP2587713A2 (de) Effiziente modulare Inversion mit Primzahltest
DE102014200493A1 (de) Verfahren und Vorrichtung zur Berechnung eines Ergebniswertes einer Division aus einem Dividenden und einem Divisor
DE112005000247T5 (de) Schnelles Verfahren zum Berechnen von Zweierpotenzen als ein Fliesskomma-Datentyp
DE102014208379A1 (de) Verfahren und Vorrichtung zum Ermitteln eines Funktionswerts eines bezüglich einer Eingangsgröße invertierten datenbasierten Funktionsmodells
DE102009039430A1 (de) Vorrichtung und Verfahren mit ersten und zweiten Zeittakten
DE102013224694A1 (de) Verfahren und Vorrichtung zum Ermitteln eines Gradienten eines datenbasierten Funktionsmodells
DE102014200465A1 (de) Vorrichtung und Verfahren zur Bestimmung eines Schätzwertes des Logarithmus einer Eingangsgröße
WO2003093970A2 (de) Vorrichtung und verfahren zum berechnen eines ganzzahligen quotienten
DE112018006331T5 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
EP1515224B1 (de) Division von Binärzahlen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication