# Fast method to calculate inverse square root of a floating point number in IEEE 754 format

• Difficulty Level : Expert
• Last Updated : 30 May, 2022

Given a 32 bit floating point number x stored in IEEE 754 floating point format, find inverse square root of x, i.e., x-1/2.
A simple solution is to do floating point arithmetic. Following is example function.

## CPP

 `#include ``#include ``using` `namespace` `std;` `float` `InverseSquareRoot(``float` `x)``{``    ``return` `1/``sqrt``(x);``}` `int` `main()``{``    ``cout << InverseSquareRoot(0.5) << endl;``    ``cout << InverseSquareRoot(3.6) << endl;``    ``cout << InverseSquareRoot(1.0) << endl;``    ``return` `0;``}`

## Java

 `import` `java.io.*;` `class` `GFG {` `    ``static` `float` `InverseSquareRoot(``float` `x)``    ``{``        ``return` `1` `/ (``float``)Math.sqrt(x);``    ``}` `    ``public` `static` `void` `main(String[] args)``    ``{``        ``System.out.println(InverseSquareRoot(``0``.5f));``        ``System.out.println(InverseSquareRoot(``3``.6f));``        ``System.out.println(InverseSquareRoot(``1``.0f));``    ``}``}` `// This code is contributed by souravmahato348.`

## Python3

 `# Python code for the above approach``from` `math ``import` `ceil, sqrt` `def` `InverseSquareRoot(x) :``    ` `    ``return` `1``/``sqrt(x)` `# Driver Code``print``(InverseSquareRoot(``0.5``) )``print``(InverseSquareRoot(``3.6``) )``print``(InverseSquareRoot(``1.0``) )` `# This code is contributed by code_hunt.`

## C#

 `using` `System;` `class` `GFG {` `    ``static` `float` `InverseSquareRoot(``float` `x)``    ``{``        ``return` `1 / (``float``)Math.Sqrt(x);``    ``}` `    ``public` `static` `void` `Main()``    ``{``        ``Console.WriteLine(InverseSquareRoot(0.5f));``        ``Console.WriteLine(InverseSquareRoot(3.6f));``        ``Console.WriteLine(InverseSquareRoot(1.0f));``    ``}``}` `// This code is contributed by subham348.`

## Javascript

 ``

Output:

```1.41421
0.527046
1```

Following is a fast and interesting method based for the same. See this for detailed explanation.

## C

 `#include ``using` `namespace` `std;` `// This is fairly tricky and complex process. For details, see``// http://en.wikipedia.org/wiki/Fast_inverse_square_root``float` `InverseSquareRoot(``float` `x)``{``    ``float` `xhalf = 0.5f*x;``    ``int` `i = *(``int``*)&x;``    ``i = 0x5f3759d5 - (i >> 1);``    ``x = *(``float``*)&i;``    ``x = x*(1.5f - xhalf*x*x);``    ``return` `x;``}` `int` `main()``{``    ``cout << InverseSquareRoot(0.5) << endl;``    ``cout << InverseSquareRoot(3.6) << endl;``    ``cout << InverseSquareRoot(1.0) << endl;``    ``return` `0;``}`

Output:

```1.41386
0.526715
0.998307```

Source:
http://en.wikipedia.org/wiki/Fast_inverse_square_root