Hogyan tudok n. gyököt vonni ANSI C-ben?
Lehet hogy hülye kérdésnek tűnik, de sajnos fogalmam sincs, hogyan csináljam. Mértani közepeket kellene számolnia a programnak.
Előre is köszi
<math.h>-ból használd a pow(double alap, double kitevő) függvényt.
n. gyök:
gyok = pow(szam, 1.f/n);
Első válasza jó.
Annyit tennék hozzá, hogy:
1. Ha többször kell használnod érdemes előtte egyszer kiszámolni a hatvány inverzét.
2. Ha csak összehasonlításhoz kell az eredmény, használd az rsqrt (inverz gyökvonás), az pont egy osztással gyorsabb.
Igazából, azért mert gyorsabb, csak azért hoztam fel.
Természetesen nem a hatvány lesz reciprok rsqrt()-nél, hanem az eredmény lesz az. Viszont összehasonlításhoz tökéletesen elég, és gyakorlatilag megspórolsz egy költséges osztás, a sqrt() Newton módszert használ, ahol először a reciprok gyököt közelítjük ki, aztán vesszük az eredmény reciprokát.
Ha csak két értéket hasonlítunk össze, vagy eleve osztani akarunk az eredménnyel, érdemes kihagyni (ha a fordító nem tenné meg) azt a plusz egy (költséges) műveletet.
Ref: [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!