/* test_4d.c just the test function and derivatives */ /* fourth order and through fourth derivative */ /* u(x,y,z,t) and ux(x,y,z,t) etc. many of them */ /* every possible term with a unique constant coefficient */ double u(double x, double y, double z, double t) { return x*x*x*x + 2.0*x*x*x*y + 3.0*x*x*x*z + 4.0*x*x*x*t + 5.0*x*x*y*y + 6.0*x*x*y*z + 7.0*x*x*y*t + 8.0*x*x*z*z + 9.0*x*x*z*t + 10.0*x*x*t*t + 11.0*x*y*y*y + 12.0*x*y*y*z + 13.0*x*y*y*t + 14.0*x*y*z*z + 15.0*x*y*z*t + 16.0*x*y*t*t + 17.0*x*z*z*z + 18.0*x*z*z*t + 19.0*x*z*t*t + 20.0*x*t*t*t + 21.0*y*y*y*y + 22.0*y*y*y*z + 23.0*y*y*y*t + 24.0*y*y*z*z + 25.0*y*y*z*t + 26.0*y*y*t*t + 27.0*y*z*z*z + 28.0*y*z*z*t + 29.0*y*z*t*t + 30.0*y*t*t*t + 31.0*z*z*z*z + 32.0*z*z*z*t + 33.0*z*z*t*t + 34.0*z*t*t*t + 35.0*t*t*t*t + 36.0*x*x*x + 37.0*x*x*y + 38.0*x*x*z + 39.0*x*x*t + 40.0*x*y*y + 41.0*x*y*z + 42.0*x*y*t + 43.0*x*z*z + 44.0*x*z*t + 45.0*x*t*t + 46.0*y*y*y + 47.0*y*y*z + 48.0*y*y*t + 49.0*y*z*z + 50.0*y*z*t + 51.0*y*t*t + 52.0*z*z*z + 53.0*z*z*t + 54.0*z*t*t + 55.0*t*t*t + 56.0*x*x + 57.0*x*y + 58.0*x*z + 59.0*x*t + 60.0*y*y + 61.0*y*z + 62.0*y*t + 63.0*z*z + 64.0*z*t + 65.0*t*t + 66.0*x + 67.0*y + 68.0*z + 69.0*t + 70.0; } /* now, for testing, the 69 possible non zero derivatives */ double Uxxxx(double x, double y, double z, double t) { return 24.0; } double Uxxxy(double x, double y, double z, double t) { return 12.0; } double Uxxxz(double x, double y, double z, double t) { return 18.0; } double Uxxxt(double x, double y, double z, double t) { return 24.0; } double Uxxyy(double x, double y, double z, double t) { return 20.0; } double Uxxyz(double x, double y, double z, double t) { return 12.0; } double Uxxyt(double x, double y, double z, double t) { return 14.0; } double Uxxzz(double x, double y, double z, double t) { return 32.0; } double Uxxzt(double x, double y, double z, double t) { return 18.0; } double Uxxtt(double x, double y, double z, double t) { return 40.0; } double Uxyyy(double x, double y, double z, double t) { return 66.0; } double Uxyyz(double x, double y, double z, double t) { return 24.0; } double Uxyyt(double x, double y, double z, double t) { return 26.0; } double Uxyzz(double x, double y, double z, double t) { return 28.0; } double Uxyzt(double x, double y, double z, double t) { return 15.0; } double Uxytt(double x, double y, double z, double t) { return 32.0; } double Uxzzz(double x, double y, double z, double t) { return 102.0; } double Uxzzt(double x, double y, double z, double t) { return 36.0; } double Uxztt(double x, double y, double z, double t) { return 38.0; } double Uxttt(double x, double y, double z, double t) { return 120.0; } double Uyyyy(double x, double y, double z, double t) { return 504.0; } double Uyyyz(double x, double y, double z, double t) { return 132.0; } double Uyyyt(double x, double y, double z, double t) { return 138.0; } double Uyyzz(double x, double y, double z, double t) { return 96.0; } double Uyyzt(double x, double y, double z, double t) { return 50.0; } double Uyytt(double x, double y, double z, double t) { return 104.0; } double Uyzzz(double x, double y, double z, double t) { return 162.0; } double Uyzzt(double x, double y, double z, double t) { return 56.0; } double Uyztt(double x, double y, double z, double t) { return 58.0; } double Uyttt(double x, double y, double z, double t) { return 180.0; } double Uzzzz(double x, double y, double z, double t) { return 744.0; } double Uzzzt(double x, double y, double z, double t) { return 192.0; } double Uzztt(double x, double y, double z, double t) { return 132.0; } double Uzttt(double x, double y, double z, double t) { return 204.0; } double Utttt(double x, double y, double z, double t) { return 840.0; } double Uxxx(double x, double y, double z, double t) { return 12.0*y+18.0*z+216.0+24*x+24.0*t; } double Uxxy(double x, double y, double z, double t) { return 12.0*x+14.0*t+74.0+20.0*y+12.0*z; } double Uxxz(double x, double y, double z, double t) { return 18.0*t+18.0*x+76.0+32.0*z+12.0*y; } double Uxxt(double x, double y, double z, double t) { return 18.0*z+78.0+14.0*y+24.0*x+40.0*t; } double Uxyy(double x, double y, double z, double t) { return 26.0*t+80.0+20.0*x+24.0*z+66.0*y; } double Uxyz(double x, double y, double z, double t) { return 41.0+28.0*z+15.0*t+24.0*y+12.0*x; } double Uxyt(double x, double y, double z, double t) { return 26.0*y+42.0+14.0*x+32.0*t+15.0*z; } double Uxzz(double x, double y, double z, double t) { return 86.0+36.0*t+28.0*y+102.0*z+32.0*x; } double Uxzt(double x, double y, double z, double t) { return 38.0*t+18.0*x+36.0*z+44.0+15.0*y; } double Uxtt(double x, double y, double z, double t) { return 38.0*z+120.0*t+90.0+32.0*y+40.0*x; } double Uyyy(double x, double y, double z, double t) { return 138.0*t + 276.0 + 66.0*x + 132.0*z + 504.0*y; } double Uyyz(double x, double y, double z, double t) { return 94.0+96.0*z+50.0*t+132.0*y+24.0*x; } double Uyyt(double x, double y, double z, double t) { return 138.0*y+96.0+26.0*x+104.0*t+50.0*z; } double Uyzz(double x, double y, double z, double t) { return 98.0+56.0*t+96.0*y+162.0*z+28.0*x; } double Uyzt(double x, double y, double z, double t) { return 58.0*t+15.0*x+56.0*z+50.0+50.0*y; } double Uytt(double x, double y, double z, double t) { return 58.0*z+180.0*t+102.0+104.0*y+32.0*x; } double Uzzz(double x, double y, double z, double t) { return 312.0+192.0*t+162.0*y+744.0*z+102.0*x; } double Uzzt(double x, double y, double z, double t) { return 132.0*t+36.0*x+192.0*z+106.0+56.0*y; } double Uztt(double x, double y, double z, double t) { return 132.0*z+204.0*t+108.0+58.0*y+38.0*x; } double Uttt(double x, double y, double z, double t) { return 204.0*z+840.0*t+330.0+180.0*y+120.0*x; } double Uxx(double x, double y, double z, double t) { return 24.0*x*t+14.0*y*t+12.0*y*z+20.0*t*t+78.0*t+12.0*x*y+18.0*x*z+76.0*z+74.0*y+216.0*x+10.0*y*y+16.0*z*z+112.0+18.0*z*t+12*x*x; } double Uxy(double x, double y, double z, double t) { return 80.0*y+12.0*x*z+33.0*y*y+6.0*x*x+74.0*x+15.0*z*t+16.0*t*t+24.0*y*z+26.0*y*t+41.0*z+57.0+42.0*t+20.0*x*y+14.0*z*z+14.0*x*t; } double Uxz(double x, double y, double z, double t) { return 51.0*z*z+12.0*y*y+12.0*x*y+58.0+15.0*y*t+18.0*x*t+86.0*z+44.0*t+76.0*x+9.0*x*x+19.0*t*t+41.0*y+28.0*y*z+36.0*z*t+32.0*x*z; } double Uxt(double x, double y, double z, double t) { return 14.0*x*y+18.0*x*z+40.0*x*t+78.0*x+44.0*z+12.0*x*x+90.0*t+59.0+38.0*z*t+15.0*y*z+42.0*y+18.0*z*z+60.0*t*t+13.0*y*y+32.0*y*t; } double Uyy(double x, double y, double z, double t) { return 26.0*x*t+276.0*y+52.0*t*t+50.0*z*t+24.0*x*z+138.0*y*t+10.0*x*x+80.0*x+48.0*z*z+94.0*z+120.0+96.0*t+252.0*y*y+66.0*x*y+132.0*y*z; } double Uyz(double x, double y, double z, double t) { return 56.0*z*t+24.0*x*y+15.0*x*t+61.0+98.0*z+50.0*t+41.0*x+6.0*x*x+81.0*z*z+66.0*y*y+29.0*t*t+28.0*x*z+94.0*y+50.0*y*t+96.0*y*z; } double Uyt(double x, double y, double z, double t) { return 26.0*x*y+32.0*x*t+42.0*x+15.0*x*z+50.0*z+102.0*t+62.0+58.0*z*t+28.0*z*z+104.0*y*t+7.0*x*x+96.0*y+50.0*y*z+69.0*y*y+90.0*t*t; } double Uzz(double x, double y, double z, double t) { return 126.0+28.0*x*y+102.0*x*z+312.0*z+106.0*t+36.0*x*t+66.0*t*t+86.0*x+192.0*z*t+16.0*x*x+56.0*y*t+98.0*y+162.0*y*z+372.0*z*z+48.0*y*y; } double Uzt(double x, double y, double z, double t) { return 15.0*x*y+44.0*x+58.0*y*t+106.0*z+9.0*x*x+36.0*x*z+132.0*z*t+108.0*t+64.0+102.0*t*t+96.0*z*z+38.0*x*t+56.0*y*z+50.0*y+25.0*y*y; } double Utt(double x, double y, double z, double t) { return 32.0*x*y+90.0*x+180.0*y*t+108.0*z+20.0*x*x+38.0*x*z+204.0*z*t+330.0*t+130.0+420.0*t*t+66.0*z*z+120.0*x*t+58.0*y*z+102.0*y+52.0*y*y; } double Ux(double x, double y, double z, double t) { return 40.0*y*y+14.0*x*y*t+58.0*z+12.0*x*y*z+10.0*x*y*y+16.0*x*z*z+78.0*x*t+43.0*z*z+16.0*y*t*t+44.0*z*t+12.0*x*x*t+18.0*x*z*t+19.0*z*t*t+4*x*x*x+76.0*x*z+74.0*x*y+45.0*t*t+59.0*t+6.0*x*x*y+11.0*y*y*y+20.0*t*t*t+18.0*z*z*t+9.0*x*x*z+20.0*x*t*t+15.0*y*z*t+108.0*x*x+112.0*x+41.0*y*z+14.0*y*z*z+57.0*y+17.0*z*z*z+12.0*y*y*z+42.0*y*t+13.0*y*y*t+66.0; } double Uy(double x, double y, double z, double t) { return 138.0*y*y+26.0*x*y*t+61.0*z+24.0*x*y*z+33.0*x*y*y+14.0*x*z*z+42.0*x*t+49.0*z*z+52.0*y*t*t+50.0*z*t+7.0*x*x*t+15.0*x*z*t+29.0*z*t*t+2.0*x*x*x+41.0*x*z+80.0*x*y+51.0*t*t+62.0*t+10.0*x*x*y+84.0*y*y*y+30.0*t*t*t+28.0*z*z*t+6.0*x*x*z+16.0*x*t*t+50.0*y*z*t+37.0*x*x+57.0*x+94.0*y*z+48.0*y*z*z+120.0*y+27.0*z*z*z+66.0*y*y*z+96.0*y*t+67.0+69.0*y*y*t; } double Uz(double x, double y, double z, double t) { return 47.0*y*y+15.0*x*y*t+126.0*z+28.0*x*y*z+12.0*x*y*y+51.0*x*z*z+44.0*x*t+156.0*z*z+29.0*y*t*t+106.0*z*t+9.0*x*x*t+36.0*x*z*t+66.0*z*t*t+3.0*x*x*x+86.0*x*z+41.0*x*y+54.0*t*t+64.0*t+6.0*x*x*y+22.0*y*y*y+34.0*t*t*t+96.0*z*z*t+16.0*x*x*z+19.0*x*t*t+56.0*y*z*t+38.0*x*x+58.0*x+98.0*y*z+81.0*y*z*z+61.0*y+124.0*z*z*z+48.0*y*y*z+50.0*y*t+68.0+25.0*y*y*t; } double Ut(double x, double y, double z, double t) { return 48.0*y*y+32.0*x*y*t+64.0*z+15.0*x*y*z+13.0*x*y*y+18.0*x*z*z+90.0*x*t+53.0*z*z+90.0*y*t*t+108.0*z*t+20.0*x*x*t+38.0*x*z*t+102.0*z*t*t+4.0*x*x*x+44.0*x*z+42.0*x*y+165.0*t*t+130.0*t+7.0*x*x*y+23.0*y*y*y+140.0*t*t*t+66.0*z*z*t+9.0*x*x*z+60.0*x*t*t+58.0*y*z*t+39.0*x*x+69.0+59.0*x+50.0*y*z+28.0*y*z*z+62.0*y+32.0*z*z*z+25.0*y*y*z+102.0*y*t+52.0*y*y*t; }