3 #if HAL_CPU_CLASS >= HAL_CPU_CLASS_150    15     stateStruct(*reinterpret_cast<struct 
state_elements *>(&statesArray)),
    17     _perf_UpdateFilter(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_UpdateFilter")),
    18     _perf_CovariancePrediction(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_CovariancePrediction")),
    19     _perf_FuseVelPosNED(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_FuseVelPosNED")),
    20     _perf_FuseMagnetometer(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_FuseMagnetometer")),
    21     _perf_FuseAirspeed(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_FuseAirspeed")),
    22     _perf_FuseSideslip(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_FuseSideslip")),
    23     _perf_TerrainOffset(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_TerrainOffset")),
    24     _perf_FuseOptFlow(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_FuseOptFlow")),
    25     _perf_FuseBodyOdom(hal.util->perf_alloc(
AP_HAL::
Util::PC_ELAPSED, 
"EK3_FuseBodyOdom"))
    56     if (
AP::ins().get_sample_rate() > 0) {
    74         float gps_delay_sec = 0;
    75         if (!
AP::gps().get_lag(gps_delay_sec)) {
    80                     gcs().
send_text(MAV_SEVERITY_ERROR, 
"EKF3 waiting for GPS config data");
    82                     gcs().
send_text(MAV_SEVERITY_WARNING, 
"EKF3 waiting for GPS config data");
    84                     gcs().
send_text(MAV_SEVERITY_INFO, 
"EKF3 waiting for GPS config data");
    90         maxTimeDelay_ms = 
MAX(maxTimeDelay_ms , 
MIN((uint16_t)(gps_delay_sec * 1000.0
f),250));
   104     uint16_t ekf_delay_ms = maxTimeDelay_ms + (int)(ceilf((
float)maxTimeDelay_ms * 0.5f));
   211     memset(&
P[0][0], 0, 
sizeof(
P));
   436     float pitch=0, roll=0;
   437     if (initAccVec.
length() > 0.001f) {
   441         pitch = asinf(initAccVec.
x);
   444         roll = atan2f(-initAccVec.
y , -initAccVec.
z);
   487     memset(
P, 0, 
sizeof(
P));
   491     rot_vec_var.
x = rot_vec_var.
y = rot_vec_var.
z = 
sq(0.1
f);
   506     P[11][11] = 
P[10][10];
   507     P[12][12] = 
P[10][10];
   510     P[14][14] = 
P[13][13];
   511     P[15][15] = 
P[13][13];
   514     P[17][17] = 
P[16][16];
   515     P[18][18] = 
P[16][16];
   518     P[20][20] = 
P[19][19];
   519     P[21][21] = 
P[19][19];
   522     P[23][23]  = 
P[22][22];
   545 #if EK3_DISABLE_INTERRUPTS   546     irqstate_t istate = irqsave();
   596 #if EK3_DISABLE_INTERRUPTS   716     Vector3f delVelNav  = Tbn_temp*delVelNewCorrected;
   766         if (quatErr[0] >= 0.0
f) {
   771         deltaAngErr.
x = scaler * quatErr[1];
   772         deltaAngErr.
y = scaler * quatErr[2];
   773         deltaAngErr.
z = scaler * quatErr[3];
   779         float errorGain = 0.5f / timeDelay;
   783         delAngCorrection = deltaAngErr * errorGain * 
dtIMUavg;
   815             outputStates.
velocity += velCorrection;
   818             outputStates.
position += posCorrection;
   867     float alpha = 0.1f * 
dt;
   876         for (uint8_t i=0; i<=2; i++) processNoiseVariance[i] = dAngBiasVar;
   881         for (uint8_t i=3; i<=5; i++) {
   882             uint8_t stateIndex = i + 10;
   883             if (
P[stateIndex][stateIndex] > 1E-8
f) {
   884                 processNoiseVariance[i] = dVelBiasVar;
   887                 processNoiseVariance[i] = 10.0f * dVelBiasVar * (1e-8
f / fmaxf(
P[stateIndex][stateIndex],1e-9
f));
   895         for (uint8_t i=6; i<=8; i++) processNoiseVariance[i] = magEarthVar;
   896         for (uint8_t i=9; i<=11; i++) processNoiseVariance[i] = magBodyVar;
   901         for (uint8_t i=12; i<=13; i++) processNoiseVariance[i] = windVelVar;
   922     daxVar = dayVar = dazVar = 
sq(
dt*_gyrNoise);
   924     dvxVar = dvyVar = dvzVar = 
sq(
dt*_accNoise);
   934     SF[3] = 2*
q1*SF[2] + 2*
q2*SF[1] + 2*
q3*SF[0];
   935     SF[4] = 2*
q0*SF[1] - 2*
q1*SF[0] + 2*
q3*SF[2];
   936     SF[5] = 2*
q0*SF[2] + 2*
q2*SF[0] - 2*
q3*SF[1];
   937     SF[6] = day/2 - day_b/2;
   938     SF[7] = daz/2 - daz_b/2;
   939     SF[8] = dax/2 - dax_b/2;
   940     SF[9] = dax_b/2 - dax/2;
   941     SF[10] = daz_b/2 - daz/2;
   942     SF[11] = day_b/2 - day/2;
   964     SQ[0] = dvzVar*(SG[5] - 2*
q0*
q1)*(SG[1] - SG[2] - SG[3] + SG[4]) - dvyVar*(SG[5] + 2*
q0*
q1)*(SG[1] - SG[2] + SG[3] - SG[4]) + dvxVar*(SG[6] - 2*
q0*
q2)*(SG[7] + 2*
q0*q3);
   965     SQ[1] = dvzVar*(SG[6] + 2*
q0*
q2)*(SG[1] - SG[2] - SG[3] + SG[4]) - dvxVar*(SG[6] - 2*
q0*
q2)*(SG[1] + SG[2] - SG[3] - SG[4]) + dvyVar*(SG[5] + 2*
q0*
q1)*(SG[7] - 2*
q0*q3);
   966     SQ[2] = dvzVar*(SG[5] - 2*
q0*
q1)*(SG[6] + 2*
q0*q2) - dvyVar*(SG[7] - 2*
q0*
q3)*(SG[1] - SG[2] + SG[3] - SG[4]) - dvxVar*(SG[7] + 2*
q0*
q3)*(SG[1] + SG[2] - SG[3] - SG[4]);
   967     SQ[3] = (dayVar*
q1*SG[0])/2 - (dazVar*
q1*SG[0])/2 - (daxVar*q2*
q3)/4;
   968     SQ[4] = (dazVar*q2*SG[0])/2 - (daxVar*q2*SG[0])/2 - (dayVar*
q1*
q3)/4;
   969     SQ[5] = (daxVar*q3*SG[0])/2 - (dayVar*q3*SG[0])/2 - (dazVar*
q1*
q2)/4;
   970     SQ[6] = (daxVar*
q1*
q2)/4 - (dazVar*q3*SG[0])/2 - (dayVar*
q1*
q2)/4;
   971     SQ[7] = (dazVar*
q1*
q3)/4 - (daxVar*
q1*q3)/4 - (dayVar*q2*SG[0])/2;
   972     SQ[8] = (dayVar*q2*
q3)/4 - (daxVar*
q1*SG[0])/2 - (dazVar*q2*
q3)/4;
   977     SPP[0] = SF[12] + SF[13] - 2*q2*SF[2];
   978     SPP[1] = SF[17] - SF[18] - SF[19] + SF[20];
   979     SPP[2] = SF[17] - SF[18] + SF[19] - SF[20];
   980     SPP[3] = SF[17] + SF[18] - SF[19] - SF[20];
   981     SPP[4] = 2*
q0*q2 - 2*
q1*
q3;
   982     SPP[5] = 2*
q0*
q1 - 2*q2*
q3;
   983     SPP[6] = 2*
q0*q3 - 2*
q1*
q2;
   984     SPP[7] = 2*
q0*
q1 + 2*q2*
q3;
   985     SPP[8] = 2*
q0*q3 + 2*
q1*
q2;
   986     SPP[9] = 2*
q0*q2 + 2*
q1*
q3;
   990     nextP[0][0] = 
P[0][0] + 
P[1][0]*SF[9] + 
P[2][0]*SF[11] + 
P[3][0]*SF[10] + 
P[10][0]*SF[14] + 
P[11][0]*SF[15] + 
P[12][0]*SPP[10] + (daxVar*SQ[10])/4 + SF[9]*(
P[0][1] + 
P[1][1]*SF[9] + 
P[2][1]*SF[11] + 
P[3][1]*SF[10] + 
P[10][1]*SF[14] + 
P[11][1]*SF[15] + 
P[12][1]*SPP[10]) + SF[11]*(
P[0][2] + 
P[1][2]*SF[9] + 
P[2][2]*SF[11] + 
P[3][2]*SF[10] + 
P[10][2]*SF[14] + 
P[11][2]*SF[15] + 
P[12][2]*SPP[10]) + SF[10]*(
P[0][3] + 
P[1][3]*SF[9] + 
P[2][3]*SF[11] + 
P[3][3]*SF[10] + 
P[10][3]*SF[14] + 
P[11][3]*SF[15] + 
P[12][3]*SPP[10]) + SF[14]*(
P[0][10] + 
P[1][10]*SF[9] + 
P[2][10]*SF[11] + 
P[3][10]*SF[10] + 
P[10][10]*SF[14] + 
P[11][10]*SF[15] + 
P[12][10]*SPP[10]) + SF[15]*(
P[0][11] + 
P[1][11]*SF[9] + 
P[2][11]*SF[11] + 
P[3][11]*SF[10] + 
P[10][11]*SF[14] + 
P[11][11]*SF[15] + 
P[12][11]*SPP[10]) + SPP[10]*(
P[0][12] + 
P[1][12]*SF[9] + 
P[2][12]*SF[11] + 
P[3][12]*SF[10] + 
P[10][12]*SF[14] + 
P[11][12]*SF[15] + 
P[12][12]*SPP[10]) + (dayVar*
sq(q2))/4 + (dazVar*
sq(q3))/4;
   991     nextP[0][1] = 
P[0][1] + SQ[8] + 
P[1][1]*SF[9] + 
P[2][1]*SF[11] + 
P[3][1]*SF[10] + 
P[10][1]*SF[14] + 
P[11][1]*SF[15] + 
P[12][1]*SPP[10] + SF[8]*(
P[0][0] + 
P[1][0]*SF[9] + 
P[2][0]*SF[11] + 
P[3][0]*SF[10] + 
P[10][0]*SF[14] + 
P[11][0]*SF[15] + 
P[12][0]*SPP[10]) + SF[7]*(
P[0][2] + 
P[1][2]*SF[9] + 
P[2][2]*SF[11] + 
P[3][2]*SF[10] + 
P[10][2]*SF[14] + 
P[11][2]*SF[15] + 
P[12][2]*SPP[10]) + SF[11]*(
P[0][3] + 
P[1][3]*SF[9] + 
P[2][3]*SF[11] + 
P[3][3]*SF[10] + 
P[10][3]*SF[14] + 
P[11][3]*SF[15] + 
P[12][3]*SPP[10]) - SF[15]*(
P[0][12] + 
P[1][12]*SF[9] + 
P[2][12]*SF[11] + 
P[3][12]*SF[10] + 
P[10][12]*SF[14] + 
P[11][12]*SF[15] + 
P[12][12]*SPP[10]) + SPP[10]*(
P[0][11] + 
P[1][11]*SF[9] + 
P[2][11]*SF[11] + 
P[3][11]*SF[10] + 
P[10][11]*SF[14] + 
P[11][11]*SF[15] + 
P[12][11]*SPP[10]) - (
q0*(
P[0][10] + 
P[1][10]*SF[9] + 
P[2][10]*SF[11] + 
P[3][10]*SF[10] + 
P[10][10]*SF[14] + 
P[11][10]*SF[15] + 
P[12][10]*SPP[10]))/2;
   992     nextP[1][1] = 
P[1][1] + 
P[0][1]*SF[8] + 
P[2][1]*SF[7] + 
P[3][1]*SF[11] - 
P[12][1]*SF[15] + 
P[11][1]*SPP[10] + daxVar*SQ[9] - (
P[10][1]*
q0)/2 + SF[8]*(
P[1][0] + 
P[0][0]*SF[8] + 
P[2][0]*SF[7] + 
P[3][0]*SF[11] - 
P[12][0]*SF[15] + 
P[11][0]*SPP[10] - (
P[10][0]*
q0)/2) + SF[7]*(
P[1][2] + 
P[0][2]*SF[8] + 
P[2][2]*SF[7] + 
P[3][2]*SF[11] - 
P[12][2]*SF[15] + 
P[11][2]*SPP[10] - (
P[10][2]*
q0)/2) + SF[11]*(
P[1][3] + 
P[0][3]*SF[8] + 
P[2][3]*SF[7] + 
P[3][3]*SF[11] - 
P[12][3]*SF[15] + 
P[11][3]*SPP[10] - (
P[10][3]*
q0)/2) - SF[15]*(
P[1][12] + 
P[0][12]*SF[8] + 
P[2][12]*SF[7] + 
P[3][12]*SF[11] - 
P[12][12]*SF[15] + 
P[11][12]*SPP[10] - (
P[10][12]*
q0)/2) + SPP[10]*(
P[1][11] + 
P[0][11]*SF[8] + 
P[2][11]*SF[7] + 
P[3][11]*SF[11] - 
P[12][11]*SF[15] + 
P[11][11]*SPP[10] - (
P[10][11]*
q0)/2) + (dayVar*
sq(q3))/4 + (dazVar*
sq(q2))/4 - (
q0*(
P[1][10] + 
P[0][10]*SF[8] + 
P[2][10]*SF[7] + 
P[3][10]*SF[11] - 
P[12][10]*SF[15] + 
P[11][10]*SPP[10] - (
P[10][10]*
q0)/2))/2;
   993     nextP[0][2] = 
P[0][2] + SQ[7] + 
P[1][2]*SF[9] + 
P[2][2]*SF[11] + 
P[3][2]*SF[10] + 
P[10][2]*SF[14] + 
P[11][2]*SF[15] + 
P[12][2]*SPP[10] + SF[6]*(
P[0][0] + 
P[1][0]*SF[9] + 
P[2][0]*SF[11] + 
P[3][0]*SF[10] + 
P[10][0]*SF[14] + 
P[11][0]*SF[15] + 
P[12][0]*SPP[10]) + SF[10]*(
P[0][1] + 
P[1][1]*SF[9] + 
P[2][1]*SF[11] + 
P[3][1]*SF[10] + 
P[10][1]*SF[14] + 
P[11][1]*SF[15] + 
P[12][1]*SPP[10]) + SF[8]*(
P[0][3] + 
P[1][3]*SF[9] + 
P[2][3]*SF[11] + 
P[3][3]*SF[10] + 
P[10][3]*SF[14] + 
P[11][3]*SF[15] + 
P[12][3]*SPP[10]) + SF[14]*(
P[0][12] + 
P[1][12]*SF[9] + 
P[2][12]*SF[11] + 
P[3][12]*SF[10] + 
P[10][12]*SF[14] + 
P[11][12]*SF[15] + 
P[12][12]*SPP[10]) - SPP[10]*(
P[0][10] + 
P[1][10]*SF[9] + 
P[2][10]*SF[11] + 
P[3][10]*SF[10] + 
P[10][10]*SF[14] + 
P[11][10]*SF[15] + 
P[12][10]*SPP[10]) - (
q0*(
P[0][11] + 
P[1][11]*SF[9] + 
P[2][11]*SF[11] + 
P[3][11]*SF[10] + 
P[10][11]*SF[14] + 
P[11][11]*SF[15] + 
P[12][11]*SPP[10]))/2;
   994     nextP[1][2] = 
P[1][2] + SQ[5] + 
P[0][2]*SF[8] + 
P[2][2]*SF[7] + 
P[3][2]*SF[11] - 
P[12][2]*SF[15] + 
P[11][2]*SPP[10] - (
P[10][2]*
q0)/2 + SF[6]*(
P[1][0] + 
P[0][0]*SF[8] + 
P[2][0]*SF[7] + 
P[3][0]*SF[11] - 
P[12][0]*SF[15] + 
P[11][0]*SPP[10] - (
P[10][0]*
q0)/2) + SF[10]*(
P[1][1] + 
P[0][1]*SF[8] + 
P[2][1]*SF[7] + 
P[3][1]*SF[11] - 
P[12][1]*SF[15] + 
P[11][1]*SPP[10] - (
P[10][1]*
q0)/2) + SF[8]*(
P[1][3] + 
P[0][3]*SF[8] + 
P[2][3]*SF[7] + 
P[3][3]*SF[11] - 
P[12][3]*SF[15] + 
P[11][3]*SPP[10] - (
P[10][3]*
q0)/2) + SF[14]*(
P[1][12] + 
P[0][12]*SF[8] + 
P[2][12]*SF[7] + 
P[3][12]*SF[11] - 
P[12][12]*SF[15] + 
P[11][12]*SPP[10] - (
P[10][12]*
q0)/2) - SPP[10]*(
P[1][10] + 
P[0][10]*SF[8] + 
P[2][10]*SF[7] + 
P[3][10]*SF[11] - 
P[12][10]*SF[15] + 
P[11][10]*SPP[10] - (
P[10][10]*
q0)/2) - (
q0*(
P[1][11] + 
P[0][11]*SF[8] + 
P[2][11]*SF[7] + 
P[3][11]*SF[11] - 
P[12][11]*SF[15] + 
P[11][11]*SPP[10] - (
P[10][11]*
q0)/2))/2;
   995     nextP[2][2] = 
P[2][2] + 
P[0][2]*SF[6] + 
P[1][2]*SF[10] + 
P[3][2]*SF[8] + 
P[12][2]*SF[14] - 
P[10][2]*SPP[10] + dayVar*SQ[9] + (dazVar*SQ[10])/4 - (
P[11][2]*
q0)/2 + SF[6]*(
P[2][0] + 
P[0][0]*SF[6] + 
P[1][0]*SF[10] + 
P[3][0]*SF[8] + 
P[12][0]*SF[14] - 
P[10][0]*SPP[10] - (
P[11][0]*
q0)/2) + SF[10]*(
P[2][1] + 
P[0][1]*SF[6] + 
P[1][1]*SF[10] + 
P[3][1]*SF[8] + 
P[12][1]*SF[14] - 
P[10][1]*SPP[10] - (
P[11][1]*
q0)/2) + SF[8]*(
P[2][3] + 
P[0][3]*SF[6] + 
P[1][3]*SF[10] + 
P[3][3]*SF[8] + 
P[12][3]*SF[14] - 
P[10][3]*SPP[10] - (
P[11][3]*
q0)/2) + SF[14]*(
P[2][12] + 
P[0][12]*SF[6] + 
P[1][12]*SF[10] + 
P[3][12]*SF[8] + 
P[12][12]*SF[14] - 
P[10][12]*SPP[10] - (
P[11][12]*
q0)/2) - SPP[10]*(
P[2][10] + 
P[0][10]*SF[6] + 
P[1][10]*SF[10] + 
P[3][10]*SF[8] + 
P[12][10]*SF[14] - 
P[10][10]*SPP[10] - (
P[11][10]*
q0)/2) + (daxVar*
sq(q3))/4 - (
q0*(
P[2][11] + 
P[0][11]*SF[6] + 
P[1][11]*SF[10] + 
P[3][11]*SF[8] + 
P[12][11]*SF[14] - 
P[10][11]*SPP[10] - (
P[11][11]*
q0)/2))/2;
   996     nextP[0][3] = 
P[0][3] + SQ[6] + 
P[1][3]*SF[9] + 
P[2][3]*SF[11] + 
P[3][3]*SF[10] + 
P[10][3]*SF[14] + 
P[11][3]*SF[15] + 
P[12][3]*SPP[10] + SF[7]*(
P[0][0] + 
P[1][0]*SF[9] + 
P[2][0]*SF[11] + 
P[3][0]*SF[10] + 
P[10][0]*SF[14] + 
P[11][0]*SF[15] + 
P[12][0]*SPP[10]) + SF[6]*(
P[0][1] + 
P[1][1]*SF[9] + 
P[2][1]*SF[11] + 
P[3][1]*SF[10] + 
P[10][1]*SF[14] + 
P[11][1]*SF[15] + 
P[12][1]*SPP[10]) + SF[9]*(
P[0][2] + 
P[1][2]*SF[9] + 
P[2][2]*SF[11] + 
P[3][2]*SF[10] + 
P[10][2]*SF[14] + 
P[11][2]*SF[15] + 
P[12][2]*SPP[10]) + SF[15]*(
P[0][10] + 
P[1][10]*SF[9] + 
P[2][10]*SF[11] + 
P[3][10]*SF[10] + 
P[10][10]*SF[14] + 
P[11][10]*SF[15] + 
P[12][10]*SPP[10]) - SF[14]*(
P[0][11] + 
P[1][11]*SF[9] + 
P[2][11]*SF[11] + 
P[3][11]*SF[10] + 
P[10][11]*SF[14] + 
P[11][11]*SF[15] + 
P[12][11]*SPP[10]) - (q0*(
P[0][12] + 
P[1][12]*SF[9] + 
P[2][12]*SF[11] + 
P[3][12]*SF[10] + 
P[10][12]*SF[14] + 
P[11][12]*SF[15] + 
P[12][12]*SPP[10]))/2;
   997     nextP[1][3] = 
P[1][3] + SQ[4] + 
P[0][3]*SF[8] + 
P[2][3]*SF[7] + 
P[3][3]*SF[11] - 
P[12][3]*SF[15] + 
P[11][3]*SPP[10] - (
P[10][3]*
q0)/2 + SF[7]*(
P[1][0] + 
P[0][0]*SF[8] + 
P[2][0]*SF[7] + 
P[3][0]*SF[11] - 
P[12][0]*SF[15] + 
P[11][0]*SPP[10] - (
P[10][0]*q0)/2) + SF[6]*(
P[1][1] + 
P[0][1]*SF[8] + 
P[2][1]*SF[7] + 
P[3][1]*SF[11] - 
P[12][1]*SF[15] + 
P[11][1]*SPP[10] - (
P[10][1]*q0)/2) + SF[9]*(
P[1][2] + 
P[0][2]*SF[8] + 
P[2][2]*SF[7] + 
P[3][2]*SF[11] - 
P[12][2]*SF[15] + 
P[11][2]*SPP[10] - (
P[10][2]*q0)/2) + SF[15]*(
P[1][10] + 
P[0][10]*SF[8] + 
P[2][10]*SF[7] + 
P[3][10]*SF[11] - 
P[12][10]*SF[15] + 
P[11][10]*SPP[10] - (
P[10][10]*q0)/2) - SF[14]*(
P[1][11] + 
P[0][11]*SF[8] + 
P[2][11]*SF[7] + 
P[3][11]*SF[11] - 
P[12][11]*SF[15] + 
P[11][11]*SPP[10] - (
P[10][11]*q0)/2) - (q0*(
P[1][12] + 
P[0][12]*SF[8] + 
P[2][12]*SF[7] + 
P[3][12]*SF[11] - 
P[12][12]*SF[15] + 
P[11][12]*SPP[10] - (
P[10][12]*q0)/2))/2;
   998     nextP[2][3] = 
P[2][3] + SQ[3] + 
P[0][3]*SF[6] + 
P[1][3]*SF[10] + 
P[3][3]*SF[8] + 
P[12][3]*SF[14] - 
P[10][3]*SPP[10] - (
P[11][3]*
q0)/2 + SF[7]*(
P[2][0] + 
P[0][0]*SF[6] + 
P[1][0]*SF[10] + 
P[3][0]*SF[8] + 
P[12][0]*SF[14] - 
P[10][0]*SPP[10] - (
P[11][0]*q0)/2) + SF[6]*(
P[2][1] + 
P[0][1]*SF[6] + 
P[1][1]*SF[10] + 
P[3][1]*SF[8] + 
P[12][1]*SF[14] - 
P[10][1]*SPP[10] - (
P[11][1]*q0)/2) + SF[9]*(
P[2][2] + 
P[0][2]*SF[6] + 
P[1][2]*SF[10] + 
P[3][2]*SF[8] + 
P[12][2]*SF[14] - 
P[10][2]*SPP[10] - (
P[11][2]*q0)/2) + SF[15]*(
P[2][10] + 
P[0][10]*SF[6] + 
P[1][10]*SF[10] + 
P[3][10]*SF[8] + 
P[12][10]*SF[14] - 
P[10][10]*SPP[10] - (
P[11][10]*q0)/2) - SF[14]*(
P[2][11] + 
P[0][11]*SF[6] + 
P[1][11]*SF[10] + 
P[3][11]*SF[8] + 
P[12][11]*SF[14] - 
P[10][11]*SPP[10] - (
P[11][11]*q0)/2) - (q0*(
P[2][12] + 
P[0][12]*SF[6] + 
P[1][12]*SF[10] + 
P[3][12]*SF[8] + 
P[12][12]*SF[14] - 
P[10][12]*SPP[10] - (
P[11][12]*q0)/2))/2;
   999     nextP[3][3] = 
P[3][3] + 
P[0][3]*SF[7] + 
P[1][3]*SF[6] + 
P[2][3]*SF[9] + 
P[10][3]*SF[15] - 
P[11][3]*SF[14] + (dayVar*SQ[10])/4 + dazVar*SQ[9] - (
P[12][3]*q0)/2 + SF[7]*(
P[3][0] + 
P[0][0]*SF[7] + 
P[1][0]*SF[6] + 
P[2][0]*SF[9] + 
P[10][0]*SF[15] - 
P[11][0]*SF[14] - (
P[12][0]*
q0)/2) + SF[6]*(
P[3][1] + 
P[0][1]*SF[7] + 
P[1][1]*SF[6] + 
P[2][1]*SF[9] + 
P[10][1]*SF[15] - 
P[11][1]*SF[14] - (
P[12][1]*
q0)/2) + SF[9]*(
P[3][2] + 
P[0][2]*SF[7] + 
P[1][2]*SF[6] + 
P[2][2]*SF[9] + 
P[10][2]*SF[15] - 
P[11][2]*SF[14] - (
P[12][2]*
q0)/2) + SF[15]*(
P[3][10] + 
P[0][10]*SF[7] + 
P[1][10]*SF[6] + 
P[2][10]*SF[9] + 
P[10][10]*SF[15] - 
P[11][10]*SF[14] - (
P[12][10]*
q0)/2) - SF[14]*(
P[3][11] + 
P[0][11]*SF[7] + 
P[1][11]*SF[6] + 
P[2][11]*SF[9] + 
P[10][11]*SF[15] - 
P[11][11]*SF[14] - (
P[12][11]*
q0)/2) + (daxVar*
sq(q2))/4 - (q0*(
P[3][12] + 
P[0][12]*SF[7] + 
P[1][12]*SF[6] + 
P[2][12]*SF[9] + 
P[10][12]*SF[15] - 
P[11][12]*SF[14] - (
P[12][12]*q0)/2))/2;
  1000     nextP[0][4] = 
P[0][4] + 
P[1][4]*SF[9] + 
P[2][4]*SF[11] + 
P[3][4]*SF[10] + 
P[10][4]*SF[14] + 
P[11][4]*SF[15] + 
P[12][4]*SPP[10] + SF[5]*(
P[0][0] + 
P[1][0]*SF[9] + 
P[2][0]*SF[11] + 
P[3][0]*SF[10] + 
P[10][0]*SF[14] + 
P[11][0]*SF[15] + 
P[12][0]*SPP[10]) + SF[3]*(
P[0][1] + 
P[1][1]*SF[9] + 
P[2][1]*SF[11] + 
P[3][1]*SF[10] + 
P[10][1]*SF[14] + 
P[11][1]*SF[15] + 
P[12][1]*SPP[10]) - SF[4]*(
P[0][3] + 
P[1][3]*SF[9] + 
P[2][3]*SF[11] + 
P[3][3]*SF[10] + 
P[10][3]*SF[14] + 
P[11][3]*SF[15] + 
P[12][3]*SPP[10]) + SPP[0]*(
P[0][2] + 
P[1][2]*SF[9] + 
P[2][2]*SF[11] + 
P[3][2]*SF[10] + 
P[10][2]*SF[14] + 
P[11][2]*SF[15] + 
P[12][2]*SPP[10]) + SPP[3]*(
P[0][13] + 
P[1][13]*SF[9] + 
P[2][13]*SF[11] + 
P[3][13]*SF[10] + 
P[10][13]*SF[14] + 
P[11][13]*SF[15] + 
P[12][13]*SPP[10]) + SPP[6]*(
P[0][14] + 
P[1][14]*SF[9] + 
P[2][14]*SF[11] + 
P[3][14]*SF[10] + 
P[10][14]*SF[14] + 
P[11][14]*SF[15] + 
P[12][14]*SPP[10]) - SPP[9]*(
P[0][15] + 
P[1][15]*SF[9] + 
P[2][15]*SF[11] + 
P[3][15]*SF[10] + 
P[10][15]*SF[14] + 
P[11][15]*SF[15] + 
P[12][15]*SPP[10]);
  1001     nextP[1][4] = 
P[1][4] + 
P[0][4]*SF[8] + 
P[2][4]*SF[7] + 
P[3][4]*SF[11] - 
P[12][4]*SF[15] + 
P[11][4]*SPP[10] - (
P[10][4]*
q0)/2 + SF[5]*(
P[1][0] + 
P[0][0]*SF[8] + 
P[2][0]*SF[7] + 
P[3][0]*SF[11] - 
P[12][0]*SF[15] + 
P[11][0]*SPP[10] - (
P[10][0]*q0)/2) + SF[3]*(
P[1][1] + 
P[0][1]*SF[8] + 
P[2][1]*SF[7] + 
P[3][1]*SF[11] - 
P[12][1]*SF[15] + 
P[11][1]*SPP[10] - (
P[10][1]*q0)/2) - SF[4]*(
P[1][3] + 
P[0][3]*SF[8] + 
P[2][3]*SF[7] + 
P[3][3]*SF[11] - 
P[12][3]*SF[15] + 
P[11][3]*SPP[10] - (
P[10][3]*q0)/2) + SPP[0]*(
P[1][2] + 
P[0][2]*SF[8] + 
P[2][2]*SF[7] + 
P[3][2]*SF[11] - 
P[12][2]*SF[15] + 
P[11][2]*SPP[10] - (
P[10][2]*q0)/2) + SPP[3]*(
P[1][13] + 
P[0][13]*SF[8] + 
P[2][13]*SF[7] + 
P[3][13]*SF[11] - 
P[12][13]*SF[15] + 
P[11][13]*SPP[10] - (
P[10][13]*q0)/2) + SPP[6]*(
P[1][14] + 
P[0][14]*SF[8] + 
P[2][14]*SF[7] + 
P[3][14]*SF[11] - 
P[12][14]*SF[15] + 
P[11][14]*SPP[10] - (
P[10][14]*q0)/2) - SPP[9]*(
P[1][15] + 
P[0][15]*SF[8] + 
P[2][15]*SF[7] + 
P[3][15]*SF[11] - 
P[12][15]*SF[15] + 
P[11][15]*SPP[10] - (
P[10][15]*q0)/2);
  1002     nextP[2][4] = 
P[2][4] + 
P[0][4]*SF[6] + 
P[1][4]*SF[10] + 
P[3][4]*SF[8] + 
P[12][4]*SF[14] - 
P[10][4]*SPP[10] - (
P[11][4]*
q0)/2 + SF[5]*(
P[2][0] + 
P[0][0]*SF[6] + 
P[1][0]*SF[10] + 
P[3][0]*SF[8] + 
P[12][0]*SF[14] - 
P[10][0]*SPP[10] - (
P[11][0]*q0)/2) + SF[3]*(
P[2][1] + 
P[0][1]*SF[6] + 
P[1][1]*SF[10] + 
P[3][1]*SF[8] + 
P[12][1]*SF[14] - 
P[10][1]*SPP[10] - (
P[11][1]*q0)/2) - SF[4]*(
P[2][3] + 
P[0][3]*SF[6] + 
P[1][3]*SF[10] + 
P[3][3]*SF[8] + 
P[12][3]*SF[14] - 
P[10][3]*SPP[10] - (
P[11][3]*q0)/2) + SPP[0]*(
P[2][2] + 
P[0][2]*SF[6] + 
P[1][2]*SF[10] + 
P[3][2]*SF[8] + 
P[12][2]*SF[14] - 
P[10][2]*SPP[10] - (
P[11][2]*q0)/2) + SPP[3]*(
P[2][13] + 
P[0][13]*SF[6] + 
P[1][13]*SF[10] + 
P[3][13]*SF[8] + 
P[12][13]*SF[14] - 
P[10][13]*SPP[10] - (
P[11][13]*q0)/2) + SPP[6]*(
P[2][14] + 
P[0][14]*SF[6] + 
P[1][14]*SF[10] + 
P[3][14]*SF[8] + 
P[12][14]*SF[14] - 
P[10][14]*SPP[10] - (
P[11][14]*q0)/2) - SPP[9]*(
P[2][15] + 
P[0][15]*SF[6] + 
P[1][15]*SF[10] + 
P[3][15]*SF[8] + 
P[12][15]*SF[14] - 
P[10][15]*SPP[10] - (
P[11][15]*q0)/2);
  1003     nextP[3][4] = 
P[3][4] + 
P[0][4]*SF[7] + 
P[1][4]*SF[6] + 
P[2][4]*SF[9] + 
P[10][4]*SF[15] - 
P[11][4]*SF[14] - (
P[12][4]*
q0)/2 + SF[5]*(
P[3][0] + 
P[0][0]*SF[7] + 
P[1][0]*SF[6] + 
P[2][0]*SF[9] + 
P[10][0]*SF[15] - 
P[11][0]*SF[14] - (
P[12][0]*q0)/2) + SF[3]*(
P[3][1] + 
P[0][1]*SF[7] + 
P[1][1]*SF[6] + 
P[2][1]*SF[9] + 
P[10][1]*SF[15] - 
P[11][1]*SF[14] - (
P[12][1]*q0)/2) - SF[4]*(
P[3][3] + 
P[0][3]*SF[7] + 
P[1][3]*SF[6] + 
P[2][3]*SF[9] + 
P[10][3]*SF[15] - 
P[11][3]*SF[14] - (
P[12][3]*q0)/2) + SPP[0]*(
P[3][2] + 
P[0][2]*SF[7] + 
P[1][2]*SF[6] + 
P[2][2]*SF[9] + 
P[10][2]*SF[15] - 
P[11][2]*SF[14] - (
P[12][2]*q0)/2) + SPP[3]*(
P[3][13] + 
P[0][13]*SF[7] + 
P[1][13]*SF[6] + 
P[2][13]*SF[9] + 
P[10][13]*SF[15] - 
P[11][13]*SF[14] - (
P[12][13]*q0)/2) + SPP[6]*(
P[3][14] + 
P[0][14]*SF[7] + 
P[1][14]*SF[6] + 
P[2][14]*SF[9] + 
P[10][14]*SF[15] - 
P[11][14]*SF[14] - (
P[12][14]*q0)/2) - SPP[9]*(
P[3][15] + 
P[0][15]*SF[7] + 
P[1][15]*SF[6] + 
P[2][15]*SF[9] + 
P[10][15]*SF[15] - 
P[11][15]*SF[14] - (
P[12][15]*q0)/2);
  1004     nextP[4][4] = 
P[4][4] + 
P[0][4]*SF[5] + 
P[1][4]*SF[3] - 
P[3][4]*SF[4] + 
P[2][4]*SPP[0] + 
P[13][4]*SPP[3] + 
P[14][4]*SPP[6] - 
P[15][4]*SPP[9] + dvyVar*
sq(SG[7] - 2*q0*q3) + dvzVar*
sq(SG[6] + 2*q0*q2) + SF[5]*(
P[4][0] + 
P[0][0]*SF[5] + 
P[1][0]*SF[3] - 
P[3][0]*SF[4] + 
P[2][0]*SPP[0] + 
P[13][0]*SPP[3] + 
P[14][0]*SPP[6] - 
P[15][0]*SPP[9]) + SF[3]*(
P[4][1] + 
P[0][1]*SF[5] + 
P[1][1]*SF[3] - 
P[3][1]*SF[4] + 
P[2][1]*SPP[0] + 
P[13][1]*SPP[3] + 
P[14][1]*SPP[6] - 
P[15][1]*SPP[9]) - SF[4]*(
P[4][3] + 
P[0][3]*SF[5] + 
P[1][3]*SF[3] - 
P[3][3]*SF[4] + 
P[2][3]*SPP[0] + 
P[13][3]*SPP[3] + 
P[14][3]*SPP[6] - 
P[15][3]*SPP[9]) + SPP[0]*(
P[4][2] + 
P[0][2]*SF[5] + 
P[1][2]*SF[3] - 
P[3][2]*SF[4] + 
P[2][2]*SPP[0] + 
P[13][2]*SPP[3] + 
P[14][2]*SPP[6] - 
P[15][2]*SPP[9]) + SPP[3]*(
P[4][13] + 
P[0][13]*SF[5] + 
P[1][13]*SF[3] - 
P[3][13]*SF[4] + 
P[2][13]*SPP[0] + 
P[13][13]*SPP[3] + 
P[14][13]*SPP[6] - 
P[15][13]*SPP[9]) + SPP[6]*(
P[4][14] + 
P[0][14]*SF[5] + 
P[1][14]*SF[3] - 
P[3][14]*SF[4] + 
P[2][14]*SPP[0] + 
P[13][14]*SPP[3] + 
P[14][14]*SPP[6] - 
P[15][14]*SPP[9]) - SPP[9]*(
P[4][15] + 
P[0][15]*SF[5] + 
P[1][15]*SF[3] - 
P[3][15]*SF[4] + 
P[2][15]*SPP[0] + 
P[13][15]*SPP[3] + 
P[14][15]*SPP[6] - 
P[15][15]*SPP[9]) + dvxVar*
sq(SG[1] + SG[2] - SG[3] - SG[4]);
  1005     nextP[0][5] = 
P[0][5] + 
P[1][5]*SF[9] + 
P[2][5]*SF[11] + 
P[3][5]*SF[10] + 
P[10][5]*SF[14] + 
P[11][5]*SF[15] + 
P[12][5]*SPP[10] + SF[4]*(
P[0][0] + 
P[1][0]*SF[9] + 
P[2][0]*SF[11] + 
P[3][0]*SF[10] + 
P[10][0]*SF[14] + 
P[11][0]*SF[15] + 
P[12][0]*SPP[10]) + SF[3]*(
P[0][2] + 
P[1][2]*SF[9] + 
P[2][2]*SF[11] + 
P[3][2]*SF[10] + 
P[10][2]*SF[14] + 
P[11][2]*SF[15] + 
P[12][2]*SPP[10]) + SF[5]*(
P[0][3] + 
P[1][3]*SF[9] + 
P[2][3]*SF[11] + 
P[3][3]*SF[10] + 
P[10][3]*SF[14] + 
P[11][3]*SF[15] + 
P[12][3]*SPP[10]) - SPP[0]*(
P[0][1] + 
P[1][1]*SF[9] + 
P[2][1]*SF[11] + 
P[3][1]*SF[10] + 
P[10][1]*SF[14] + 
P[11][1]*SF[15] + 
P[12][1]*SPP[10]) - SPP[8]*(
P[0][13] + 
P[1][13]*SF[9] + 
P[2][13]*SF[11] + 
P[3][13]*SF[10] + 
P[10][13]*SF[14] + 
P[11][13]*SF[15] + 
P[12][13]*SPP[10]) + SPP[2]*(
P[0][14] + 
P[1][14]*SF[9] + 
P[2][14]*SF[11] + 
P[3][14]*SF[10] + 
P[10][14]*SF[14] + 
P[11][14]*SF[15] + 
P[12][14]*SPP[10]) + SPP[5]*(
P[0][15] + 
P[1][15]*SF[9] + 
P[2][15]*SF[11] + 
P[3][15]*SF[10] + 
P[10][15]*SF[14] + 
P[11][15]*SF[15] + 
P[12][15]*SPP[10]);
  1006     nextP[1][5] = 
P[1][5] + 
P[0][5]*SF[8] + 
P[2][5]*SF[7] + 
P[3][5]*SF[11] - 
P[12][5]*SF[15] + 
P[11][5]*SPP[10] - (
P[10][5]*
q0)/2 + SF[4]*(
P[1][0] + 
P[0][0]*SF[8] + 
P[2][0]*SF[7] + 
P[3][0]*SF[11] - 
P[12][0]*SF[15] + 
P[11][0]*SPP[10] - (
P[10][0]*q0)/2) + SF[3]*(
P[1][2] + 
P[0][2]*SF[8] + 
P[2][2]*SF[7] + 
P[3][2]*SF[11] - 
P[12][2]*SF[15] + 
P[11][2]*SPP[10] - (
P[10][2]*q0)/2) + SF[5]*(
P[1][3] + 
P[0][3]*SF[8] + 
P[2][3]*SF[7] + 
P[3][3]*SF[11] - 
P[12][3]*SF[15] + 
P[11][3]*SPP[10] - (
P[10][3]*q0)/2) - SPP[0]*(
P[1][1] + 
P[0][1]*SF[8] + 
P[2][1]*SF[7] + 
P[3][1]*SF[11] - 
P[12][1]*SF[15] + 
P[11][1]*SPP[10] - (
P[10][1]*q0)/2) - SPP[8]*(
P[1][13] + 
P[0][13]*SF[8] + 
P[2][13]*SF[7] + 
P[3][13]*SF[11] - 
P[12][13]*SF[15] + 
P[11][13]*SPP[10] - (
P[10][13]*q0)/2) + SPP[2]*(
P[1][14] + 
P[0][14]*SF[8] + 
P[2][14]*SF[7] + 
P[3][14]*SF[11] - 
P[12][14]*SF[15] + 
P[11][14]*SPP[10] - (
P[10][14]*q0)/2) + SPP[5]*(
P[1][15] + 
P[0][15]*SF[8] + 
P[2][15]*SF[7] + 
P[3][15]*SF[11] - 
P[12][15]*SF[15] + 
P[11][15]*SPP[10] - (
P[10][15]*q0)/2);
  1007     nextP[2][5] = 
P[2][5] + 
P[0][5]*SF[6] + 
P[1][5]*SF[10] + 
P[3][5]*SF[8] + 
P[12][5]*SF[14] - 
P[10][5]*SPP[10] - (
P[11][5]*
q0)/2 + SF[4]*(
P[2][0] + 
P[0][0]*SF[6] + 
P[1][0]*SF[10] + 
P[3][0]*SF[8] + 
P[12][0]*SF[14] - 
P[10][0]*SPP[10] - (
P[11][0]*q0)/2) + SF[3]*(
P[2][2] + 
P[0][2]*SF[6] + 
P[1][2]*SF[10] + 
P[3][2]*SF[8] + 
P[12][2]*SF[14] - 
P[10][2]*SPP[10] - (
P[11][2]*q0)/2) + SF[5]*(
P[2][3] + 
P[0][3]*SF[6] + 
P[1][3]*SF[10] + 
P[3][3]*SF[8] + 
P[12][3]*SF[14] - 
P[10][3]*SPP[10] - (
P[11][3]*q0)/2) - SPP[0]*(
P[2][1] + 
P[0][1]*SF[6] + 
P[1][1]*SF[10] + 
P[3][1]*SF[8] + 
P[12][1]*SF[14] - 
P[10][1]*SPP[10] - (
P[11][1]*q0)/2) - SPP[8]*(
P[2][13] + 
P[0][13]*SF[6] + 
P[1][13]*SF[10] + 
P[3][13]*SF[8] + 
P[12][13]*SF[14] - 
P[10][13]*SPP[10] - (
P[11][13]*q0)/2) + SPP[2]*(
P[2][14] + 
P[0][14]*SF[6] + 
P[1][14]*SF[10] + 
P[3][14]*SF[8] + 
P[12][14]*SF[14] - 
P[10][14]*SPP[10] - (
P[11][14]*q0)/2) + SPP[5]*(
P[2][15] + 
P[0][15]*SF[6] + 
P[1][15]*SF[10] + 
P[3][15]*SF[8] + 
P[12][15]*SF[14] - 
P[10][15]*SPP[10] - (
P[11][15]*q0)/2);
  1008     nextP[3][5] = 
P[3][5] + 
P[0][5]*SF[7] + 
P[1][5]*SF[6] + 
P[2][5]*SF[9] + 
P[10][5]*SF[15] - 
P[11][5]*SF[14] - (
P[12][5]*
q0)/2 + SF[4]*(
P[3][0] + 
P[0][0]*SF[7] + 
P[1][0]*SF[6] + 
P[2][0]*SF[9] + 
P[10][0]*SF[15] - 
P[11][0]*SF[14] - (
P[12][0]*q0)/2) + SF[3]*(
P[3][2] + 
P[0][2]*SF[7] + 
P[1][2]*SF[6] + 
P[2][2]*SF[9] + 
P[10][2]*SF[15] - 
P[11][2]*SF[14] - (
P[12][2]*q0)/2) + SF[5]*(
P[3][3] + 
P[0][3]*SF[7] + 
P[1][3]*SF[6] + 
P[2][3]*SF[9] + 
P[10][3]*SF[15] - 
P[11][3]*SF[14] - (
P[12][3]*q0)/2) - SPP[0]*(
P[3][1] + 
P[0][1]*SF[7] + 
P[1][1]*SF[6] + 
P[2][1]*SF[9] + 
P[10][1]*SF[15] - 
P[11][1]*SF[14] - (
P[12][1]*q0)/2) - SPP[8]*(
P[3][13] + 
P[0][13]*SF[7] + 
P[1][13]*SF[6] + 
P[2][13]*SF[9] + 
P[10][13]*SF[15] - 
P[11][13]*SF[14] - (
P[12][13]*q0)/2) + SPP[2]*(
P[3][14] + 
P[0][14]*SF[7] + 
P[1][14]*SF[6] + 
P[2][14]*SF[9] + 
P[10][14]*SF[15] - 
P[11][14]*SF[14] - (
P[12][14]*q0)/2) + SPP[5]*(
P[3][15] + 
P[0][15]*SF[7] + 
P[1][15]*SF[6] + 
P[2][15]*SF[9] + 
P[10][15]*SF[15] - 
P[11][15]*SF[14] - (
P[12][15]*q0)/2);
  1009     nextP[4][5] = 
P[4][5] + SQ[2] + 
P[0][5]*SF[5] + 
P[1][5]*SF[3] - 
P[3][5]*SF[4] + 
P[2][5]*SPP[0] + 
P[13][5]*SPP[3] + 
P[14][5]*SPP[6] - 
P[15][5]*SPP[9] + SF[4]*(
P[4][0] + 
P[0][0]*SF[5] + 
P[1][0]*SF[3] - 
P[3][0]*SF[4] + 
P[2][0]*SPP[0] + 
P[13][0]*SPP[3] + 
P[14][0]*SPP[6] - 
P[15][0]*SPP[9]) + SF[3]*(
P[4][2] + 
P[0][2]*SF[5] + 
P[1][2]*SF[3] - 
P[3][2]*SF[4] + 
P[2][2]*SPP[0] + 
P[13][2]*SPP[3] + 
P[14][2]*SPP[6] - 
P[15][2]*SPP[9]) + SF[5]*(
P[4][3] + 
P[0][3]*SF[5] + 
P[1][3]*SF[3] - 
P[3][3]*SF[4] + 
P[2][3]*SPP[0] + 
P[13][3]*SPP[3] + 
P[14][3]*SPP[6] - 
P[15][3]*SPP[9]) - SPP[0]*(
P[4][1] + 
P[0][1]*SF[5] + 
P[1][1]*SF[3] - 
P[3][1]*SF[4] + 
P[2][1]*SPP[0] + 
P[13][1]*SPP[3] + 
P[14][1]*SPP[6] - 
P[15][1]*SPP[9]) - SPP[8]*(
P[4][13] + 
P[0][13]*SF[5] + 
P[1][13]*SF[3] - 
P[3][13]*SF[4] + 
P[2][13]*SPP[0] + 
P[13][13]*SPP[3] + 
P[14][13]*SPP[6] - 
P[15][13]*SPP[9]) + SPP[2]*(
P[4][14] + 
P[0][14]*SF[5] + 
P[1][14]*SF[3] - 
P[3][14]*SF[4] + 
P[2][14]*SPP[0] + 
P[13][14]*SPP[3] + 
P[14][14]*SPP[6] - 
P[15][14]*SPP[9]) + SPP[5]*(
P[4][15] + 
P[0][15]*SF[5] + 
P[1][15]*SF[3] - 
P[3][15]*SF[4] + 
P[2][15]*SPP[0] + 
P[13][15]*SPP[3] + 
P[14][15]*SPP[6] - 
P[15][15]*SPP[9]);
  1010     nextP[5][5] = 
P[5][5] + 
P[0][5]*SF[4] + 
P[2][5]*SF[3] + 
P[3][5]*SF[5] - 
P[1][5]*SPP[0] - 
P[13][5]*SPP[8] + 
P[14][5]*SPP[2] + 
P[15][5]*SPP[5] + dvxVar*
sq(SG[7] + 2*q0*q3) + dvzVar*
sq(SG[5] - 2*q0*
q1) + SF[4]*(
P[5][0] + 
P[0][0]*SF[4] + 
P[2][0]*SF[3] + 
P[3][0]*SF[5] - 
P[1][0]*SPP[0] - 
P[13][0]*SPP[8] + 
P[14][0]*SPP[2] + 
P[15][0]*SPP[5]) + SF[3]*(
P[5][2] + 
P[0][2]*SF[4] + 
P[2][2]*SF[3] + 
P[3][2]*SF[5] - 
P[1][2]*SPP[0] - 
P[13][2]*SPP[8] + 
P[14][2]*SPP[2] + 
P[15][2]*SPP[5]) + SF[5]*(
P[5][3] + 
P[0][3]*SF[4] + 
P[2][3]*SF[3] + 
P[3][3]*SF[5] - 
P[1][3]*SPP[0] - 
P[13][3]*SPP[8] + 
P[14][3]*SPP[2] + 
P[15][3]*SPP[5]) - SPP[0]*(
P[5][1] + 
P[0][1]*SF[4] + 
P[2][1]*SF[3] + 
P[3][1]*SF[5] - 
P[1][1]*SPP[0] - 
P[13][1]*SPP[8] + 
P[14][1]*SPP[2] + 
P[15][1]*SPP[5]) - SPP[8]*(
P[5][13] + 
P[0][13]*SF[4] + 
P[2][13]*SF[3] + 
P[3][13]*SF[5] - 
P[1][13]*SPP[0] - 
P[13][13]*SPP[8] + 
P[14][13]*SPP[2] + 
P[15][13]*SPP[5]) + SPP[2]*(
P[5][14] + 
P[0][14]*SF[4] + 
P[2][14]*SF[3] + 
P[3][14]*SF[5] - 
P[1][14]*SPP[0] - 
P[13][14]*SPP[8] + 
P[14][14]*SPP[2] + 
P[15][14]*SPP[5]) + SPP[5]*(
P[5][15] + 
P[0][15]*SF[4] + 
P[2][15]*SF[3] + 
P[3][15]*SF[5] - 
P[1][15]*SPP[0] - 
P[13][15]*SPP[8] + 
P[14][15]*SPP[2] + 
P[15][15]*SPP[5]) + dvyVar*
sq(SG[1] - SG[2] + SG[3] - SG[4]);
  1011     nextP[0][6] = 
P[0][6] + 
P[1][6]*SF[9] + 
P[2][6]*SF[11] + 
P[3][6]*SF[10] + 
P[10][6]*SF[14] + 
P[11][6]*SF[15] + 
P[12][6]*SPP[10] + SF[4]*(
P[0][1] + 
P[1][1]*SF[9] + 
P[2][1]*SF[11] + 
P[3][1]*SF[10] + 
P[10][1]*SF[14] + 
P[11][1]*SF[15] + 
P[12][1]*SPP[10]) - SF[5]*(
P[0][2] + 
P[1][2]*SF[9] + 
P[2][2]*SF[11] + 
P[3][2]*SF[10] + 
P[10][2]*SF[14] + 
P[11][2]*SF[15] + 
P[12][2]*SPP[10]) + SF[3]*(
P[0][3] + 
P[1][3]*SF[9] + 
P[2][3]*SF[11] + 
P[3][3]*SF[10] + 
P[10][3]*SF[14] + 
P[11][3]*SF[15] + 
P[12][3]*SPP[10]) + SPP[0]*(
P[0][0] + 
P[1][0]*SF[9] + 
P[2][0]*SF[11] + 
P[3][0]*SF[10] + 
P[10][0]*SF[14] + 
P[11][0]*SF[15] + 
P[12][0]*SPP[10]) + SPP[4]*(
P[0][13] + 
P[1][13]*SF[9] + 
P[2][13]*SF[11] + 
P[3][13]*SF[10] + 
P[10][13]*SF[14] + 
P[11][13]*SF[15] + 
P[12][13]*SPP[10]) - SPP[7]*(
P[0][14] + 
P[1][14]*SF[9] + 
P[2][14]*SF[11] + 
P[3][14]*SF[10] + 
P[10][14]*SF[14] + 
P[11][14]*SF[15] + 
P[12][14]*SPP[10]) - SPP[1]*(
P[0][15] + 
P[1][15]*SF[9] + 
P[2][15]*SF[11] + 
P[3][15]*SF[10] + 
P[10][15]*SF[14] + 
P[11][15]*SF[15] + 
P[12][15]*SPP[10]);
  1012     nextP[1][6] = 
P[1][6] + 
P[0][6]*SF[8] + 
P[2][6]*SF[7] + 
P[3][6]*SF[11] - 
P[12][6]*SF[15] + 
P[11][6]*SPP[10] - (
P[10][6]*
q0)/2 + SF[4]*(
P[1][1] + 
P[0][1]*SF[8] + 
P[2][1]*SF[7] + 
P[3][1]*SF[11] - 
P[12][1]*SF[15] + 
P[11][1]*SPP[10] - (
P[10][1]*q0)/2) - SF[5]*(
P[1][2] + 
P[0][2]*SF[8] + 
P[2][2]*SF[7] + 
P[3][2]*SF[11] - 
P[12][2]*SF[15] + 
P[11][2]*SPP[10] - (
P[10][2]*q0)/2) + SF[3]*(
P[1][3] + 
P[0][3]*SF[8] + 
P[2][3]*SF[7] + 
P[3][3]*SF[11] - 
P[12][3]*SF[15] + 
P[11][3]*SPP[10] - (
P[10][3]*q0)/2) + SPP[0]*(
P[1][0] + 
P[0][0]*SF[8] + 
P[2][0]*SF[7] + 
P[3][0]*SF[11] - 
P[12][0]*SF[15] + 
P[11][0]*SPP[10] - (
P[10][0]*q0)/2) + SPP[4]*(
P[1][13] + 
P[0][13]*SF[8] + 
P[2][13]*SF[7] + 
P[3][13]*SF[11] - 
P[12][13]*SF[15] + 
P[11][13]*SPP[10] - (
P[10][13]*q0)/2) - SPP[7]*(
P[1][14] + 
P[0][14]*SF[8] + 
P[2][14]*SF[7] + 
P[3][14]*SF[11] - 
P[12][14]*SF[15] + 
P[11][14]*SPP[10] - (
P[10][14]*q0)/2) - SPP[1]*(
P[1][15] + 
P[0][15]*SF[8] + 
P[2][15]*SF[7] + 
P[3][15]*SF[11] - 
P[12][15]*SF[15] + 
P[11][15]*SPP[10] - (
P[10][15]*q0)/2);
  1013     nextP[2][6] = 
P[2][6] + 
P[0][6]*SF[6] + 
P[1][6]*SF[10] + 
P[3][6]*SF[8] + 
P[12][6]*SF[14] - 
P[10][6]*SPP[10] - (
P[11][6]*
q0)/2 + SF[4]*(
P[2][1] + 
P[0][1]*SF[6] + 
P[1][1]*SF[10] + 
P[3][1]*SF[8] + 
P[12][1]*SF[14] - 
P[10][1]*SPP[10] - (
P[11][1]*q0)/2) - SF[5]*(
P[2][2] + 
P[0][2]*SF[6] + 
P[1][2]*SF[10] + 
P[3][2]*SF[8] + 
P[12][2]*SF[14] - 
P[10][2]*SPP[10] - (
P[11][2]*q0)/2) + SF[3]*(
P[2][3] + 
P[0][3]*SF[6] + 
P[1][3]*SF[10] + 
P[3][3]*SF[8] + 
P[12][3]*SF[14] - 
P[10][3]*SPP[10] - (
P[11][3]*q0)/2) + SPP[0]*(
P[2][0] + 
P[0][0]*SF[6] + 
P[1][0]*SF[10] + 
P[3][0]*SF[8] + 
P[12][0]*SF[14] - 
P[10][0]*SPP[10] - (
P[11][0]*q0)/2) + SPP[4]*(
P[2][13] + 
P[0][13]*SF[6] + 
P[1][13]*SF[10] + 
P[3][13]*SF[8] + 
P[12][13]*SF[14] - 
P[10][13]*SPP[10] - (
P[11][13]*q0)/2) - SPP[7]*(
P[2][14] + 
P[0][14]*SF[6] + 
P[1][14]*SF[10] + 
P[3][14]*SF[8] + 
P[12][14]*SF[14] - 
P[10][14]*SPP[10] - (
P[11][14]*q0)/2) - SPP[1]*(
P[2][15] + 
P[0][15]*SF[6] + 
P[1][15]*SF[10] + 
P[3][15]*SF[8] + 
P[12][15]*SF[14] - 
P[10][15]*SPP[10] - (
P[11][15]*q0)/2);
  1014     nextP[3][6] = 
P[3][6] + 
P[0][6]*SF[7] + 
P[1][6]*SF[6] + 
P[2][6]*SF[9] + 
P[10][6]*SF[15] - 
P[11][6]*SF[14] - (
P[12][6]*
q0)/2 + SF[4]*(
P[3][1] + 
P[0][1]*SF[7] + 
P[1][1]*SF[6] + 
P[2][1]*SF[9] + 
P[10][1]*SF[15] - 
P[11][1]*SF[14] - (
P[12][1]*q0)/2) - SF[5]*(
P[3][2] + 
P[0][2]*SF[7] + 
P[1][2]*SF[6] + 
P[2][2]*SF[9] + 
P[10][2]*SF[15] - 
P[11][2]*SF[14] - (
P[12][2]*q0)/2) + SF[3]*(
P[3][3] + 
P[0][3]*SF[7] + 
P[1][3]*SF[6] + 
P[2][3]*SF[9] + 
P[10][3]*SF[15] - 
P[11][3]*SF[14] - (
P[12][3]*q0)/2) + SPP[0]*(
P[3][0] + 
P[0][0]*SF[7] + 
P[1][0]*SF[6] + 
P[2][0]*SF[9] + 
P[10][0]*SF[15] - 
P[11][0]*SF[14] - (
P[12][0]*q0)/2) + SPP[4]*(
P[3][13] + 
P[0][13]*SF[7] + 
P[1][13]*SF[6] + 
P[2][13]*SF[9] + 
P[10][13]*SF[15] - 
P[11][13]*SF[14] - (
P[12][13]*q0)/2) - SPP[7]*(
P[3][14] + 
P[0][14]*SF[7] + 
P[1][14]*SF[6] + 
P[2][14]*SF[9] + 
P[10][14]*SF[15] - 
P[11][14]*SF[14] - (
P[12][14]*q0)/2) - SPP[1]*(
P[3][15] + 
P[0][15]*SF[7] + 
P[1][15]*SF[6] + 
P[2][15]*SF[9] + 
P[10][15]*SF[15] - 
P[11][15]*SF[14] - (
P[12][15]*q0)/2);
  1015     nextP[4][6] = 
P[4][6] + SQ[1] + 
P[0][6]*SF[5] + 
P[1][6]*SF[3] - 
P[3][6]*SF[4] + 
P[2][6]*SPP[0] + 
P[13][6]*SPP[3] + 
P[14][6]*SPP[6] - 
P[15][6]*SPP[9] + SF[4]*(
P[4][1] + 
P[0][1]*SF[5] + 
P[1][1]*SF[3] - 
P[3][1]*SF[4] + 
P[2][1]*SPP[0] + 
P[13][1]*SPP[3] + 
P[14][1]*SPP[6] - 
P[15][1]*SPP[9]) - SF[5]*(
P[4][2] + 
P[0][2]*SF[5] + 
P[1][2]*SF[3] - 
P[3][2]*SF[4] + 
P[2][2]*SPP[0] + 
P[13][2]*SPP[3] + 
P[14][2]*SPP[6] - 
P[15][2]*SPP[9]) + SF[3]*(
P[4][3] + 
P[0][3]*SF[5] + 
P[1][3]*SF[3] - 
P[3][3]*SF[4] + 
P[2][3]*SPP[0] + 
P[13][3]*SPP[3] + 
P[14][3]*SPP[6] - 
P[15][3]*SPP[9]) + SPP[0]*(
P[4][0] + 
P[0][0]*SF[5] + 
P[1][0]*SF[3] - 
P[3][0]*SF[4] + 
P[2][0]*SPP[0] + 
P[13][0]*SPP[3] + 
P[14][0]*SPP[6] - 
P[15][0]*SPP[9]) + SPP[4]*(
P[4][13] + 
P[0][13]*SF[5] + 
P[1][13]*SF[3] - 
P[3][13]*SF[4] + 
P[2][13]*SPP[0] + 
P[13][13]*SPP[3] + 
P[14][13]*SPP[6] - 
P[15][13]*SPP[9]) - SPP[7]*(
P[4][14] + 
P[0][14]*SF[5] + 
P[1][14]*SF[3] - 
P[3][14]*SF[4] + 
P[2][14]*SPP[0] + 
P[13][14]*SPP[3] + 
P[14][14]*SPP[6] - 
P[15][14]*SPP[9]) - SPP[1]*(
P[4][15] + 
P[0][15]*SF[5] + 
P[1][15]*SF[3] - 
P[3][15]*SF[4] + 
P[2][15]*SPP[0] + 
P[13][15]*SPP[3] + 
P[14][15]*SPP[6] - 
P[15][15]*SPP[9]);
  1016     nextP[5][6] = 
P[5][6] + SQ[0] + 
P[0][6]*SF[4] + 
P[2][6]*SF[3] + 
P[3][6]*SF[5] - 
P[1][6]*SPP[0] - 
P[13][6]*SPP[8] + 
P[14][6]*SPP[2] + 
P[15][6]*SPP[5] + SF[4]*(
P[5][1] + 
P[0][1]*SF[4] + 
P[2][1]*SF[3] + 
P[3][1]*SF[5] - 
P[1][1]*SPP[0] - 
P[13][1]*SPP[8] + 
P[14][1]*SPP[2] + 
P[15][1]*SPP[5]) - SF[5]*(
P[5][2] + 
P[0][2]*SF[4] + 
P[2][2]*SF[3] + 
P[3][2]*SF[5] - 
P[1][2]*SPP[0] - 
P[13][2]*SPP[8] + 
P[14][2]*SPP[2] + 
P[15][2]*SPP[5]) + SF[3]*(
P[5][3] + 
P[0][3]*SF[4] + 
P[2][3]*SF[3] + 
P[3][3]*SF[5] - 
P[1][3]*SPP[0] - 
P[13][3]*SPP[8] + 
P[14][3]*SPP[2] + 
P[15][3]*SPP[5]) + SPP[0]*(
P[5][0] + 
P[0][0]*SF[4] + 
P[2][0]*SF[3] + 
P[3][0]*SF[5] - 
P[1][0]*SPP[0] - 
P[13][0]*SPP[8] + 
P[14][0]*SPP[2] + 
P[15][0]*SPP[5]) + SPP[4]*(
P[5][13] + 
P[0][13]*SF[4] + 
P[2][13]*SF[3] + 
P[3][13]*SF[5] - 
P[1][13]*SPP[0] - 
P[13][13]*SPP[8] + 
P[14][13]*SPP[2] + 
P[15][13]*SPP[5]) - SPP[7]*(
P[5][14] + 
P[0][14]*SF[4] + 
P[2][14]*SF[3] + 
P[3][14]*SF[5] - 
P[1][14]*SPP[0] - 
P[13][14]*SPP[8] + 
P[14][14]*SPP[2] + 
P[15][14]*SPP[5]) - SPP[1]*(
P[5][15] + 
P[0][15]*SF[4] + 
P[2][15]*SF[3] + 
P[3][15]*SF[5] - 
P[1][15]*SPP[0] - 
P[13][15]*SPP[8] + 
P[14][15]*SPP[2] + 
P[15][15]*SPP[5]);
  1017     nextP[6][6] = 
P[6][6] + 
P[1][6]*SF[4] - 
P[2][6]*SF[5] + 
P[3][6]*SF[3] + 
P[0][6]*SPP[0] + 
P[13][6]*SPP[4] - 
P[14][6]*SPP[7] - 
P[15][6]*SPP[1] + dvxVar*
sq(SG[6] - 2*q0*q2) + dvyVar*
sq(SG[5] + 2*q0*
q1) + SF[4]*(
P[6][1] + 
P[1][1]*SF[4] - 
P[2][1]*SF[5] + 
P[3][1]*SF[3] + 
P[0][1]*SPP[0] + 
P[13][1]*SPP[4] - 
P[14][1]*SPP[7] - 
P[15][1]*SPP[1]) - SF[5]*(
P[6][2] + 
P[1][2]*SF[4] - 
P[2][2]*SF[5] + 
P[3][2]*SF[3] + 
P[0][2]*SPP[0] + 
P[13][2]*SPP[4] - 
P[14][2]*SPP[7] - 
P[15][2]*SPP[1]) + SF[3]*(
P[6][3] + 
P[1][3]*SF[4] - 
P[2][3]*SF[5] + 
P[3][3]*SF[3] + 
P[0][3]*SPP[0] + 
P[13][3]*SPP[4] - 
P[14][3]*SPP[7] - 
P[15][3]*SPP[1]) + SPP[0]*(
P[6][0] + 
P[1][0]*SF[4] - 
P[2][0]*SF[5] + 
P[3][0]*SF[3] + 
P[0][0]*SPP[0] + 
P[13][0]*SPP[4] - 
P[14][0]*SPP[7] - 
P[15][0]*SPP[1]) + SPP[4]*(
P[6][13] + 
P[1][13]*SF[4] - 
P[2][13]*SF[5] + 
P[3][13]*SF[3] + 
P[0][13]*SPP[0] + 
P[13][13]*SPP[4] - 
P[14][13]*SPP[7] - 
P[15][13]*SPP[1]) - SPP[7]*(
P[6][14] + 
P[1][14]*SF[4] - 
P[2][14]*SF[5] + 
P[3][14]*SF[3] + 
P[0][14]*SPP[0] + 
P[13][14]*SPP[4] - 
P[14][14]*SPP[7] - 
P[15][14]*SPP[1]) - SPP[1]*(
P[6][15] + 
P[1][15]*SF[4] - 
P[2][15]*SF[5] + 
P[3][15]*SF[3] + 
P[0][15]*SPP[0] + 
P[13][15]*SPP[4] - 
P[14][15]*SPP[7] - 
P[15][15]*SPP[1]) + dvzVar*
sq(SG[1] - SG[2] - SG[3] + SG[4]);
  1018     nextP[0][7] = 
P[0][7] + 
P[1][7]*SF[9] + 
P[2][7]*SF[11] + 
P[3][7]*SF[10] + 
P[10][7]*SF[14] + 
P[11][7]*SF[15] + 
P[12][7]*SPP[10] + 
dt*(
P[0][4] + 
P[1][4]*SF[9] + 
P[2][4]*SF[11] + 
P[3][4]*SF[10] + 
P[10][4]*SF[14] + 
P[11][4]*SF[15] + 
P[12][4]*SPP[10]);
  1019     nextP[1][7] = 
P[1][7] + 
P[0][7]*SF[8] + 
P[2][7]*SF[7] + 
P[3][7]*SF[11] - 
P[12][7]*SF[15] + 
P[11][7]*SPP[10] - (
P[10][7]*
q0)/2 + 
dt*(
P[1][4] + 
P[0][4]*SF[8] + 
P[2][4]*SF[7] + 
P[3][4]*SF[11] - 
P[12][4]*SF[15] + 
P[11][4]*SPP[10] - (
P[10][4]*q0)/2);
  1020     nextP[2][7] = 
P[2][7] + 
P[0][7]*SF[6] + 
P[1][7]*SF[10] + 
P[3][7]*SF[8] + 
P[12][7]*SF[14] - 
P[10][7]*SPP[10] - (
P[11][7]*
q0)/2 + 
dt*(
P[2][4] + 
P[0][4]*SF[6] + 
P[1][4]*SF[10] + 
P[3][4]*SF[8] + 
P[12][4]*SF[14] - 
P[10][4]*SPP[10] - (
P[11][4]*q0)/2);
  1021     nextP[3][7] = 
P[3][7] + 
P[0][7]*SF[7] + 
P[1][7]*SF[6] + 
P[2][7]*SF[9] + 
P[10][7]*SF[15] - 
P[11][7]*SF[14] - (
P[12][7]*
q0)/2 + 
dt*(
P[3][4] + 
P[0][4]*SF[7] + 
P[1][4]*SF[6] + 
P[2][4]*SF[9] + 
P[10][4]*SF[15] - 
P[11][4]*SF[14] - (
P[12][4]*q0)/2);
  1022     nextP[4][7] = 
P[4][7] + 
P[0][7]*SF[5] + 
P[1][7]*SF[3] - 
P[3][7]*SF[4] + 
P[2][7]*SPP[0] + 
P[13][7]*SPP[3] + 
P[14][7]*SPP[6] - 
P[15][7]*SPP[9] + 
dt*(
P[4][4] + 
P[0][4]*SF[5] + 
P[1][4]*SF[3] - 
P[3][4]*SF[4] + 
P[2][4]*SPP[0] + 
P[13][4]*SPP[3] + 
P[14][4]*SPP[6] - 
P[15][4]*SPP[9]);
  1023     nextP[5][7] = 
P[5][7] + 
P[0][7]*SF[4] + 
P[2][7]*SF[3] + 
P[3][7]*SF[5] - 
P[1][7]*SPP[0] - 
P[13][7]*SPP[8] + 
P[14][7]*SPP[2] + 
P[15][7]*SPP[5] + 
dt*(
P[5][4] + 
P[0][4]*SF[4] + 
P[2][4]*SF[3] + 
P[3][4]*SF[5] - 
P[1][4]*SPP[0] - 
P[13][4]*SPP[8] + 
P[14][4]*SPP[2] + 
P[15][4]*SPP[5]);
  1024     nextP[6][7] = 
P[6][7] + 
P[1][7]*SF[4] - 
P[2][7]*SF[5] + 
P[3][7]*SF[3] + 
P[0][7]*SPP[0] + 
P[13][7]*SPP[4] - 
P[14][7]*SPP[7] - 
P[15][7]*SPP[1] + 
dt*(
P[6][4] + 
P[1][4]*SF[4] - 
P[2][4]*SF[5] + 
P[3][4]*SF[3] + 
P[0][4]*SPP[0] + 
P[13][4]*SPP[4] - 
P[14][4]*SPP[7] - 
P[15][4]*SPP[1]);
  1025     nextP[7][7] = 
P[7][7] + 
P[4][7]*
dt + 
dt*(
P[7][4] + 
P[4][4]*
dt);
  1026     nextP[0][8] = 
P[0][8] + 
P[1][8]*SF[9] + 
P[2][8]*SF[11] + 
P[3][8]*SF[10] + 
P[10][8]*SF[14] + 
P[11][8]*SF[15] + 
P[12][8]*SPP[10] + 
dt*(
P[0][5] + 
P[1][5]*SF[9] + 
P[2][5]*SF[11] + 
P[3][5]*SF[10] + 
P[10][5]*SF[14] + 
P[11][5]*SF[15] + 
P[12][5]*SPP[10]);
  1027     nextP[1][8] = 
P[1][8] + 
P[0][8]*SF[8] + 
P[2][8]*SF[7] + 
P[3][8]*SF[11] - 
P[12][8]*SF[15] + 
P[11][8]*SPP[10] - (
P[10][8]*
q0)/2 + 
dt*(
P[1][5] + 
P[0][5]*SF[8] + 
P[2][5]*SF[7] + 
P[3][5]*SF[11] - 
P[12][5]*SF[15] + 
P[11][5]*SPP[10] - (
P[10][5]*q0)/2);
  1028     nextP[2][8] = 
P[2][8] + 
P[0][8]*SF[6] + 
P[1][8]*SF[10] + 
P[3][8]*SF[8] + 
P[12][8]*SF[14] - 
P[10][8]*SPP[10] - (
P[11][8]*
q0)/2 + 
dt*(
P[2][5] + 
P[0][5]*SF[6] + 
P[1][5]*SF[10] + 
P[3][5]*SF[8] + 
P[12][5]*SF[14] - 
P[10][5]*SPP[10] - (
P[11][5]*q0)/2);
  1029     nextP[3][8] = 
P[3][8] + 
P[0][8]*SF[7] + 
P[1][8]*SF[6] + 
P[2][8]*SF[9] + 
P[10][8]*SF[15] - 
P[11][8]*SF[14] - (
P[12][8]*
q0)/2 + 
dt*(
P[3][5] + 
P[0][5]*SF[7] + 
P[1][5]*SF[6] + 
P[2][5]*SF[9] + 
P[10][5]*SF[15] - 
P[11][5]*SF[14] - (
P[12][5]*q0)/2);
  1030     nextP[4][8] = 
P[4][8] + 
P[0][8]*SF[5] + 
P[1][8]*SF[3] - 
P[3][8]*SF[4] + 
P[2][8]*SPP[0] + 
P[13][8]*SPP[3] + 
P[14][8]*SPP[6] - 
P[15][8]*SPP[9] + 
dt*(
P[4][5] + 
P[0][5]*SF[5] + 
P[1][5]*SF[3] - 
P[3][5]*SF[4] + 
P[2][5]*SPP[0] + 
P[13][5]*SPP[3] + 
P[14][5]*SPP[6] - 
P[15][5]*SPP[9]);
  1031     nextP[5][8] = 
P[5][8] + 
P[0][8]*SF[4] + 
P[2][8]*SF[3] + 
P[3][8]*SF[5] - 
P[1][8]*SPP[0] - 
P[13][8]*SPP[8] + 
P[14][8]*SPP[2] + 
P[15][8]*SPP[5] + 
dt*(
P[5][5] + 
P[0][5]*SF[4] + 
P[2][5]*SF[3] + 
P[3][5]*SF[5] - 
P[1][5]*SPP[0] - 
P[13][5]*SPP[8] + 
P[14][5]*SPP[2] + 
P[15][5]*SPP[5]);
  1032     nextP[6][8] = 
P[6][8] + 
P[1][8]*SF[4] - 
P[2][8]*SF[5] + 
P[3][8]*SF[3] + 
P[0][8]*SPP[0] + 
P[13][8]*SPP[4] - 
P[14][8]*SPP[7] - 
P[15][8]*SPP[1] + 
dt*(
P[6][5] + 
P[1][5]*SF[4] - 
P[2][5]*SF[5] + 
P[3][5]*SF[3] + 
P[0][5]*SPP[0] + 
P[13][5]*SPP[4] - 
P[14][5]*SPP[7] - 
P[15][5]*SPP[1]);
  1033     nextP[7][8] = 
P[7][8] + 
P[4][8]*
dt + 
dt*(
P[7][5] + 
P[4][5]*
dt);
  1034     nextP[8][8] = 
P[8][8] + 
P[5][8]*
dt + 
dt*(
P[8][5] + 
P[5][5]*
dt);
  1035     nextP[0][9] = 
P[0][9] + 
P[1][9]*SF[9] + 
P[2][9]*SF[11] + 
P[3][9]*SF[10] + 
P[10][9]*SF[14] + 
P[11][9]*SF[15] + 
P[12][9]*SPP[10] + 
dt*(
P[0][6] + 
P[1][6]*SF[9] + 
P[2][6]*SF[11] + 
P[3][6]*SF[10] + 
P[10][6]*SF[14] + 
P[11][6]*SF[15] + 
P[12][6]*SPP[10]);
  1036     nextP[1][9] = 
P[1][9] + 
P[0][9]*SF[8] + 
P[2][9]*SF[7] + 
P[3][9]*SF[11] - 
P[12][9]*SF[15] + 
P[11][9]*SPP[10] - (
P[10][9]*
q0)/2 + 
dt*(
P[1][6] + 
P[0][6]*SF[8] + 
P[2][6]*SF[7] + 
P[3][6]*SF[11] - 
P[12][6]*SF[15] + 
P[11][6]*SPP[10] - (
P[10][6]*q0)/2);
  1037     nextP[2][9] = 
P[2][9] + 
P[0][9]*SF[6] + 
P[1][9]*SF[10] + 
P[3][9]*SF[8] + 
P[12][9]*SF[14] - 
P[10][9]*SPP[10] - (
P[11][9]*
q0)/2 + 
dt*(
P[2][6] + 
P[0][6]*SF[6] + 
P[1][6]*SF[10] + 
P[3][6]*SF[8] + 
P[12][6]*SF[14] - 
P[10][6]*SPP[10] - (
P[11][6]*q0)/2);
  1038     nextP[3][9] = 
P[3][9] + 
P[0][9]*SF[7] + 
P[1][9]*SF[6] + 
P[2][9]*SF[9] + 
P[10][9]*SF[15] - 
P[11][9]*SF[14] - (
P[12][9]*
q0)/2 + 
dt*(
P[3][6] + 
P[0][6]*SF[7] + 
P[1][6]*SF[6] + 
P[2][6]*SF[9] + 
P[10][6]*SF[15] - 
P[11][6]*SF[14] - (
P[12][6]*q0)/2);
  1039     nextP[4][9] = 
P[4][9] + 
P[0][9]*SF[5] + 
P[1][9]*SF[3] - 
P[3][9]*SF[4] + 
P[2][9]*SPP[0] + 
P[13][9]*SPP[3] + 
P[14][9]*SPP[6] - 
P[15][9]*SPP[9] + 
dt*(
P[4][6] + 
P[0][6]*SF[5] + 
P[1][6]*SF[3] - 
P[3][6]*SF[4] + 
P[2][6]*SPP[0] + 
P[13][6]*SPP[3] + 
P[14][6]*SPP[6] - 
P[15][6]*SPP[9]);
  1040     nextP[5][9] = 
P[5][9] + 
P[0][9]*SF[4] + 
P[2][9]*SF[3] + 
P[3][9]*SF[5] - 
P[1][9]*SPP[0] - 
P[13][9]*SPP[8] + 
P[14][9]*SPP[2] + 
P[15][9]*SPP[5] + 
dt*(
P[5][6] + 
P[0][6]*SF[4] + 
P[2][6]*SF[3] + 
P[3][6]*SF[5] - 
P[1][6]*SPP[0] - 
P[13][6]*SPP[8] + 
P[14][6]*SPP[2] + 
P[15][6]*SPP[5]);
  1041     nextP[6][9] = 
P[6][9] + 
P[1][9]*SF[4] - 
P[2][9]*SF[5] + 
P[3][9]*SF[3] + 
P[0][9]*SPP[0] + 
P[13][9]*SPP[4] - 
P[14][9]*SPP[7] - 
P[15][9]*SPP[1] + 
dt*(
P[6][6] + 
P[1][6]*SF[4] - 
P[2][6]*SF[5] + 
P[3][6]*SF[3] + 
P[0][6]*SPP[0] + 
P[13][6]*SPP[4] - 
P[14][6]*SPP[7] - 
P[15][6]*SPP[1]);
  1042     nextP[7][9] = 
P[7][9] + 
P[4][9]*
dt + 
dt*(
P[7][6] + 
P[4][6]*
dt);
  1043     nextP[8][9] = 
P[8][9] + 
P[5][9]*
dt + 
dt*(
P[8][6] + 
P[5][6]*
dt);
  1044     nextP[9][9] = 
P[9][9] + 
P[6][9]*
dt + 
dt*(
P[9][6] + 
P[6][6]*
dt);
  1047         nextP[0][10] = 
P[0][10] + 
P[1][10]*SF[9] + 
P[2][10]*SF[11] + 
P[3][10]*SF[10] + 
P[10][10]*SF[14] + 
P[11][10]*SF[15] + 
P[12][10]*SPP[10];
  1048         nextP[1][10] = 
P[1][10] + 
P[0][10]*SF[8] + 
P[2][10]*SF[7] + 
P[3][10]*SF[11] - 
P[12][10]*SF[15] + 
P[11][10]*SPP[10] - (
P[10][10]*
q0)/2;
  1049         nextP[2][10] = 
P[2][10] + 
P[0][10]*SF[6] + 
P[1][10]*SF[10] + 
P[3][10]*SF[8] + 
P[12][10]*SF[14] - 
P[10][10]*SPP[10] - (
P[11][10]*
q0)/2;
  1050         nextP[3][10] = 
P[3][10] + 
P[0][10]*SF[7] + 
P[1][10]*SF[6] + 
P[2][10]*SF[9] + 
P[10][10]*SF[15] - 
P[11][10]*SF[14] - (
P[12][10]*
q0)/2;
  1051         nextP[4][10] = 
P[4][10] + 
P[0][10]*SF[5] + 
P[1][10]*SF[3] - 
P[3][10]*SF[4] + 
P[2][10]*SPP[0] + 
P[13][10]*SPP[3] + 
P[14][10]*SPP[6] - 
P[15][10]*SPP[9];
  1052         nextP[5][10] = 
P[5][10] + 
P[0][10]*SF[4] + 
P[2][10]*SF[3] + 
P[3][10]*SF[5] - 
P[1][10]*SPP[0] - 
P[13][10]*SPP[8] + 
P[14][10]*SPP[2] + 
P[15][10]*SPP[5];
  1053         nextP[6][10] = 
P[6][10] + 
P[1][10]*SF[4] - 
P[2][10]*SF[5] + 
P[3][10]*SF[3] + 
P[0][10]*SPP[0] + 
P[13][10]*SPP[4] - 
P[14][10]*SPP[7] - 
P[15][10]*SPP[1];
  1054         nextP[7][10] = 
P[7][10] + 
P[4][10]*
dt;
  1055         nextP[8][10] = 
P[8][10] + 
P[5][10]*
dt;
  1056         nextP[9][10] = 
P[9][10] + 
P[6][10]*
dt;
  1057         nextP[10][10] = 
P[10][10];
  1058         nextP[0][11] = 
P[0][11] + 
P[1][11]*SF[9] + 
P[2][11]*SF[11] + 
P[3][11]*SF[10] + 
P[10][11]*SF[14] + 
P[11][11]*SF[15] + 
P[12][11]*SPP[10];
  1059         nextP[1][11] = 
P[1][11] + 
P[0][11]*SF[8] + 
P[2][11]*SF[7] + 
P[3][11]*SF[11] - 
P[12][11]*SF[15] + 
P[11][11]*SPP[10] - (
P[10][11]*
q0)/2;
  1060         nextP[2][11] = 
P[2][11] + 
P[0][11]*SF[6] + 
P[1][11]*SF[10] + 
P[3][11]*SF[8] + 
P[12][11]*SF[14] - 
P[10][11]*SPP[10] - (
P[11][11]*
q0)/2;
  1061         nextP[3][11] = 
P[3][11] + 
P[0][11]*SF[7] + 
P[1][11]*SF[6] + 
P[2][11]*SF[9] + 
P[10][11]*SF[15] - 
P[11][11]*SF[14] - (
P[12][11]*
q0)/2;
  1062         nextP[4][11] = 
P[4][11] + 
P[0][11]*SF[5] + 
P[1][11]*SF[3] - 
P[3][11]*SF[4] + 
P[2][11]*SPP[0] + 
P[13][11]*SPP[3] + 
P[14][11]*SPP[6] - 
P[15][11]*SPP[9];
  1063         nextP[5][11] = 
P[5][11] + 
P[0][11]*SF[4] + 
P[2][11]*SF[3] + 
P[3][11]*SF[5] - 
P[1][11]*SPP[0] - 
P[13][11]*SPP[8] + 
P[14][11]*SPP[2] + 
P[15][11]*SPP[5];
  1064         nextP[6][11] = 
P[6][11] + 
P[1][11]*SF[4] - 
P[2][11]*SF[5] + 
P[3][11]*SF[3] + 
P[0][11]*SPP[0] + 
P[13][11]*SPP[4] - 
P[14][11]*SPP[7] - 
P[15][11]*SPP[1];
  1065         nextP[7][11] = 
P[7][11] + 
P[4][11]*
dt;
  1066         nextP[8][11] = 
P[8][11] + 
P[5][11]*
dt;
  1067         nextP[9][11] = 
P[9][11] + 
P[6][11]*
dt;
  1068         nextP[10][11] = 
P[10][11];
  1069         nextP[11][11] = 
P[11][11];
  1070         nextP[0][12] = 
P[0][12] + 
P[1][12]*SF[9] + 
P[2][12]*SF[11] + 
P[3][12]*SF[10] + 
P[10][12]*SF[14] + 
P[11][12]*SF[15] + 
P[12][12]*SPP[10];
  1071         nextP[1][12] = 
P[1][12] + 
P[0][12]*SF[8] + 
P[2][12]*SF[7] + 
P[3][12]*SF[11] - 
P[12][12]*SF[15] + 
P[11][12]*SPP[10] - (
P[10][12]*
q0)/2;
  1072         nextP[2][12] = 
P[2][12] + 
P[0][12]*SF[6] + 
P[1][12]*SF[10] + 
P[3][12]*SF[8] + 
P[12][12]*SF[14] - 
P[10][12]*SPP[10] - (
P[11][12]*
q0)/2;
  1073         nextP[3][12] = 
P[3][12] + 
P[0][12]*SF[7] + 
P[1][12]*SF[6] + 
P[2][12]*SF[9] + 
P[10][12]*SF[15] - 
P[11][12]*SF[14] - (
P[12][12]*
q0)/2;
  1074         nextP[4][12] = 
P[4][12] + 
P[0][12]*SF[5] + 
P[1][12]*SF[3] - 
P[3][12]*SF[4] + 
P[2][12]*SPP[0] + 
P[13][12]*SPP[3] + 
P[14][12]*SPP[6] - 
P[15][12]*SPP[9];
  1075         nextP[5][12] = 
P[5][12] + 
P[0][12]*SF[4] + 
P[2][12]*SF[3] + 
P[3][12]*SF[5] - 
P[1][12]*SPP[0] - 
P[13][12]*SPP[8] + 
P[14][12]*SPP[2] + 
P[15][12]*SPP[5];
  1076         nextP[6][12] = 
P[6][12] + 
P[1][12]*SF[4] - 
P[2][12]*SF[5] + 
P[3][12]*SF[3] + 
P[0][12]*SPP[0] + 
P[13][12]*SPP[4] - 
P[14][12]*SPP[7] - 
P[15][12]*SPP[1];
  1077         nextP[7][12] = 
P[7][12] + 
P[4][12]*
dt;
  1078         nextP[8][12] = 
P[8][12] + 
P[5][12]*
dt;
  1079         nextP[9][12] = 
P[9][12] + 
P[6][12]*
dt;
  1080         nextP[10][12] = 
P[10][12];
  1081         nextP[11][12] = 
P[11][12];
  1082         nextP[12][12] = 
P[12][12];
  1085             nextP[0][13] = 
P[0][13] + 
P[1][13]*SF[9] + 
P[2][13]*SF[11] + 
P[3][13]*SF[10] + 
P[10][13]*SF[14] + 
P[11][13]*SF[15] + 
P[12][13]*SPP[10];
  1086             nextP[1][13] = 
P[1][13] + 
P[0][13]*SF[8] + 
P[2][13]*SF[7] + 
P[3][13]*SF[11] - 
P[12][13]*SF[15] + 
P[11][13]*SPP[10] - (
P[10][13]*
q0)/2;
  1087             nextP[2][13] = 
P[2][13] + 
P[0][13]*SF[6] + 
P[1][13]*SF[10] + 
P[3][13]*SF[8] + 
P[12][13]*SF[14] - 
P[10][13]*SPP[10] - (
P[11][13]*
q0)/2;
  1088             nextP[3][13] = 
P[3][13] + 
P[0][13]*SF[7] + 
P[1][13]*SF[6] + 
P[2][13]*SF[9] + 
P[10][13]*SF[15] - 
P[11][13]*SF[14] - (
P[12][13]*
q0)/2;
  1089             nextP[4][13] = 
P[4][13] + 
P[0][13]*SF[5] + 
P[1][13]*SF[3] - 
P[3][13]*SF[4] + 
P[2][13]*SPP[0] + 
P[13][13]*SPP[3] + 
P[14][13]*SPP[6] - 
P[15][13]*SPP[9];
  1090             nextP[5][13] = 
P[5][13] + 
P[0][13]*SF[4] + 
P[2][13]*SF[3] + 
P[3][13]*SF[5] - 
P[1][13]*SPP[0] - 
P[13][13]*SPP[8] + 
P[14][13]*SPP[2] + 
P[15][13]*SPP[5];
  1091             nextP[6][13] = 
P[6][13] + 
P[1][13]*SF[4] - 
P[2][13]*SF[5] + 
P[3][13]*SF[3] + 
P[0][13]*SPP[0] + 
P[13][13]*SPP[4] - 
P[14][13]*SPP[7] - 
P[15][13]*SPP[1];
  1092             nextP[7][13] = 
P[7][13] + 
P[4][13]*
dt;
  1093             nextP[8][13] = 
P[8][13] + 
P[5][13]*
dt;
  1094             nextP[9][13] = 
P[9][13] + 
P[6][13]*
dt;
  1095             nextP[10][13] = 
P[10][13];
  1096             nextP[11][13] = 
P[11][13];
  1097             nextP[12][13] = 
P[12][13];
  1098             nextP[13][13] = 
P[13][13];
  1099             nextP[0][14] = 
P[0][14] + 
P[1][14]*SF[9] + 
P[2][14]*SF[11] + 
P[3][14]*SF[10] + 
P[10][14]*SF[14] + 
P[11][14]*SF[15] + 
P[12][14]*SPP[10];
  1100             nextP[1][14] = 
P[1][14] + 
P[0][14]*SF[8] + 
P[2][14]*SF[7] + 
P[3][14]*SF[11] - 
P[12][14]*SF[15] + 
P[11][14]*SPP[10] - (
P[10][14]*
q0)/2;
  1101             nextP[2][14] = 
P[2][14] + 
P[0][14]*SF[6] + 
P[1][14]*SF[10] + 
P[3][14]*SF[8] + 
P[12][14]*SF[14] - 
P[10][14]*SPP[10] - (
P[11][14]*
q0)/2;
  1102             nextP[3][14] = 
P[3][14] + 
P[0][14]*SF[7] + 
P[1][14]*SF[6] + 
P[2][14]*SF[9] + 
P[10][14]*SF[15] - 
P[11][14]*SF[14] - (
P[12][14]*
q0)/2;
  1103             nextP[4][14] = 
P[4][14] + 
P[0][14]*SF[5] + 
P[1][14]*SF[3] - 
P[3][14]*SF[4] + 
P[2][14]*SPP[0] + 
P[13][14]*SPP[3] + 
P[14][14]*SPP[6] - 
P[15][14]*SPP[9];
  1104             nextP[5][14] = 
P[5][14] + 
P[0][14]*SF[4] + 
P[2][14]*SF[3] + 
P[3][14]*SF[5] - 
P[1][14]*SPP[0] - 
P[13][14]*SPP[8] + 
P[14][14]*SPP[2] + 
P[15][14]*SPP[5];
  1105             nextP[6][14] = 
P[6][14] + 
P[1][14]*SF[4] - 
P[2][14]*SF[5] + 
P[3][14]*SF[3] + 
P[0][14]*SPP[0] + 
P[13][14]*SPP[4] - 
P[14][14]*SPP[7] - 
P[15][14]*SPP[1];
  1106             nextP[7][14] = 
P[7][14] + 
P[4][14]*
dt;
  1107             nextP[8][14] = 
P[8][14] + 
P[5][14]*
dt;
  1108             nextP[9][14] = 
P[9][14] + 
P[6][14]*
dt;
  1109             nextP[10][14] = 
P[10][14];
  1110             nextP[11][14] = 
P[11][14];
  1111             nextP[12][14] = 
P[12][14];
  1112             nextP[13][14] = 
P[13][14];
  1113             nextP[14][14] = 
P[14][14];
  1114             nextP[0][15] = 
P[0][15] + 
P[1][15]*SF[9] + 
P[2][15]*SF[11] + 
P[3][15]*SF[10] + 
P[10][15]*SF[14] + 
P[11][15]*SF[15] + 
P[12][15]*SPP[10];
  1115             nextP[1][15] = 
P[1][15] + 
P[0][15]*SF[8] + 
P[2][15]*SF[7] + 
P[3][15]*SF[11] - 
P[12][15]*SF[15] + 
P[11][15]*SPP[10] - (
P[10][15]*
q0)/2;
  1116             nextP[2][15] = 
P[2][15] + 
P[0][15]*SF[6] + 
P[1][15]*SF[10] + 
P[3][15]*SF[8] + 
P[12][15]*SF[14] - 
P[10][15]*SPP[10] - (
P[11][15]*
q0)/2;
  1117             nextP[3][15] = 
P[3][15] + 
P[0][15]*SF[7] + 
P[1][15]*SF[6] + 
P[2][15]*SF[9] + 
P[10][15]*SF[15] - 
P[11][15]*SF[14] - (
P[12][15]*
q0)/2;
  1118             nextP[4][15] = 
P[4][15] + 
P[0][15]*SF[5] + 
P[1][15]*SF[3] - 
P[3][15]*SF[4] + 
P[2][15]*SPP[0] + 
P[13][15]*SPP[3] + 
P[14][15]*SPP[6] - 
P[15][15]*SPP[9];
  1119             nextP[5][15] = 
P[5][15] + 
P[0][15]*SF[4] + 
P[2][15]*SF[3] + 
P[3][15]*SF[5] - 
P[1][15]*SPP[0] - 
P[13][15]*SPP[8] + 
P[14][15]*SPP[2] + 
P[15][15]*SPP[5];
  1120             nextP[6][15] = 
P[6][15] + 
P[1][15]*SF[4] - 
P[2][15]*SF[5] + 
P[3][15]*SF[3] + 
P[0][15]*SPP[0] + 
P[13][15]*SPP[4] - 
P[14][15]*SPP[7] - 
P[15][15]*SPP[1];
  1121             nextP[7][15] = 
P[7][15] + 
P[4][15]*
dt;
  1122             nextP[8][15] = 
P[8][15] + 
P[5][15]*
dt;
  1123             nextP[9][15] = 
P[9][15] + 
P[6][15]*
dt;
  1124             nextP[10][15] = 
P[10][15];
  1125             nextP[11][15] = 
P[11][15];
  1126             nextP[12][15] = 
P[12][15];
  1127             nextP[13][15] = 
P[13][15];
  1128             nextP[14][15] = 
P[14][15];
  1129             nextP[15][15] = 
P[15][15];
  1132                 nextP[0][16] = 
P[0][16] + 
P[1][16]*SF[9] + 
P[2][16]*SF[11] + 
P[3][16]*SF[10] + 
P[10][16]*SF[14] + 
P[11][16]*SF[15] + 
P[12][16]*SPP[10];
  1133                 nextP[1][16] = 
P[1][16] + 
P[0][16]*SF[8] + 
P[2][16]*SF[7] + 
P[3][16]*SF[11] - 
P[12][16]*SF[15] + 
P[11][16]*SPP[10] - (
P[10][16]*
q0)/2;
  1134                 nextP[2][16] = 
P[2][16] + 
P[0][16]*SF[6] + 
P[1][16]*SF[10] + 
P[3][16]*SF[8] + 
P[12][16]*SF[14] - 
P[10][16]*SPP[10] - (
P[11][16]*
q0)/2;
  1135                 nextP[3][16] = 
P[3][16] + 
P[0][16]*SF[7] + 
P[1][16]*SF[6] + 
P[2][16]*SF[9] + 
P[10][16]*SF[15] - 
P[11][16]*SF[14] - (
P[12][16]*
q0)/2;
  1136                 nextP[4][16] = 
P[4][16] + 
P[0][16]*SF[5] + 
P[1][16]*SF[3] - 
P[3][16]*SF[4] + 
P[2][16]*SPP[0] + 
P[13][16]*SPP[3] + 
P[14][16]*SPP[6] - 
P[15][16]*SPP[9];
  1137                 nextP[5][16] = 
P[5][16] + 
P[0][16]*SF[4] + 
P[2][16]*SF[3] + 
P[3][16]*SF[5] - 
P[1][16]*SPP[0] - 
P[13][16]*SPP[8] + 
P[14][16]*SPP[2] + 
P[15][16]*SPP[5];
  1138                 nextP[6][16] = 
P[6][16] + 
P[1][16]*SF[4] - 
P[2][16]*SF[5] + 
P[3][16]*SF[3] + 
P[0][16]*SPP[0] + 
P[13][16]*SPP[4] - 
P[14][16]*SPP[7] - 
P[15][16]*SPP[1];
  1139                 nextP[7][16] = 
P[7][16] + 
P[4][16]*
dt;
  1140                 nextP[8][16] = 
P[8][16] + 
P[5][16]*
dt;
  1141                 nextP[9][16] = 
P[9][16] + 
P[6][16]*
dt;
  1142                 nextP[10][16] = 
P[10][16];
  1143                 nextP[11][16] = 
P[11][16];
  1144                 nextP[12][16] = 
P[12][16];
  1145                 nextP[13][16] = 
P[13][16];
  1146                 nextP[14][16] = 
P[14][16];
  1147                 nextP[15][16] = 
P[15][16];
  1148                 nextP[16][16] = 
P[16][16];
  1149                 nextP[0][17] = 
P[0][17] + 
P[1][17]*SF[9] + 
P[2][17]*SF[11] + 
P[3][17]*SF[10] + 
P[10][17]*SF[14] + 
P[11][17]*SF[15] + 
P[12][17]*SPP[10];
  1150                 nextP[1][17] = 
P[1][17] + 
P[0][17]*SF[8] + 
P[2][17]*SF[7] + 
P[3][17]*SF[11] - 
P[12][17]*SF[15] + 
P[11][17]*SPP[10] - (
P[10][17]*
q0)/2;
  1151                 nextP[2][17] = 
P[2][17] + 
P[0][17]*SF[6] + 
P[1][17]*SF[10] + 
P[3][17]*SF[8] + 
P[12][17]*SF[14] - 
P[10][17]*SPP[10] - (
P[11][17]*
q0)/2;
  1152                 nextP[3][17] = 
P[3][17] + 
P[0][17]*SF[7] + 
P[1][17]*SF[6] + 
P[2][17]*SF[9] + 
P[10][17]*SF[15] - 
P[11][17]*SF[14] - (
P[12][17]*
q0)/2;
  1153                 nextP[4][17] = 
P[4][17] + 
P[0][17]*SF[5] + 
P[1][17]*SF[3] - 
P[3][17]*SF[4] + 
P[2][17]*SPP[0] + 
P[13][17]*SPP[3] + 
P[14][17]*SPP[6] - 
P[15][17]*SPP[9];
  1154                 nextP[5][17] = 
P[5][17] + 
P[0][17]*SF[4] + 
P[2][17]*SF[3] + 
P[3][17]*SF[5] - 
P[1][17]*SPP[0] - 
P[13][17]*SPP[8] + 
P[14][17]*SPP[2] + 
P[15][17]*SPP[5];
  1155                 nextP[6][17] = 
P[6][17] + 
P[1][17]*SF[4] - 
P[2][17]*SF[5] + 
P[3][17]*SF[3] + 
P[0][17]*SPP[0] + 
P[13][17]*SPP[4] - 
P[14][17]*SPP[7] - 
P[15][17]*SPP[1];
  1156                 nextP[7][17] = 
P[7][17] + 
P[4][17]*
dt;
  1157                 nextP[8][17] = 
P[8][17] + 
P[5][17]*
dt;
  1158                 nextP[9][17] = 
P[9][17] + 
P[6][17]*
dt;
  1159                 nextP[10][17] = 
P[10][17];
  1160                 nextP[11][17] = 
P[11][17];
  1161                 nextP[12][17] = 
P[12][17];
  1162                 nextP[13][17] = 
P[13][17];
  1163                 nextP[14][17] = 
P[14][17];
  1164                 nextP[15][17] = 
P[15][17];
  1165                 nextP[16][17] = 
P[16][17];
  1166                 nextP[17][17] = 
P[17][17];
  1167                 nextP[0][18] = 
P[0][18] + 
P[1][18]*SF[9] + 
P[2][18]*SF[11] + 
P[3][18]*SF[10] + 
P[10][18]*SF[14] + 
P[11][18]*SF[15] + 
P[12][18]*SPP[10];
  1168                 nextP[1][18] = 
P[1][18] + 
P[0][18]*SF[8] + 
P[2][18]*SF[7] + 
P[3][18]*SF[11] - 
P[12][18]*SF[15] + 
P[11][18]*SPP[10] - (
P[10][18]*
q0)/2;
  1169                 nextP[2][18] = 
P[2][18] + 
P[0][18]*SF[6] + 
P[1][18]*SF[10] + 
P[3][18]*SF[8] + 
P[12][18]*SF[14] - 
P[10][18]*SPP[10] - (
P[11][18]*
q0)/2;
  1170                 nextP[3][18] = 
P[3][18] + 
P[0][18]*SF[7] + 
P[1][18]*SF[6] + 
P[2][18]*SF[9] + 
P[10][18]*SF[15] - 
P[11][18]*SF[14] - (
P[12][18]*
q0)/2;
  1171                 nextP[4][18] = 
P[4][18] + 
P[0][18]*SF[5] + 
P[1][18]*SF[3] - 
P[3][18]*SF[4] + 
P[2][18]*SPP[0] + 
P[13][18]*SPP[3] + 
P[14][18]*SPP[6] - 
P[15][18]*SPP[9];
  1172                 nextP[5][18] = 
P[5][18] + 
P[0][18]*SF[4] + 
P[2][18]*SF[3] + 
P[3][18]*SF[5] - 
P[1][18]*SPP[0] - 
P[13][18]*SPP[8] + 
P[14][18]*SPP[2] + 
P[15][18]*SPP[5];
  1173                 nextP[6][18] = 
P[6][18] + 
P[1][18]*SF[4] - 
P[2][18]*SF[5] + 
P[3][18]*SF[3] + 
P[0][18]*SPP[0] + 
P[13][18]*SPP[4] - 
P[14][18]*SPP[7] - 
P[15][18]*SPP[1];
  1174                 nextP[7][18] = 
P[7][18] + 
P[4][18]*
dt;
  1175                 nextP[8][18] = 
P[8][18] + 
P[5][18]*
dt;
  1176                 nextP[9][18] = 
P[9][18] + 
P[6][18]*
dt;
  1177                 nextP[10][18] = 
P[10][18];
  1178                 nextP[11][18] = 
P[11][18];
  1179                 nextP[12][18] = 
P[12][18];
  1180                 nextP[13][18] = 
P[13][18];
  1181                 nextP[14][18] = 
P[14][18];
  1182                 nextP[15][18] = 
P[15][18];
  1183                 nextP[16][18] = 
P[16][18];
  1184                 nextP[17][18] = 
P[17][18];
  1185                 nextP[18][18] = 
P[18][18];
  1186                 nextP[0][19] = 
P[0][19] + 
P[1][19]*SF[9] + 
P[2][19]*SF[11] + 
P[3][19]*SF[10] + 
P[10][19]*SF[14] + 
P[11][19]*SF[15] + 
P[12][19]*SPP[10];
  1187                 nextP[1][19] = 
P[1][19] + 
P[0][19]*SF[8] + 
P[2][19]*SF[7] + 
P[3][19]*SF[11] - 
P[12][19]*SF[15] + 
P[11][19]*SPP[10] - (
P[10][19]*
q0)/2;
  1188                 nextP[2][19] = 
P[2][19] + 
P[0][19]*SF[6] + 
P[1][19]*SF[10] + 
P[3][19]*SF[8] + 
P[12][19]*SF[14] - 
P[10][19]*SPP[10] - (
P[11][19]*
q0)/2;
  1189                 nextP[3][19] = 
P[3][19] + 
P[0][19]*SF[7] + 
P[1][19]*SF[6] + 
P[2][19]*SF[9] + 
P[10][19]*SF[15] - 
P[11][19]*SF[14] - (
P[12][19]*
q0)/2;
  1190                 nextP[4][19] = 
P[4][19] + 
P[0][19]*SF[5] + 
P[1][19]*SF[3] - 
P[3][19]*SF[4] + 
P[2][19]*SPP[0] + 
P[13][19]*SPP[3] + 
P[14][19]*SPP[6] - 
P[15][19]*SPP[9];
  1191                 nextP[5][19] = 
P[5][19] + 
P[0][19]*SF[4] + 
P[2][19]*SF[3] + 
P[3][19]*SF[5] - 
P[1][19]*SPP[0] - 
P[13][19]*SPP[8] + 
P[14][19]*SPP[2] + 
P[15][19]*SPP[5];
  1192                 nextP[6][19] = 
P[6][19] + 
P[1][19]*SF[4] - 
P[2][19]*SF[5] + 
P[3][19]*SF[3] + 
P[0][19]*SPP[0] + 
P[13][19]*SPP[4] - 
P[14][19]*SPP[7] - 
P[15][19]*SPP[1];
  1193                 nextP[7][19] = 
P[7][19] + 
P[4][19]*
dt;
  1194                 nextP[8][19] = 
P[8][19] + 
P[5][19]*
dt;
  1195                 nextP[9][19] = 
P[9][19] + 
P[6][19]*
dt;
  1196                 nextP[10][19] = 
P[10][19];
  1197                 nextP[11][19] = 
P[11][19];
  1198                 nextP[12][19] = 
P[12][19];
  1199                 nextP[13][19] = 
P[13][19];
  1200                 nextP[14][19] = 
P[14][19];
  1201                 nextP[15][19] = 
P[15][19];
  1202                 nextP[16][19] = 
P[16][19];
  1203                 nextP[17][19] = 
P[17][19];
  1204                 nextP[18][19] = 
P[18][19];
  1205                 nextP[19][19] = 
P[19][19];
  1206                 nextP[0][20] = 
P[0][20] + 
P[1][20]*SF[9] + 
P[2][20]*SF[11] + 
P[3][20]*SF[10] + 
P[10][20]*SF[14] + 
P[11][20]*SF[15] + 
P[12][20]*SPP[10];
  1207                 nextP[1][20] = 
P[1][20] + 
P[0][20]*SF[8] + 
P[2][20]*SF[7] + 
P[3][20]*SF[11] - 
P[12][20]*SF[15] + 
P[11][20]*SPP[10] - (
P[10][20]*
q0)/2;
  1208                 nextP[2][20] = 
P[2][20] + 
P[0][20]*SF[6] + 
P[1][20]*SF[10] + 
P[3][20]*SF[8] + 
P[12][20]*SF[14] - 
P[10][20]*SPP[10] - (
P[11][20]*
q0)/2;
  1209                 nextP[3][20] = 
P[3][20] + 
P[0][20]*SF[7] + 
P[1][20]*SF[6] + 
P[2][20]*SF[9] + 
P[10][20]*SF[15] - 
P[11][20]*SF[14] - (
P[12][20]*
q0)/2;
  1210                 nextP[4][20] = 
P[4][20] + 
P[0][20]*SF[5] + 
P[1][20]*SF[3] - 
P[3][20]*SF[4] + 
P[2][20]*SPP[0] + 
P[13][20]*SPP[3] + 
P[14][20]*SPP[6] - 
P[15][20]*SPP[9];
  1211                 nextP[5][20] = 
P[5][20] + 
P[0][20]*SF[4] + 
P[2][20]*SF[3] + 
P[3][20]*SF[5] - 
P[1][20]*SPP[0] - 
P[13][20]*SPP[8] + 
P[14][20]*SPP[2] + 
P[15][20]*SPP[5];
  1212                 nextP[6][20] = 
P[6][20] + 
P[1][20]*SF[4] - 
P[2][20]*SF[5] + 
P[3][20]*SF[3] + 
P[0][20]*SPP[0] + 
P[13][20]*SPP[4] - 
P[14][20]*SPP[7] - 
P[15][20]*SPP[1];
  1213                 nextP[7][20] = 
P[7][20] + 
P[4][20]*
dt;
  1214                 nextP[8][20] = 
P[8][20] + 
P[5][20]*
dt;
  1215                 nextP[9][20] = 
P[9][20] + 
P[6][20]*
dt;
  1216                 nextP[10][20] = 
P[10][20];
  1217                 nextP[11][20] = 
P[11][20];
  1218                 nextP[12][20] = 
P[12][20];
  1219                 nextP[13][20] = 
P[13][20];
  1220                 nextP[14][20] = 
P[14][20];
  1221                 nextP[15][20] = 
P[15][20];
  1222                 nextP[16][20] = 
P[16][20];
  1223                 nextP[17][20] = 
P[17][20];
  1224                 nextP[18][20] = 
P[18][20];
  1225                 nextP[19][20] = 
P[19][20];
  1226                 nextP[20][20] = 
P[20][20];
  1227                 nextP[0][21] = 
P[0][21] + 
P[1][21]*SF[9] + 
P[2][21]*SF[11] + 
P[3][21]*SF[10] + 
P[10][21]*SF[14] + 
P[11][21]*SF[15] + 
P[12][21]*SPP[10];
  1228                 nextP[1][21] = 
P[1][21] + 
P[0][21]*SF[8] + 
P[2][21]*SF[7] + 
P[3][21]*SF[11] - 
P[12][21]*SF[15] + 
P[11][21]*SPP[10] - (
P[10][21]*
q0)/2;
  1229                 nextP[2][21] = 
P[2][21] + 
P[0][21]*SF[6] + 
P[1][21]*SF[10] + 
P[3][21]*SF[8] + 
P[12][21]*SF[14] - 
P[10][21]*SPP[10] - (
P[11][21]*
q0)/2;
  1230                 nextP[3][21] = 
P[3][21] + 
P[0][21]*SF[7] + 
P[1][21]*SF[6] + 
P[2][21]*SF[9] + 
P[10][21]*SF[15] - 
P[11][21]*SF[14] - (
P[12][21]*
q0)/2;
  1231                 nextP[4][21] = 
P[4][21] + 
P[0][21]*SF[5] + 
P[1][21]*SF[3] - 
P[3][21]*SF[4] + 
P[2][21]*SPP[0] + 
P[13][21]*SPP[3] + 
P[14][21]*SPP[6] - 
P[15][21]*SPP[9];
  1232                 nextP[5][21] = 
P[5][21] + 
P[0][21]*SF[4] + 
P[2][21]*SF[3] + 
P[3][21]*SF[5] - 
P[1][21]*SPP[0] - 
P[13][21]*SPP[8] + 
P[14][21]*SPP[2] + 
P[15][21]*SPP[5];
  1233                 nextP[6][21] = 
P[6][21] + 
P[1][21]*SF[4] - 
P[2][21]*SF[5] + 
P[3][21]*SF[3] + 
P[0][21]*SPP[0] + 
P[13][21]*SPP[4] - 
P[14][21]*SPP[7] - 
P[15][21]*SPP[1];
  1234                 nextP[7][21] = 
P[7][21] + 
P[4][21]*
dt;
  1235                 nextP[8][21] = 
P[8][21] + 
P[5][21]*
dt;
  1236                 nextP[9][21] = 
P[9][21] + 
P[6][21]*
dt;
  1237                 nextP[10][21] = 
P[10][21];
  1238                 nextP[11][21] = 
P[11][21];
  1239                 nextP[12][21] = 
P[12][21];
  1240                 nextP[13][21] = 
P[13][21];
  1241                 nextP[14][21] = 
P[14][21];
  1242                 nextP[15][21] = 
P[15][21];
  1243                 nextP[16][21] = 
P[16][21];
  1244                 nextP[17][21] = 
P[17][21];
  1245                 nextP[18][21] = 
P[18][21];
  1246                 nextP[19][21] = 
P[19][21];
  1247                 nextP[20][21] = 
P[20][21];
  1248                 nextP[21][21] = 
P[21][21];
  1251                     nextP[0][22] = 
P[0][22] + 
P[1][22]*SF[9] + 
P[2][22]*SF[11] + 
P[3][22]*SF[10] + 
P[10][22]*SF[14] + 
P[11][22]*SF[15] + 
P[12][22]*SPP[10];
  1252                     nextP[1][22] = 
P[1][22] + 
P[0][22]*SF[8] + 
P[2][22]*SF[7] + 
P[3][22]*SF[11] - 
P[12][22]*SF[15] + 
P[11][22]*SPP[10] - (
P[10][22]*
q0)/2;
  1253                     nextP[2][22] = 
P[2][22] + 
P[0][22]*SF[6] + 
P[1][22]*SF[10] + 
P[3][22]*SF[8] + 
P[12][22]*SF[14] - 
P[10][22]*SPP[10] - (
P[11][22]*
q0)/2;
  1254                     nextP[3][22] = 
P[3][22] + 
P[0][22]*SF[7] + 
P[1][22]*SF[6] + 
P[2][22]*SF[9] + 
P[10][22]*SF[15] - 
P[11][22]*SF[14] - (
P[12][22]*
q0)/2;
  1255                     nextP[4][22] = 
P[4][22] + 
P[0][22]*SF[5] + 
P[1][22]*SF[3] - 
P[3][22]*SF[4] + 
P[2][22]*SPP[0] + 
P[13][22]*SPP[3] + 
P[14][22]*SPP[6] - 
P[15][22]*SPP[9];
  1256                     nextP[5][22] = 
P[5][22] + 
P[0][22]*SF[4] + 
P[2][22]*SF[3] + 
P[3][22]*SF[5] - 
P[1][22]*SPP[0] - 
P[13][22]*SPP[8] + 
P[14][22]*SPP[2] + 
P[15][22]*SPP[5];
  1257                     nextP[6][22] = 
P[6][22] + 
P[1][22]*SF[4] - 
P[2][22]*SF[5] + 
P[3][22]*SF[3] + 
P[0][22]*SPP[0] + 
P[13][22]*SPP[4] - 
P[14][22]*SPP[7] - 
P[15][22]*SPP[1];
  1258                     nextP[7][22] = 
P[7][22] + 
P[4][22]*
dt;
  1259                     nextP[8][22] = 
P[8][22] + 
P[5][22]*
dt;
  1260                     nextP[9][22] = 
P[9][22] + 
P[6][22]*
dt;
  1261                     nextP[10][22] = 
P[10][22];
  1262                     nextP[11][22] = 
P[11][22];
  1263                     nextP[12][22] = 
P[12][22];
  1264                     nextP[13][22] = 
P[13][22];
  1265                     nextP[14][22] = 
P[14][22];
  1266                     nextP[15][22] = 
P[15][22];
  1267                     nextP[16][22] = 
P[16][22];
  1268                     nextP[17][22] = 
P[17][22];
  1269                     nextP[18][22] = 
P[18][22];
  1270                     nextP[19][22] = 
P[19][22];
  1271                     nextP[20][22] = 
P[20][22];
  1272                     nextP[21][22] = 
P[21][22];
  1273                     nextP[22][22] = 
P[22][22];
  1274                     nextP[0][23] = 
P[0][23] + 
P[1][23]*SF[9] + 
P[2][23]*SF[11] + 
P[3][23]*SF[10] + 
P[10][23]*SF[14] + 
P[11][23]*SF[15] + 
P[12][23]*SPP[10];
  1275                     nextP[1][23] = 
P[1][23] + 
P[0][23]*SF[8] + 
P[2][23]*SF[7] + 
P[3][23]*SF[11] - 
P[12][23]*SF[15] + 
P[11][23]*SPP[10] - (
P[10][23]*
q0)/2;
  1276                     nextP[2][23] = 
P[2][23] + 
P[0][23]*SF[6] + 
P[1][23]*SF[10] + 
P[3][23]*SF[8] + 
P[12][23]*SF[14] - 
P[10][23]*SPP[10] - (
P[11][23]*
q0)/2;
  1277                     nextP[3][23] = 
P[3][23] + 
P[0][23]*SF[7] + 
P[1][23]*SF[6] + 
P[2][23]*SF[9] + 
P[10][23]*SF[15] - 
P[11][23]*SF[14] - (
P[12][23]*
q0)/2;
  1278                     nextP[4][23] = 
P[4][23] + 
P[0][23]*SF[5] + 
P[1][23]*SF[3] - 
P[3][23]*SF[4] + 
P[2][23]*SPP[0] + 
P[13][23]*SPP[3] + 
P[14][23]*SPP[6] - 
P[15][23]*SPP[9];
  1279                     nextP[5][23] = 
P[5][23] + 
P[0][23]*SF[4] + 
P[2][23]*SF[3] + 
P[3][23]*SF[5] - 
P[1][23]*SPP[0] - 
P[13][23]*SPP[8] + 
P[14][23]*SPP[2] + 
P[15][23]*SPP[5];
  1280                     nextP[6][23] = 
P[6][23] + 
P[1][23]*SF[4] - 
P[2][23]*SF[5] + 
P[3][23]*SF[3] + 
P[0][23]*SPP[0] + 
P[13][23]*SPP[4] - 
P[14][23]*SPP[7] - 
P[15][23]*SPP[1];
  1281                     nextP[7][23] = 
P[7][23] + 
P[4][23]*
dt;
  1282                     nextP[8][23] = 
P[8][23] + 
P[5][23]*
dt;
  1283                     nextP[9][23] = 
P[9][23] + 
P[6][23]*
dt;
  1284                     nextP[10][23] = 
P[10][23];
  1285                     nextP[11][23] = 
P[11][23];
  1286                     nextP[12][23] = 
P[12][23];
  1287                     nextP[13][23] = 
P[13][23];
  1288                     nextP[14][23] = 
P[14][23];
  1289                     nextP[15][23] = 
P[15][23];
  1290                     nextP[16][23] = 
P[16][23];
  1291                     nextP[17][23] = 
P[17][23];
  1292                     nextP[18][23] = 
P[18][23];
  1293                     nextP[19][23] = 
P[19][23];
  1294                     nextP[20][23] = 
P[20][23];
  1295                     nextP[21][23] = 
P[21][23];
  1296                     nextP[22][23] = 
P[22][23];
  1297                     nextP[23][23] = 
P[23][23];
  1306             nextP[i][i] = nextP[i][i] + processNoiseVariance[i-10];
  1314     if ((
P[7][7] + 
P[8][8]) > 1e4f) {
  1315         for (uint8_t i=7; i<=8; i++)
  1319                 nextP[i][j] = 
P[i][j];
  1320                 nextP[j][i] = 
P[j][i];
  1329         P[row][row] = nextP[row][row];
  1331         for (uint8_t column = 0 ; column < row; column++) {
  1332             P[row][column] = 
P[column][row] = nextP[column][row];
  1346     for (row=first; row<=last; row++)
  1348         memset(&covMat[row][0], 0, 
sizeof(covMat[0][0])*24);
  1356     for (row=0; row<=23; row++)
  1358         memset(&covMat[row][first], 0, 
sizeof(covMat[0][0])*(1+last-first));
  1412         for (uint8_t j=0; j<=i-1; j++)
  1414             float temp = 0.5f*(
P[i][j] + 
P[j][i]);
  1439         bool resetRequired = 
false;
  1440         for (uint8_t i=13; i<=15; i++) {
  1441             if (
P[i][i] > 1E-9
f) {
  1447                 resetRequired = 
true;
  1452         if (resetRequired) {
  1453             float delVelBiasVar[3];
  1455             for (uint8_t i=0; i<=2; i++) {
  1456                 delVelBiasVar[i] = 
P[i+13][i+13];
  1461             for (uint8_t i=0; i<=2; i++) {
  1462                 P[i+13][i+13] = delVelBiasVar[i];
  1517     float lat_rad = 
radians(latitude*1.0e-7
f);
  1544         float magHeading = atan2f(initMagNED.
y, initMagNED.
x);
  1550         yaw = magDecAng - magHeading;
  1582             P[19][19] = 
P[18][18];
  1583             P[20][20] = 
P[18][18];
  1584             P[21][21] = 
P[18][18];
  1608     for (uint8_t index=0; index<=3; index++) {
  1609         varTemp[index] = 
P[index][index];
  1613     for (uint8_t index=0; index<=3; index++) {
  1614         P[index][index] = varTemp[index];
  1633     float t3 = acosf(q0);
  1634     float t4 = -t2+1.0f;
  1636     if ((t4 > 1e-9
f) && (t5 < -1e-9
f)) {
  1638         float t7 = q1*t6*2.0f;
  1639         float t8 = 1.0f/powf(t4,1.5
f);
  1640         float t9 = q0*q1*t3*t8*2.0f;
  1642         float t11 = 1.0f/sqrtf(t4);
  1643         float t12 = q2*t6*2.0f;
  1644         float t13 = q0*q2*t3*t8*2.0f;
  1646         float t15 = q3*t6*2.0f;
  1647         float t16 = q0*q3*t3*t8*2.0f;
  1649         rotVarVec.
x = t10*(
P[0][0]*t10+
P[1][0]*t3*t11*2.0f)+t3*t11*(
P[0][1]*t10+
P[1][1]*t3*t11*2.0
f)*2.0f;
  1650         rotVarVec.
y = t14*(
P[0][0]*t14+
P[2][0]*t3*t11*2.0f)+t3*t11*(
P[0][2]*t14+
P[2][2]*t3*t11*2.0f)*2.0f;
  1651         rotVarVec.
z = t17*(
P[0][0]*t17+
P[3][0]*t3*t11*2.0f)+t3*t11*(
P[0][3]*t17+
P[3][3]*t3*t11*2.0f)*2.0f;
  1653         rotVarVec.
x = 4.0f * 
P[1][1];
  1654         rotVarVec.
y = 4.0f * 
P[2][2];
  1655         rotVarVec.
z = 4.0f * 
P[3][3];
  1675     float delta = 2.0f*acosf(q0);
  1677     if (fabsf(delta) > 1e-6
f) {
  1678         scaler = (delta/sinf(delta*0.5
f));
  1682     float rotX = scaler*
q1;
  1683     float rotY = scaler*
q2;
  1684     float rotZ = scaler*
q3;
  1687     float t2 = rotX*rotX;
  1688     float t4 = rotY*rotY;
  1689     float t5 = rotZ*rotZ;
  1690     float t6 = t2+t4+
t5;
  1692         float t7 = sqrtf(t6);
  1694         float t3 = sinf(t8);
  1696         float t10 = 1.0f/
t6;
  1697         float t11 = 1.0f/sqrtf(t6);
  1698         float t12 = cosf(t8);
  1699         float t13 = 1.0f/powf(t6,1.5
f);
  1701         float t15 = rotX*rotY*t3*
t13;
  1702         float t16 = rotX*rotZ*t3*
t13;
  1703         float t17 = rotY*rotZ*t3*
t13;
  1704         float t18 = t2*t10*t12*0.5f;
  1707         float t23 = rotX*rotY*t10*t12*0.5f;
  1709         float t20 = rotY*rotVarVec.
y*t3*t11*t28*0.5f;
  1710         float t25 = rotX*rotZ*t10*t12*0.5f;
  1712         float t21 = rotZ*rotVarVec.
z*t3*t11*t31*0.5f;
  1713         float t22 = t20+t21-rotX*rotVarVec.
x*t3*t11*t19*0.5f;
  1716         float t29 = t4*t10*t12*0.5f;
  1719         float t32 = t5*t10*t12*0.5f;
  1722         float t36 = rotY*rotZ*t10*t12*0.5f;
  1724         float t35 = rotZ*rotVarVec.
z*t3*t11*t39*0.5f;
  1727         float t41 = rotVarVec.
x*(t15-
t23)*(t16-t25);
  1728         float t42 = t41-rotVarVec.
y*t30*t39-rotVarVec.
z*t33*
t39;
  1737         P[0][0] = rotVarVec.
x*t2*t9*t10*0.25f+rotVarVec.
y*t4*t9*t10*0.25f+rotVarVec.
z*t5*t9*t10*0.25f;
  1739         P[0][2] = t35+rotX*rotVarVec.
x*t3*t11*(t15-rotX*rotY*t10*t12*0.5f)*0.5
f-rotY*rotVarVec.
y*t3*t11*t30*0.5f;
  1740         P[0][3] = rotX*rotVarVec.
x*t3*t11*(t16-rotX*rotZ*t10*t12*0.5f)*0.5f+rotY*rotVarVec.
y*t3*t11*(t17-rotY*rotZ*t10*t12*0.5f)*0.5
f-rotZ*rotVarVec.
z*t3*t11*t33*0.5f;
  1742         P[1][1] = rotVarVec.
x*(t19*t19)+rotVarVec.
y*(t24*
t24)+rotVarVec.
z*(t26*t26);
  1743         P[1][2] = rotVarVec.
z*(t16-
t25)*(t17-rotY*rotZ*t10*t12*0.5
f)-rotVarVec.
x*t19*t28-rotVarVec.
y*t28*
t30;
  1744         P[1][3] = rotVarVec.
y*(t15-
t23)*(t17-rotY*rotZ*t10*t12*0.5f)-rotVarVec.
x*t19*t31-rotVarVec.
z*t31*
t33;
  1745         P[2][0] = t35-rotY*rotVarVec.
y*t3*t11*t30*0.5f+rotX*rotVarVec.
x*t3*t11*(t15-
t23)*0.5f;
  1746         P[2][1] = rotVarVec.
z*(t16-
t25)*(t17-t36)-rotVarVec.
x*t19*t28-rotVarVec.
y*t28*
t30;
  1747         P[2][2] = rotVarVec.
y*(t30*
t30)+rotVarVec.
x*(t37*t37)+rotVarVec.
z*(t38*
t38);
  1749         P[3][0] = rotZ*rotVarVec.
z*t3*t11*t33*(-0.5f)+rotX*rotVarVec.
x*t3*t11*(t16-t25)*0.5f+rotY*rotVarVec.
y*t3*t11*(t17-
t36)*0.5f;
  1750         P[3][1] = rotVarVec.
y*(t15-
t23)*(t17-t36)-rotVarVec.
x*t19*t31-rotVarVec.
z*t31*
t33;
  1752         P[3][3] = rotVarVec.
z*(t33*
t33)+rotVarVec.
x*(t43*t43)+rotVarVec.
y*(t44*
t44);
  1761         P[1][1] = 0.25f*rotVarVec.
x;
  1766         P[2][2] = 0.25f*rotVarVec.
y;
  1771         P[3][3] = 0.25f*rotVarVec.
z;
  1776 #endif // HAL_CPU_CLASS 
float norm(const T first, const U second, const Params... parameters)
void to_euler(float &roll, float &pitch, float &yaw) const
Quaternion calcQuatAndFieldStates(float roll, float pitch)
void zeroCols(Matrix24 &covMat, uint8_t first, uint8_t last)
AP_Float _magEarthProcessNoise
AP_HAL::Util::perf_counter_t _perf_test[10]
void StoreOutputReset(void)
uint32_t lastPosPassTime_ms
uint32_t terrainHgtStableSet_ms
uint32_t gndHgtValidTime_ms
virtual perf_counter_t perf_alloc(perf_counter_type t, const char *name)
uint32_t prevFlowFuseTime_ms
float get_declination() const
uint32_t storedRngMeasTime_ms[2][3]
bool optFlowFusionDelayed
bool magStateInitComplete
uint32_t lastInnovPassTime_ms
Quaternion quatAtLastMagReset
obs_ring_buffer_t< vel_odm_elements > storedBodyOdm
bool setup_core(NavEKF3 *_frontend, uint8_t _imu_index, uint8_t _core_index)
void quat2Tbn(Matrix3f &Tbn, const Quaternion &quat) const
uint32_t secondLastGpsTime_ms
bool expectGndEffectTouchdown
float maxOffsetStateChangeFilt
imu_elements imuDataDelayed
float beaconVehiclePosErr
AP_Float _wndVarHgtRateScale
Interface definition for the various Ground Control System. 
float storedRngMeas[2][3]
obs_ring_buffer_t< mag_elements > storedMag
void SelectBodyOdomFusion()
obs_ring_buffer_t< tas_elements > storedTAS
uint8_t lastRngBcnChecked
bool assume_zero_sideslip(void) const
const struct Location & get_home(void) const
vel_odm_elements bodyOdmDataDelayed
uint32_t wheelOdmMeasTime_ms
void correctDeltaAngle(Vector3f &delAng, float delAngDT)
imu_ring_buffer_t< output_elements > storedOutput
float InitialGyroBiasUncertainty(void) const
AP_Float _gpsHorizPosNoise
void StoreQuatReset(void)
void SelectVelPosFusion()
void from_euler(float roll, float pitch, float yaw)
const uint16_t tasDelay_ms
uint32_t timeTasReceived_ms
uint32_t lastVelPassTime_ms
void from_euler(float roll, float pitch, float yaw)
bool rngBcnAlignmentStarted
uint32_t lastTasPassTime_ms
uint32_t lastPosResetD_ms
uint32_t lastbodyVelPassTime_ms
bool sideSlipFusionDelayed
void UpdateStrapdownEquationsNED()
struct NavEKF3_core::@153 faultStatus
uint32_t lastRngBcnPassTime_ms
float posDownAtLastMagReset
uint32_t flowValidMeaTime_ms
obs_ring_buffer_t< rng_bcn_elements > storedRangeBeacon
uint32_t framesSincePredict
uint32_t timeAtLastAuxEKF_ms
int32_t lat
param 3 - Latitude * 10**7 
static auto MAX(const A &one, const B &two) -> decltype(one > two ? one :two)
AP_HAL::Util::perf_counter_t _perf_UpdateFilter
struct NavEKF3_core::state_elements & stateStruct
bool inhibitDelAngBiasStates
void zeroRows(Matrix24 &covMat, uint8_t first, uint8_t last)
const uint8_t sensorIntervalMin_ms
uint8_t get_primary(void) const
const Compass * get_compass() const
static AP_InertialSensor ins
bool use_compass(void) const
uint8_t localFilterTimeStep_ms
const Vector3f & get_accel(uint8_t i) const
void controlFilterModes()
uint32_t lastDecayTime_ms
bool InitialiseFilterBootstrap(void)
Vector3f beaconVehiclePosNED
output_elements outputDataNew
uint32_t lastInitFailReport_ms
Vector3f calcRotVecVariances(void)
void StoreQuatRotate(Quaternion deltaQuat)
float bcnPosDownOffsetMax
AP_Float _windVelProcessNoise
float wrap_PI(const T radian)
float minOffsetStateChangeFilt
Vector2f lastKnownPositionNE
AidingMode PV_AidingModePrev
uint32_t lastHgtPassTime_ms
bool expectGndEffectTakeoff
Vector3f delAngCorrection
uint8_t obs_buffer_length
float receiverPosCov[3][3]
void InitialiseVariables()
AP_Float _magBodyProcessNoise
float yawInnovAtLastMagReset
Vector3f outputTrackError
uint32_t lastTimeGpsReceived_ms
uint32_t lastPreAlignGpsCheckTime_ms
void UpdateFilter(bool predict)
obs_ring_buffer_t< gps_elements > storedGPS
resetDataSource velResetSource
virtual void perf_end(perf_counter_t h)
uint32_t lastRngMeasTime_ms
obs_ring_buffer_t< range_elements > storedRange
uint8_t rngBcnFuseDataReportIndex
void updateFilterStatus(void)
#define ACCEL_BIAS_LIM_SCALER
AP_HAL::Util::perf_counter_t _perf_CovariancePrediction
bool magStateResetRequest
uint64_t imuSampleTime_us
void rotation_matrix(Matrix3f &m) const
resetDataSource posResetSource
struct Location gpsloc_prev
void send_text(MAV_SEVERITY severity, const char *fmt,...)
uint32_t magYawResetTimer_ms
void from_axis_angle(Vector3f v)
vel_odm_elements bodyOdmDataNew
struct NavEKF3_core::@152 rngBcnFusionReport[10]
uint16_t get_sample_rate(void) const
imu_ring_buffer_t< imu_elements > storedIMU
const AP_HAL::HAL & hal
-*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- 
Vector3< T > mul_transpose(const Vector3< T > &v) const
bool inhibitDelVelBiasStates
output_elements outputDataDelayed
uint32_t lastGpsCheckTime_ms
struct nav_filter_status::@138 flags
rng_bcn_elements rngBcnDataNew
mag_elements magDataDelayed
obs_ring_buffer_t< of_elements > storedOF
struct NavEKF3_core::@154 gpsCheckStatus
float constrain_float(const float amt, const float low, const float high)
const uint16_t magDelay_ms
uint32_t lastMagUpdate_us
uint32_t touchdownExpectedSet_ms
virtual void perf_begin(perf_counter_t h)
static constexpr float radians(float deg)
void calcEarthRateNED(Vector3f &omega, int32_t latitude) const
void CovariancePrediction()
struct NavEKF3_core::@155 mag_state
obs_ring_buffer_t< wheel_odm_elements > storedWheelOdm
bool rngBcnAlignmentCompleted
uint32_t rngValidMeaTime_ms
uint32_t takeoffExpectedSet_ms
uint32_t rngBcnLast3DmeasTime_ms
uint32_t lastSynthYawTime_ms
void alignMagStateDeclination()
Quaternion inverse(void) const
float innovationIncrement
AP_InertialSensor & ins()
void rotate(const Vector3f &v)
void ConstrainVariances()
bool airspeed_sensor_enabled(void) const
imu_elements imuDataDownSampledNew
uint32_t firstInitTime_ms
AP_Float _accelBiasProcessNoise
Receiving valid messages and 3D lock. 
AP_Float _gpsVertVelNoise
uint32_t lastGpsAidBadTime_ms
uint32_t lastBaroReceived_ms
bool finalInflightMagInit
bool bodyVelFusionDelayed
uint32_t bodyOdmMeasTime_ms
AP_Float _gyroBiasProcessNoise
float get_loop_delta_t(void) const
nav_filter_status filterStatus
void correctDeltaVelocity(Vector3f &delVel, float delVelDT)
obs_ring_buffer_t< baro_elements > storedBaro
rng_bcn_elements rngBcnDataDelayed
uint32_t imuSampleTime_ms
void SelectRngBcnFusion()
uint32_t prevBodyVelFuseTime_ms
bool finalInflightYawInit
uint32_t lastTimeRngBcn_ms[10]
uint32_t lastGpsVelFail_ms
uint32_t lastHealthyMagTime_ms
void initialiseQuatCovariances(Vector3f &rotVarVec)
uint8_t imu_buffer_length
AP_Float _gpsHorizVelNoise
uint32_t lastInnovFailTime_ms
float bcnPosDownOffsetMin