( geza42 | 2021. 04. 16., p – 21:27 )

Igen, érdemes átgondolni :) lehet kiderül, hogy nincs a bemenettől ilyen módon függő corner case. De nem igazán szeretnék ebbe energiát tenni, tekintve hogy nem én biztosan nem így csinálnám meg, meg ugye ez a kód így ebben a formában biztosan hibás, pl. a mypow(-1e-24, 1, 3)-re pozitív eredményt ad a negatív helyett (a korábban írt epsilon probléma miatt). Ha ezt kijavítod valahogy (pl. relatív hibát nézve az abszolut helyett, vagy valami ilyesmi), akkor is valszeg lehet olyan esetet találni, amit helytelenül kezel le (persze ez függ attól, hogyan javítod ki). A pow ugye nem ad garanciát arra nézve, hogy a számított érték a lehető legpontosabb érték. Szóval macera ez alapján belátni, hogy a számított pow érték pontosan milyen közel lesz az 'a'-hoz.

Ehhez képest az eredeti megoldás egyszerűbb, könnyebben be lehet látni, hogy helyesen működik (ha helyesen működik, igaziból azt se volt kedvem komolyabban átnézni), mivel nincs benne semmi floating point "mágia".

(Nem néztem át amúgy a kódodat tüzetesen, szóval nem tudom pontosan miért van benne 4-5 pow, meg pontosan miért is játszol az előjelekkel)