computation Article Modified Fast Inverse Square Root and Square Root Approximation Algorithms: The Method of Switching Magic Constants Leonid V. Moroz 1, Volodymyr V. Samotyy 2,3,* and Oleh Y. Horyachyy 1 1 Information Technologies Security Department, Lviv Polytechnic National University, 79013 Lviv, Ukraine;
[email protected] (L.V.M.);
[email protected] (O.Y.H.) 2 Automation and Information Technologies Department, Cracow University of Technology, 31155 Cracow, Poland 3 Information Security Management Department, Lviv State University of Life Safety, 79007 Lviv, Ukraine * Correspondence:
[email protected] Abstract: Many low-cost platforms that support floating-point arithmetic, such as microcontrollers and field-programmable gate arrays, do not include fast hardware or software methods for calculating the square root and/or reciprocal square root. Typically, such functions are implemented using direct lookup tables or polynomial approximations, with a subsequent application of the Newton– Raphson method. Other, more complex solutions include high-radix digit-recurrence and bipartite or multipartite table-based methods. In contrast, this article proposes a simple modification of the fast inverse square root method that has high accuracy and relatively low latency. Algorithms are given in C/C++ for single- and double-precision numbers in the IEEE 754 format for both square root and reciprocal square root functions. These are based on the switching of magic constants in the Citation: Moroz, L.V.; Samotyy, V.V.; initial approximation, depending on the input interval of the normalized floating-point numbers, in Horyachyy, O.Y. Modified Fast order to minimize the maximum relative error on each subinterval after the first iteration—giving Inverse Square Root and Square Root 13 correct bits of the result.