door 317070 » za 12 jul 2014, 12:18
romanv schreef:
ik bedoelde eigenlijk hoe bijv een rekenmachine 3^0,233 uitrekent, omdat ik altijd heb geleerd dat machten met hele getallen gaat.
maar dit kan natuurlijk herscheven worden als (1000√3)^233
Dat klopt, maar dat is niet hoe een rekenmachine het doet. Een rekenmachine maakt hiervoor gebruik van logaritmes. (Maar als je die nog niet gezien hebt, geen nood, dat komt nog wel)
* Method: Let x = 2 * (1+f)
* 1. Compute and return log2(x) in two pieces:
* log2(x) = w1 + w2,
* where w1 has 53-24 = 29 bit trailing zeros.
* 2. Perform y*log2(x) = n+y' by simulating muti-precision
* arithmetic, where |y'|<=0.5.
* 3. Return x**y = 2**n*exp(y'*log2)
http://www.netlib.org/fdlibm/e_pow.c
[quote="romanv"]
ik bedoelde eigenlijk hoe bijv een rekenmachine 3^0,233 uitrekent, omdat ik altijd heb geleerd dat machten met hele getallen gaat.
maar dit kan natuurlijk herscheven worden als (1000√3)^233
[/quote]
Dat klopt, maar dat is niet hoe een rekenmachine het doet. Een rekenmachine maakt hiervoor gebruik van logaritmes. (Maar als je die nog niet gezien hebt, geen nood, dat komt nog wel) ;)
[quote]
* Method: Let x = 2 * (1+f)
* 1. Compute and return log2(x) in two pieces:
* log2(x) = w1 + w2,
* where w1 has 53-24 = 29 bit trailing zeros.
* 2. Perform y*log2(x) = n+y' by simulating muti-precision
* arithmetic, where |y'|<=0.5.
* 3. Return x**y = 2**n*exp(y'*log2)[/quote]
[url=http://www.netlib.org/fdlibm/e_pow.c]http://www.netlib.org/fdlibm/e_pow.c[/url]