//Spell4「高速ばらまき弾」 void shot_E3(){ int t=spcount; if(t>=120){ E3(); if(t%20==0) se_flag[0]=1; } for(int i=0;i < BULLET_MAX;i++){ if(bullet[i].flag==1){ if(bullet[i].cnt<20){//20フレーム間加速 bullet[i].spd*=1.01; } } } }
void var_SB_izo::force(const double Ti, const vector<double> &X, vector<double> & F) { SB sv = SB(X); double r = sv.q.getAbs(); double r2 = r*r; triple v3d = sv.p / r; //acceleration and acceleration partials ForceIzo f_(sv.t, sv.q, v3d); triple f = f_.force_pert(); Matrix ddFdy = f_.get_ddFdsv(); Matrix F3d(f); Matrix Q(sv.q), P(sv.p), A(sv.a); //Vector 2 Matrix Matrix dYdY0(11, 11), dqdY0(3, 11), dpdY0(3, 11), dadY0(3, 11), dhdY0(1, 11); dYdY0.setFromVec(11, X); dqdY0.setFromVec(11, X); dpdY0.setFromVec(44, X); dadY0.setFromVec(77, X); dhdY0.setFromVec(110, X); Matrix E3(3, 3); E3.Identy(); Matrix dydY = sv.dydY(); Matrix dFdY0 = ddFdy*dydY*dYdY0; //Equations 0-10 #pragma region Equations 0-10 triple dpds = (2.0*sv.h)*sv.q - sv.a + r2*f; double dhds = sv.p*f; double qtf = sv.q*f; double qtp = sv.q*sv.p; triple dads = (2.0*dhds)*sv.q - (qtf)*sv.p - qtp*f; for (int i = 0; i < 3; i++) { F[i] = sv.p[i]; F[i + 3] = dpds[i]; F[i + 6] = dads[i]; } F[9] = dhds; F[10] = r; #pragma endregion Matrix fqt = triple::xxt(f, sv.q); Matrix q_pt = triple::xxt(sv.q, sv.p); Matrix D = sv.h*E3 + fqt; D *= 2.0; Matrix D1 = (2.0*dhds)*E3 - triple::xxt(sv.p, f) - triple::xxt(f, sv.p); Matrix D2 = 2.0*triple::xxt(sv.q, f) - qtf*E3 - fqt; Matrix D3 = 2.0*q_pt - q_pt.Transpose() - qtp*E3; //Equations 11-43 //Matrix ddqdY0 = dpdY0; //Equations 44-76 Matrix ddpdY0 = D*dqdY0 + 2.0*Q*dhdY0 - dadY0 + r2*dFdY0; //Equations 77-109 Matrix ddadY0 = D1*dqdY0 + D2*dpdY0 + D3*dFdY0; //Equations 110-120 Matrix ddhdY0 = F3d.Transpose()*dpdY0 + P.Transpose()*dFdY0; //Equations 120-131 Matrix ddtdY0 = (Q.Transpose()*dqdY0) / r; dpdY0.copyToVec(11, F); ddpdY0.copyToVec(44, F); ddadY0.copyToVec(77, F); ddhdY0.copyToVec(110, F); ddtdY0.copyToVec(120, F); Global::N_rp++; }
~E2() noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted destructor does not match the calculated one}} }; // If a function is explicitly defaulted on its first declaration // -- it is implicitly considered to have the same exception-specification as // if it had been implicitly declared struct E3 { E3() = default; E3(const E3&) = default; E3(E3&&) = default; E3 &operator=(const E3&) = default; E3 &operator=(E3&&) = default; ~E3() = default; }; E3 e3; static_assert(noexcept(E3(), E3(E3()), E3(e3), e3 = E3(), e3 = e3), ""); struct E4 { E4() noexcept(false); E4(const E4&) noexcept(false); E4(E4&&) noexcept(false); E4 &operator=(const E4&) noexcept(false); E4 &operator=(E4&&) noexcept(false); ~E4() noexcept(false); }; struct E5 { E5() = default; E5(const E5&) = default; E5(E5&&) = default; E5 &operator=(const E5&) = default; E5 &operator=(E5&&) = default; ~E5() = default;