<div>Dear,</div>
<div> </div>
<div>I am reading the source code under directory src/gmxlib/nonbonded/nb_kernel, I found some instructions like the following:</div>
<div> </div>
<div>191 rinv11 = __frsqrtes(rsq11);<br>192 rinv11 = (0.5*rinv11*(3.0-((rsq11*rinv11)*rinv11)));<br>193 rinv12 = __frsqrtes(rsq12);<br>194 rinv12 = (0.5*rinv12*(3.0-((rsq12*rinv12)*rinv12)));<br>
195 rinv13 = __frsqrtes(rsq13);<br>196 rinv13 = (0.5*rinv13*(3.0-((rsq13*rinv13)*rinv13)));<br>197 rinv21 = __frsqrtes(rsq21);<br>198 rinv21 = (0.5*rinv21*(3.0-((rsq21*rinv21)*rinv21)));<br>
199 rinv22 = __frsqrtes(rsq22);<br>200 rinv22 = (0.5*rinv22*(3.0-((rsq22*rinv22)*rinv22)));<br>201 rinv23 = __frsqrtes(rsq23);<br>202 rinv23 = (0.5*rinv23*(3.0-((rsq23*rinv23)*rinv23)));<br>
203 rinv31 = __frsqrtes(rsq31);<br>204 rinv31 = (0.5*rinv31*(3.0-((rsq31*rinv31)*rinv31)));<br>205 rinv32 = __frsqrtes(rsq32);<br>206 rinv32 = (0.5*rinv32*(3.0-((rsq32*rinv32)*rinv32)));<br>
207 rinv33 = __frsqrtes(rsq33);<br>208 rinv33 = (0.5*rinv33*(3.0-((rsq33*rinv33)*rinv33)));<br></div>
<div>As the __frsqrtes(rsq11) subroutine returns the reciprocal square root of the rsq11, and therefore, 3.0-((rsq11*rinv11)*rinv11) is about 2, and 0.5*rinv*2 is about equals to the original rinv11. Does anyone know whether GROMACS recalculate rinv11 with the additional instruction? Thanks for any explaination.</div>
<div> </div>
<div> </div>