Program: 16319
Project: 16319
Buggy source:
private int calcRmsd(int len){
  double Sxx2=Sxx * Sxx;
  double Syy2=Syy * Syy;
  double Szz2=Szz * Szz;
  double Sxy2=Sxy * Sxy;
  double Syz2=Syz * Syz;
  double Sxz2=Sxz * Sxz;
  double Syx2=Syx * Syx;
  double Szy2=Szy * Szy;
  double Szx2=Szx * Szx;
  double SyzSzymSyySzz2=2.0 * (Syz * Szy - Syy * Szz);
  double Sxx2Syy2Szz2Syz2Szy2=Syy2 + Szz2 - Sxx2 + Syz2 + Szy2;
  double c2=-2.0 * (Sxx2 + Syy2 + Szz2+ Sxy2+ Syx2+ Sxz2+ Szx2+ Syz2+ Szy2);
  double c1=8.0 * (Sxx * Syz * Szy + Syy * Szx * Sxz + Szz * Sxy * Syx - Sxx * Syy * Szz - Syz * Szx * Sxy - Szy * Syx * Sxz);
  SxzpSzx=Sxz + Szx;
  SyzpSzy=Syz + Szy;
  SxypSyx=Sxy + Syx;
  SyzmSzy=Syz - Szy;
  SxzmSzx=Sxz - Szx;
  SxymSyx=Sxy - Syx;
  SxxpSyy=Sxx + Syy;
  SxxmSyy=Sxx - Syy;
  double Sxy2Sxz2Syx2Szx2=Sxy2 + Sxz2 - Syx2 - Szx2;
  double c0=Sxy2Sxz2Syx2Szx2 * Sxy2Sxz2Syx2Szx2 + (Sxx2Syy2Szz2Syz2Szy2 + SyzSzymSyySzz2) * (Sxx2Syy2Szz2Syz2Szy2 - SyzSzymSyySzz2) + (-(SxzpSzx) * (SyzmSzy) + (SxymSyx) * (SxxmSyy - Szz)) * (-(SxzmSzx) * (SyzpSzy) + (SxymSyx) * (SxxmSyy + Szz)) + (-(SxzpSzx) * (SyzpSzy) - (SxypSyx) * (SxxpSyy - Szz)) * (-(SxzmSzx) * (SyzmSzy) - (SxypSyx) * (SxxpSyy + Szz)) + (+(SxypSyx) * (SyzpSzy) + (SxzpSzx) * (SxxmSyy + Szz)) * (-(SxymSyx) * (SyzmSzy) + (SxzpSzx) * (SxxpSyy + Szz)) + (+(SxypSyx) * (SyzmSzy) + (SxzmSzx) * (SxxmSyy - Szz)) * (-(SxymSyx) * (SyzpSzy) + (SxzmSzx) * (SxxpSyy - Szz));
  mxEigenV=e0;
  int i;
  for (i=0; i < 50; ++i) {
    double oldg=mxEigenV;
    double x2=mxEigenV * mxEigenV;
    double b=(x2 + c2) * mxEigenV;
    double a=b + c1;
    double delta=((a * mxEigenV + c0) / (2.0 * x2 * mxEigenV + b + a));
    mxEigenV-=delta;
    if (Math.abs(mxEigenV - oldg) < Math.abs(evalprec * mxEigenV))     break;
  }
  if (i == 50)   System.err.println("String_Node_Str" + i);
  rmsd=Math.sqrt(Math.abs(2.0 * (e0 - mxEigenV) / len));
  return 1;
}

Fixed version (ground truth):
private int calcRmsd(int len){
  double Sxx2=Sxx * Sxx;
  double Syy2=Syy * Syy;
  double Szz2=Szz * Szz;
  double Sxy2=Sxy * Sxy;
  double Syz2=Syz * Syz;
  double Sxz2=Sxz * Sxz;
  double Syx2=Syx * Syx;
  double Szy2=Szy * Szy;
  double Szx2=Szx * Szx;
  double SyzSzymSyySzz2=2.0 * (Syz * Szy - Syy * Szz);
  double Sxx2Syy2Szz2Syz2Szy2=Syy2 + Szz2 - Sxx2 + Syz2 + Szy2;
  double c2=-2.0 * (Sxx2 + Syy2 + Szz2+ Sxy2+ Syx2+ Sxz2+ Szx2+ Syz2+ Szy2);
  double c1=8.0 * (Sxx * Syz * Szy + Syy * Szx * Sxz + Szz * Sxy * Syx - Sxx * Syy * Szz - Syz * Szx * Sxy - Szy * Syx * Sxz);
  SxzpSzx=Sxz + Szx;
  SyzpSzy=Syz + Szy;
  SxypSyx=Sxy + Syx;
  SyzmSzy=Syz - Szy;
  SxzmSzx=Sxz - Szx;
  SxymSyx=Sxy - Syx;
  SxxpSyy=Sxx + Syy;
  SxxmSyy=Sxx - Syy;
  double Sxy2Sxz2Syx2Szx2=Sxy2 + Sxz2 - Syx2 - Szx2;
  double c0=Sxy2Sxz2Syx2Szx2 * Sxy2Sxz2Syx2Szx2 + (Sxx2Syy2Szz2Syz2Szy2 + SyzSzymSyySzz2) * (Sxx2Syy2Szz2Syz2Szy2 - SyzSzymSyySzz2) + (-(SxzpSzx) * (SyzmSzy) + (SxymSyx) * (SxxmSyy - Szz)) * (-(SxzmSzx) * (SyzpSzy) + (SxymSyx) * (SxxmSyy + Szz)) + (-(SxzpSzx) * (SyzpSzy) - (SxypSyx) * (SxxpSyy - Szz)) * (-(SxzmSzx) * (SyzmSzy) - (SxypSyx) * (SxxpSyy + Szz)) + (+(SxypSyx) * (SyzpSzy) + (SxzpSzx) * (SxxmSyy + Szz)) * (-(SxymSyx) * (SyzmSzy) + (SxzpSzx) * (SxxpSyy + Szz)) + (+(SxypSyx) * (SyzmSzy) + (SxzmSzx) * (SxxmSyy - Szz)) * (-(SxymSyx) * (SyzpSzy) + (SxzmSzx) * (SxxpSyy - Szz));
  mxEigenV=e0;
  int i;
  for (i=1; i < 51; ++i) {
    double oldg=mxEigenV;
    double x2=mxEigenV * mxEigenV;
    double b=(x2 + c2) * mxEigenV;
    double a=b + c1;
    double delta=((a * mxEigenV + c0) / (2.0 * x2 * mxEigenV + b + a));
    mxEigenV-=delta;
    if (Math.abs(mxEigenV - oldg) < evalprec)     break;
  }
  if (i == 50) {
    logger.warn(String.format("String_Node_Str",i));
  }
 else {
    logger.info(String.format("String_Node_Str",i));
  }
  rmsd=Math.sqrt(Math.abs(2.0 * (e0 - mxEigenV) / len));
  return 1;
}