• No results found

Een numerieke procedure voor het bit-voor-bit berekenen van een logarithme

N/A
N/A
Protected

Academic year: 2021

Share "Een numerieke procedure voor het bit-voor-bit berekenen van een logarithme"

Copied!
9
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Een numerieke procedure voor het bit-voor-bit berekenen van

een logarithme

Citation for published version (APA):

Korlaar, A. (1980). Een numerieke procedure voor het bit-voor-bit berekenen van een logarithme. (Eindhoven University of Technology : Dept of Mathematics : memorandum; Vol. 8008). Technische Hogeschool Eindhoven.

Document status and date: Gepubliceerd: 01/01/1980

Document Version:

Uitgevers PDF, ook bekend als Version of Record

Please check the document version of this publication:

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.

• The final author version and the galley proof are versions of the publication after peer review.

• The final published version features the final layout of the paper including the volume, issue and page numbers.

Link to publication

General rights

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain

• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:

www.tue.nl/taverne Take down policy

If you believe that this document breaches copyright please contact us at: openaccess@tue.nl

providing details and we will investigate your claim.

(2)

TECHNISCHE HOGESCHOOL EINDHOVEN NEDERLAND

ONDERAFDELING DER WISKUNDE

TECHNOLOGICAL UNIVERSITY EINDHOVEN THE NETHERLANDS

DEPARTMENT OF t1ATHEMATICS

Een numerieke procedure voor het bit-v~~r-bit berekenen van een logarithme

A. Korlaar

Memorandum 80-WSK-08

(3)

EEN NUMERIEKE PROCEDURE VOOR HET BIT-VOOR-BIT BEREKENEN VAN EEN LOGARITHME

o.

Inleiding

Bij het numeriek oplossen van zekere diophantische vergelijkingen

ont---- ----

-

-

.... _

-staat de behoefte aan het berekenen met een zeer grote precisie van loga-rithmen.

In het voorliggende memorandum wordt een algorithme beschreven voor de bere-2

kening van de binaire cijfers van log a, waarbij 1 ~ a < 2 • 2

Indien p bits van log a gevraagd worden, zal a in het algemeen eveneens in p bits nauwkeurig gegeven moe ten zijn.

Aan het slot wordt een programmatekst voor de procedure INTLOG 2 gegeven, die geschreven is voor een B 7700 computer.

1. Algorithme

1.1. De algorithme berust op de volgende eenvoudige overwegingen. *)

Zij a een gegeven reeel getal, met 1 ~ a < 2. Zij 210g a = 0,b

1b2 ... 2 waarin b. (j E N) de bits van de binaire representatie van het getal log a

] voorstellen. Dan geldt

2 2 2

2 · log a = log a

waaruit eenvoudig voIgt

Definieer

*

a *) zie bijlage 2 als a < 2 2 als a ~ 2 . als b 1 0 als b 1 = 1 .

(4)

Dan kunnen we schrijven

*

waarbij 1 ~ a < 2 .

*

- 2

-Met a kunnen we vervolgens net zo handelen als met a. Bovenstaande vatten we samen in de volgende algorithme

j := 0; for j := j + 1 do a := a t 2; if a < 2 then b . := J else b. := J fi od 0 1 ; a := a/2

1.2. Aan de algorithme uit 1.1. kleven de volgende bezwaren:

a) De algorithme is niet eindig. Hierin is eenvoudig te voorzien. b) De waarde van a zal in het algemeen niet exact in een rekenautomaat

te representeren zijn.

c) Een rekenautomaat zal de verschillende rel~enkundige bewerkingen met het reele getal a niet exact kunnen uitvoeren.

Teneinde de bezwaren b) en c) te ondervangen gaan we over tot het rekenen met gehele getallen.

Zij gegeven de natuurlijke getallen p,

Zo

en zl zodanig dat

I 2P - 1 -<

Zo -

<

Bij gekozen p kunnen we bijvoorbeeld nemen

(5)

- 3

-hetgeen betekent dat met

Zo

en z1 er p binaire cijfers van a bekend zijn.

Verder merken we nog op dat uit look voigt 1 ~ a < 2 .

Definieer nu

Dan geidt

2 floor (zO /

2

Merk op dat hieruit voigt: 1 ~ a < 4 .

Beschouw nu de voigende drie gevaiien:

1 ) z; < 2P-1 and 11.

Dan geidt:

p-2

*

p-2 2

2 ~

Zo

~ 2 • a < z1

*

< 2 p-1

en dus ook: 1 ~ a2 < 2 .

We concluderen in dit gevai dat b 1

*

P = p-1 •

*

2

=

0 en defini~ren a = a ,

Na weglaten van de (*) geidt weer I .

2) z; ~ 2P-1 and 11. 3) Dan geldt: 2P -1 ::;; z * ::;; 2P : 2 a 2 < z * < 2P

o

2 1 en dus ook: 2 ~ a < 4 .

*

2 We concluderen nu dat b 1

=

1 en definieren a

=

a /2.

Na weglaten van de (*) zien we dat nu wederom voldaan wordt aan I.

* p-1 * p-1

z1 ~ 2 and

Zo

< 2 and 11.

In dit geval is het niet mogelijk om b

1 te bepalen. *) floor (x) = entier(x) { X, als x E ~ roof (x)

=

entier(x)+1, als x i ~ .

(6)

- 4

-*

In de gevallen 1) en 2) handelen we verder met a zoals dat met a gebeurd is teneinde b

2 te bepalen. In geval 3) breken we de berekening van de

bits b. af. J

Bovenstaande vatten we samen in de volgende algorithme.

j : = 0;

correct := 2 p-1 -< z 0 ~ 2 : p 1 a < z 1 < 2 . P

I

for j := j + 1 while correct

-do od Zo := floor (z~ / 2P ); := roof(zi / 2P); i f zl < 2P -1 zl then p : = p - 1; b . . = 0 p-l J else if Zo 2 2 then b. := 1 J

else correct ;= false fi

fi

2. Programmatekst

In het programma wordt gebruik gemaakt van zogenaamde integer aritmetiek. De in het algemeen zeer grote getallen worden gerepresenteerd in het S-tallig stelsel, waarbij 8 de machinecapaciteit is. Hierdoor is het mogelijk om een

(zeer groot) geheel getal bit-v~~r-bit te vormen. V~~r de B 7700 geldt S = 813.

V~~r ieder getal wordt een voldoende groot eendimensionaal array gedecla-reerd, met ondergrens -1. Het element -1 dient voor het aangeven van het aantal S-tallige cijfers (nummering vanaf 0); de elementen 0,1, •.. bevatten de S-tallige cijfers.

V~~r een aantal standaard rekenkundige bewerkingen is gebruik gemaakt van procedures die welwillend ter beschikking gesteld zijn door A.P.M. Baaijens van de groep Numerieke Wiskunde en Service van de onderafdeling der Wiskunde T.H.E.

(7)

INTEGER PROCEDURE LOGll'tAJOR(I.XI); INTEGER J,XI; BEG I N I N T E Ii ERN

x.

NB, Y ;

I:=-li I:=NX:=ABS{XIH Y:=XI; hB:::NX*39i WHILE Y NEQ 0

DO BEGIN Y:=Y DIY 2; NB:=N6+1 ENOi LOGZI'tAJOR:=NB

END LOGZ HAJ DIU

INTEGER PROCEDURE LOGZI'tlNOR{I,XI); INTEGER 1.11;

LO&ZI'tINOR:=LOGZHAJOR(I,Xl)-l; BOOLEAN PROCEDURE INTLSSZP{I,XI,P);

YALUE P; INTEGER I.XI.P;

BE GI N CO HHENT IN TLS 52P:'= X<2 •• Pi

INTLSSZP:=LOGZHAJOR(!,XI) LEQ P END INTLSS2P;

B DOLE A N PR aCE DURE t NTGE Q2P( I.X I.P) ; VALUE Pi INTEGER I,XI.P;

INTGEQZP:::Nor INTLSSZP{l,XI,P)i PRoe EOURE I NrOI YZ P(

x,

p, QUOT .RE H)i

VALUE P; INTEGER Pi INTEGER ARRAY X.QUOT.REH(-11; BEGIN COMMENT QU01:=X DIY 2 •• P. RE~:=X HOD Z.·Pi

INTEGER K.$ .T,M.X. NP.NQ;

NX:=ABS(X[-ll); NP:::P DIY 39; IF NP>NX

THEN BEGIN INTASSIGN(K.X[K).REI't(Kl); INTASSIGNI(K.O.QUOlIKJ)

END

ELSE BEGIN INTEGER ARRAY O[O:~X-NP1,R[-1:NP]; S:=p "00 19; 1:=19-S; NQ:=NX-NP.

If S NE Q G

THEN BEGIN R[-l]:=NPi

R(NP1:=X(NP]~(S-1:SJ END

ELSE R(-l]:=NP-l;

fOR K:=NP-l STEP -1 UNTIL ~ 00 R[Kl:=X(K];

If NP=NX

THEN OlOJ:=X(NP].(38:Tl

ELSE BEGIN rOR K:=Ng-l STEP -1 UNTil 0

00 BE GIN 0 [ 10 : = X [ K • N P] • [ ]8: T H If S NEQ 0 THEN O[K].[56:S):=X(K.l.~P].(S-1:S] [NOi If X[NX).[18:T);~ THEN NQ:=NQ-l ELSE OOIQ]:=X(NX). (18:11 END; QUOI[-l] :=NQi INTASSIGN(K,R{K].RE"(K]).

fOR K:=O STEP 1 UNTil NQ 00 QUOT(K]:=D(KJ

END

(8)

PROCEDURE INTflSQ2EX(X.EX);

V~lUE EX; INTEGER E~ INTEGER ARRAY X(-I); BEGIN COMMENT X:=flOOR(X •• Z/2 •• EX);

INTEGER I,J: INTEGER ARRAY REM(-l:[X DIV 191; INT"Ul(I,X[ll,J,X(JJ,XlIJ)r

INTDIVZP(X.EX.X,RE") END INTfLSQZEX;

PROCEDURE INfROSQZEX(X,EX);

VALUE EX; INTEGER EXi. INTEGER ARRAY X(-11;

BEGIN COMMENT X:=ROOf(X •• Z/Z •• EX);

INTEGER I,Ji INTEGER ARRAY RE"(-l:EX DIV 19]; INT"UL(I,X[Il,~,X(JJ.X(IJ);

IN TO 1 V 2 P (

x,

EX. l(, R Eft );

If INTNEQ(I.REM(I1,lf 1=-1 THEN REMt-l) ELSE 0)

THEN INTAODI(I,X(ll.l,X(IJ) END I NTROSQZEXi

BDOllAN PROCEDU~E INflOG2(I,XI,YI,S); INTEGER !,XI,TI.S;

BEGIN CO"HENT Y::::LOG2(X),

S=NUMBER Of SIGNIfICANT DIGIT! Of Y WITH OASlS=S •• IJ.

X AND S ARE INPUT PARAMETERS;

BOULEAN CORRECT; INTEGER J,K,L,Pi INTEGER ARRAY lO,ll[-1:20];

I N T ASS I G N C 1 , X I , ZO { I ) ) ; I NT A 00 HI. X I , 1. 11 ( I ] H

p: =LOG2IU JOR (I, XI );

CORRECT:=P>O AND INTlSS2P(I.IIUl,P); L:=O; 1:=5-1;

WHILE I ~EQ 0 AND CORRECT AND l<S DO BEGIN Yl:=O; K:=39;

WHILE K>O AND CORRECT DO JEGIN K::::K-l; INTROSQZEXCZ1.P); INTflSQZEX(ZO,P); If IN II S S 2 P ( J • Z 1 [ J 1 .. P-l ) THEN P::::P-l [LSE If INTGEQZP(J.IO(Jl,P-l) THEN YI.[K:l1:=1 ELSE CORRECT:=FALS[ ;: NO; If CORRECT

THE~ BEGIN 1:=1-1; l:=l.l END END;

INTlOG2:=CORRECT; S:=l £NO INTLOGZi

(9)

- 7

-Bijlage

spravotchnaya Matematitcheskaya Biblioteka. Matematichesky Analiz. Vychislenie Elementarnych Funktsij

Fizmatgiz 1963.

7) § 2. JlOrAPII<I>MII'II,Ct'AI! >l>' Hk'IUHl 87

7. l1TepaUHoHHble

II pUll (: C L {{U 11 cp P a

npoueccbI. 1°. ~1TcpauHoHHhdl

:la UH¢pufh llJl\l HaXU)l\lleHHII x=log.y (l ~y<2).

11lUCTCil 3HaYCIIIIC x B ABOHYIIOI1 CIICleMe:

(a,=O, I).

1 )clc!l~JLUli,lTeJlbIlO HaXOllilTCIi X", y n' a n

Xo=x, yo=y; a, = 0, ec JI H Y ~ <' 2 .

a, = 1, ecml y~~ 2.

n \,'CTIo \,.')j;e onpe.!leJl"tll~ \.,. a It a 2 ' · · ' I Ct i - 1

Fe:1I1 y)<2, TO

a,=u,

Yi+'=/'

ECllil y;~2, TO a,= 1, Yi+,=2-'y~.

(n = 0, 1, ... )

(lueJle n lIJar'lB Hal1lleM n UHCPP llBOHYHoro pa3J10)l(eltHH

x = iog. y ::::::O,a,a •. .. an 19 (65) npYI He BapH3HTbI 3TOl-\ 3an,aYIl CM. B [18].

Referenties

GERELATEERDE DOCUMENTEN

Motivatie en handvaten voor het op kosteneffectieve wijze vermin- deren van de milieubelasting door een aantal belangrijke herbiciden in maïs en daardoor mogelijk behoud van

Dit laatste geval doet zich slechts voor als men de toelaatbare verzameling van oppervlakten heeft uitgebreid met die, waarvan de oppervlakte wordt uitgedrukt door een

A In dit artikel gaat het over 'handwerk' bij het leren en het beoefenen van wis- kunde. De laatste jaren is van vele kanten gewezen op de grote aandacht voor het intellectueel

Hans Steur heeft zich als doel gesteld aan leraren materiaal te verschaffen om hun wiskundelessen met praktische toepassingen te kunnen verrjken. Hij is daarin voortreffelijk

Het systeem moet niet allen veilig zijn voor diegenen die zich erin bevinden, maar ook voor diegenen die aarzelen ervan gebruik te maken omdat het onveilig

Bodems van kommen, schalen en potten (Fig. Bodemscherf van pot of schaal met vlakke bodem. Kern : grijs, klei vermengd met stukjes kiezel ; goed gebakken. Binnenwand :

Bij Tabel 4.2. moet bovendien worden opgemerkt dat het niet mogelijk is om de verschillende vervoerswijzen met elkaar te vergelijken, aangezien het om aandelen gaat, en niet