C ++代码,如果条件表示在Fortran或Python中

时间:2018-12-24 03:17:42

标签: python c++ fortran

我一直在尝试阅读C ++代码,并且想知道是否有人可以提供帮助。 因此,是代码段:

bool res;
if(res=(D<0)) {u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}
 else
 {
  D = sqrt(D);
  const realfp err = M*y1_+N*x1_-data.K*y1_*x1_;
  const realfp err_= M*y2_+N*x2_-data.K*y2_*x2_;

  if(fabs(err)<fabs(err_)) {
    u2 = atan2(y1_, x1_);
    u2_= atan2(y2_, x2_);}
  else {
    u2_= atan2(y1_, x1_);
    u2 = atan2(y2_, x2_);}

 }

等同于:

res = D < 0;
if (res) {
    if (C > 0) {
        u2_ = u2 = atan(A, B);
    } else {
        u2_ = u2 = atan2(-A, -B);
    }
    D = 0;
} else {
    D = sqrt(D);
    const realfp err  = M*y1_+N*x1_-data.K*y1_*x1_;
    const realfp err_ = M*y2_+N*x2_-data.K*y2_*x2_;

    if (fabs(err) < fabs(err_)) {
        u2 = atan2(y1_, x1_);
        u2_= atan2(y2_, x2_);
    } else {
        u2_= atan2(y1_, x1_);
        u2 = atan2(y2_, x2_);
    }
}

我要问的原因是因为我对条件if(res=(D<0)) {u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}感到困惑 我了解它可以检查D <0,但不能跟随后缀,尤其是{u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}部分。 实际上,如果您可以将if condition转换为python或Fortran,那就太好了。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

{u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}

可以翻译为:

if (C >0) {
  u2_ = u2 = atan2(A,B);
}
else {
  u2_ = u2 = atan2(-A,-B);
}
D=0;