438 real dx3 = dx*dx*dx - dx;
439 real dx3dx = 3*dx*dx - 1.0;
441 real dxi3 = dxi*dxi*dxi - dxi;
442 real dxi3dx = -3*dxi*dxi + 1.0;
452 real dy3 = dy*dy*dy-dy;
453 real dy3dy = 3*dy*dy - 1.0;
455 real dyi3 = dyi*dyi*dyi - dyi;
456 real dyi3dy = -3*dyi*dyi + 1.0;
466 real dz3 = dz*dz*dz - dz;
467 real dz3dz = 3*dz*dz - 1.0;
469 real dzi3 = dzi*dzi*dzi - dzi;
470 real dzi3dz = -3*dzi*dzi + 1.0;
476 int n = i_z*str->
n_y*str->
n_x*8 + i_y*str->
n_x*8 + i_x*8;
479 int z1 = str->
n_y*str->
n_x*8;
485 x1 = -(str->
n_x-1)*x1;
491 y1 = -(str->
n_y-1)*y1;
497 z1 = -(str->
n_z-1)*z1;
510 real c0000 = str->
c[n+0];
511 real c0001 = str->
c[n+1];
512 real c0002 = str->
c[n+2];
513 real c0003 = str->
c[n+3];
514 real c0004 = str->
c[n+4];
515 real c0005 = str->
c[n+5];
516 real c0006 = str->
c[n+6];
517 real c0007 = str->
c[n+7];
519 real c0010 = str->
c[n+x1+0];
520 real c0011 = str->
c[n+x1+1];
521 real c0012 = str->
c[n+x1+2];
522 real c0013 = str->
c[n+x1+3];
523 real c0014 = str->
c[n+x1+4];
524 real c0015 = str->
c[n+x1+5];
525 real c0016 = str->
c[n+x1+6];
526 real c0017 = str->
c[n+x1+7];
528 real c0100 = str->
c[n+y1+0];
529 real c0101 = str->
c[n+y1+1];
530 real c0102 = str->
c[n+y1+2];
531 real c0103 = str->
c[n+y1+3];
532 real c0104 = str->
c[n+y1+4];
533 real c0105 = str->
c[n+y1+5];
534 real c0106 = str->
c[n+y1+6];
535 real c0107 = str->
c[n+y1+7];
537 real c1000 = str->
c[n+z1+0];
538 real c1001 = str->
c[n+z1+1];
539 real c1002 = str->
c[n+z1+2];
540 real c1003 = str->
c[n+z1+3];
541 real c1004 = str->
c[n+z1+4];
542 real c1005 = str->
c[n+z1+5];
543 real c1006 = str->
c[n+z1+6];
544 real c1007 = str->
c[n+z1+7];
546 real c0110 = str->
c[n+y1+x1+0];
547 real c0111 = str->
c[n+y1+x1+1];
548 real c0112 = str->
c[n+y1+x1+2];
549 real c0113 = str->
c[n+y1+x1+3];
550 real c0114 = str->
c[n+y1+x1+4];
551 real c0115 = str->
c[n+y1+x1+5];
552 real c0116 = str->
c[n+y1+x1+6];
553 real c0117 = str->
c[n+y1+x1+7];
555 real c1010 = str->
c[n+z1+x1+0];
556 real c1011 = str->
c[n+z1+x1+1];
557 real c1012 = str->
c[n+z1+x1+2];
558 real c1013 = str->
c[n+z1+x1+3];
559 real c1014 = str->
c[n+z1+x1+4];
560 real c1015 = str->
c[n+z1+x1+5];
561 real c1016 = str->
c[n+z1+x1+6];
562 real c1017 = str->
c[n+z1+x1+7];
564 real c1100 = str->
c[n+z1+y1+0];
565 real c1101 = str->
c[n+z1+y1+1];
566 real c1102 = str->
c[n+z1+y1+2];
567 real c1103 = str->
c[n+z1+y1+3];
568 real c1104 = str->
c[n+z1+y1+4];
569 real c1105 = str->
c[n+z1+y1+5];
570 real c1106 = str->
c[n+z1+y1+6];
571 real c1107 = str->
c[n+z1+y1+7];
573 real c1110 = str->
c[n+z1+y1+x1+0];
574 real c1111 = str->
c[n+z1+y1+x1+1];
575 real c1112 = str->
c[n+z1+y1+x1+2];
576 real c1113 = str->
c[n+z1+y1+x1+3];
577 real c1114 = str->
c[n+z1+y1+x1+4];
578 real c1115 = str->
c[n+z1+y1+x1+5];
579 real c1116 = str->
c[n+z1+y1+x1+6];
580 real c1117 = str->
c[n+z1+y1+x1+7];
587 dxi*(dyi*c0000+dy*c0100)
588 +dx*(dyi*c0010+dy*c0110))
590 dxi*(dyi*c1000+dy*c1100)
591 +dx*(dyi*c1010+dy*c1110)))
594 dxi3*(dyi*c0001+dy*c0101)
595 +dx3*(dyi*c0011+dy*c0111))
597 dxi3*(dyi*c1001+dy*c1101)
598 +dx3*(dyi*c1011+dy*c1111)))
601 dxi*(dyi3*c0002+dy3*c0102)
602 +dx*(dyi3*c0012+dy3*c0112))
604 dxi*(dyi3*c1002+dy3*c1102)
605 +dx*(dyi3*c1012+dy3*c1112)))
608 dxi*(dyi*c0003+dy*c0103)
609 +dx*(dyi*c0013+dy*c0113))
611 dxi*(dyi*c1003+dy*c1103)
612 +dx*(dyi*c1013+dy*c1113)))
615 dxi3*(dyi3*c0004+dy3*c0104)
616 +dx3*(dyi3*c0014+dy3*c0114))
618 dxi3*(dyi3*c1004+dy3*c1104)
619 +dx3*(dyi3*c1014+dy3*c1114)))
622 dxi3*(dyi*c0005+dy*c0105)
623 +dx3*(dyi*c0015+dy*c0115))
625 dxi3*(dyi*c1005+dy*c1105)
626 +dx3*(dyi*c1015+dy*c1115)))
629 dxi*(dyi3*c0006+dy3*c0106)
630 +dx*(dyi3*c0016+dy3*c0116))
632 dxi*(dyi3*c1006+dy3*c1106)
633 +dx*(dyi3*c1016+dy3*c1116)))
636 dxi3*(dyi3*c0007+dy3*c0107)
637 +dx3*(dyi3*c0017+dy3*c0117))
639 dxi3*(dyi3*c1007+dy3*c1107)
640 +dx3*(dyi3*c1017+dy3*c1117)));
645 -(dyi*c0000+dy*c0100)
646 +(dyi*c0010+dy*c0110))
648 -(dyi*c1000+dy*c1100)
649 +(dyi*c1010+dy*c1110)))
652 dxi3dx*(dyi*c0001+dy*c0101)
653 +dx3dx*(dyi*c0011+dy*c0111))
655 dxi3dx*(dyi*c1001 +dy*c1101)
656 +dx3dx*(dyi*c1011+dy*c1111)))
659 -(dyi3*c0002+dy3*c0102)
660 +(dyi3*c0012+dy3*c0112))
662 -(dyi3*c1002+dy3*c1102)
663 +(dyi3*c1012+dy3*c1112)))
666 -(dyi*c0003+dy*c0103)
667 +(dyi*c0013+dy*c0113))
669 -(dyi*c1003+dy*c1103)
670 +(dyi*c1013+dy*c1113)))
673 dxi3dx*(dyi3*c0004+dy3*c0104)
674 +dx3dx*(dyi3*c0014+dy3*c0114))
676 dxi3dx*(dyi3*c1004+dy3*c1104)
677 +dx3dx*(dyi3*c1014+dy3*c1114)))
680 dxi3dx*(dyi*c0005+dy*c0105)
681 +dx3dx*(dyi*c0015+dy*c0115))
683 dxi3dx*(dyi*c1005+dy*c1105)
684 +dx3dx*(dyi*c1015+dy*c1115)))
687 -(dyi3*c0006+dy3*c0106)
688 +(dyi3*c0016+dy3*c0116))
690 -(dyi3*c1006+dy3*c1106)
691 +(dyi3*c1016+dy3*c1116)))
694 dxi3dx*(dyi3*c0007+dy3*c0107)
695 +dx3dx*(dyi3*c0017+dy3*c0117))
697 dxi3dx*(dyi3*c1007+dy3*c1107)
698 +dx3dx*(dyi3*c1017+dy3*c1117)));
714 +dx3*(-c1011+c1111)))
717 dxi*(dyi3dy*c0002+dy3dy*c0102)
718 +dx*(dyi3dy*c0012+dy3dy*c0112))
720 dxi*(dyi3dy*c1002+dy3dy*c1102)
721 +dx*(dyi3dy*c1012+dy3dy*c1112)))
731 dxi3*(dyi3dy*c0004+dy3dy*c0104)
732 +dx3*(dyi3dy*c0014+dy3dy*c0114))
734 dxi3*(dyi3dy*c1004+dy3dy*c1104)
735 +dx3*(dyi3dy*c1014+dy3dy*c1114)))
742 +dx3*(-c1015+c1115)))
745 dxi*(dyi3dy*c0006+dy3dy*c0106)
746 +dx*(dyi3dy*c0016+dy3dy*c0116))
748 dxi*(dyi3dy*c1006+dy3dy*c1106)
749 +dx*(dyi3dy*c1016+dy3dy*c1116)))
752 dxi3*(dyi3dy*c0007+dy3dy*c0107)
753 +dx3*(dyi3dy*c0017+dy3dy*c0117))
755 dxi3*(dyi3dy*c1007+dy3dy*c1107)
756 +dx3*(dyi3dy*c1017+dy3dy*c1117)));
761 dxi*(dyi*c0000+dy*c0100)
762 +dx*(dyi*c0010+dy*c0110))
764 dxi*(dyi*c1000+dy*c1100)
765 +dx*(dyi*c1010+dy*c1110)))
768 dxi3*(dyi*c0001+dy*c0101)
769 +dx3*(dyi*c0011+dy*c0111))
771 dxi3*(dyi*c1001+dy*c1101)
772 +dx3*(dyi*c1011+dy*c1111)))
775 dxi*(dyi3*c0002+dy3*c0102)
776 +dx*(dyi3*c0012+dy3*c0112))
778 dxi*(dyi3*c1002+dy3*c1102)
779 +dx*(dyi3*c1012+dy3*c1112)))
782 dxi*(dyi*c0003+dy*c0103)
783 +dx*(dyi*c0013+dy*c0113))
785 dxi*(dyi*c1003+dy*c1103)
786 +dx*(dyi*c1013+dy*c1113)))
789 dxi3*(dyi3*c0004+dy3*c0104)
790 +dx3*(dyi3*c0014+dy3*c0114))
792 dxi3*(dyi3*c1004+dy3*c1104)
793 +dx3*(dyi3*c1014+dy3*c1114)))
796 dxi3*(dyi*c0005+dy*c0105)
797 +dx3*(dyi*c0015+dy*c0115))
799 dxi3*(dyi*c1005+dy*c1105)
800 +dx3*(dyi*c1015+dy*c1115)))
803 dxi*(dyi3*c0006+dy3*c0106)
804 +dx*(dyi3*c0016+dy3*c0116))
806 dxi*(dyi3*c1006+dy3*c1106)
807 +dx*(dyi3*c1016+dy3*c1116)))
810 dxi3*(dyi3*c0007+dy3*c0107)
811 +dx3*(dyi3*c0017+dy3*c0117))
813 dxi3*(dyi3*c1007+dy3*c1107)
814 +dx3*(dyi3*c1017+dy3*c1117)));
819 dxi*(dyi*c0001+dy*c0101)
820 +dx*(dyi*c0011+dy*c0111))
822 dxi*(dyi*c1001+dy*c1101)
823 +dx*(dyi*c1011+dy*c1111)))
826 dxi*(dyi3*c0004+dy3*c0104)
827 +dx*(dyi3*c0014+dy3*c0114))
829 dxi*(dyi3*c1004+dy3*c1104)
830 +dx*(dyi3*c1014+dy3*c1114)))
833 dxi*(dyi*c0005+dy*c0105)
834 +dx*(dyi*c0015+dy*c0115))
836 dxi*(dyi*c1005+dy*c1105)
837 +dx*(dyi*c1015+dy*c1115)))
840 dxi*(dyi3*c0007+dy3*c0107)
841 +dx*(dyi3*c0017+dy3*c0117))
843 dxi*(dyi3*c1007+dy3*c1107)
844 +dx*(dyi3*c1017+dy3*c1117)));
849 dxi*(dyi*c0002+dy*c0102)
850 +dx*(dyi*c0012+dy*c0112))
852 dxi*(dyi*c1002+dy*c1102)
853 +dx*(dyi*c1012+dy*c1112)))
856 dxi3*(dyi*c0004+dy*c0104)
857 +dx3*(dyi*c0014+dy*c0114))
859 dxi3*(dyi*c1004+dy*c1104)
860 +dx3*(dyi*c1014+dy*c1114)))
863 dxi*(dyi*c0006+dy*c0106)
864 +dx*(dyi*c0016+dy*c0116))
866 dxi*(dyi*c1006+dy*c1106)
867 +dx*(dyi*c1016+dy*c1116)))
870 dxi3*(dyi*c0007+dy*c0107)
871 +dx3*(dyi*c0017+dy*c0117))
873 dxi3*(dyi*c1007+dy*c1107)
874 +dx3*(dyi*c1017+dy*c1117)));
879 dxi*(dyi*c0003+dy*c0103)
880 +dx*(dyi*c0013+dy*c0113))
882 dxi*(dyi*c1003+dy*c1103)
883 +dx*(dyi*c1013+dy*c1113)))
886 dxi3*(dyi*c0005+dy*c0105)
887 +dx3*(dyi*c0015+dy*c0115))
889 dxi3*(dyi*c1005+dy*c1105)
890 +dx3*(dyi*c1015+dy*c1115)))
893 dxi*(dyi3*c0006+dy3*c0106)
894 +dx*(dyi3*c0016+dy3*c0116))
896 dxi*(dyi3*c1006+dy3*c1106)
897 +dx*(dyi3*c1016+dy3*c1116)))
900 dxi3*(dyi3*c0007+dy3*c0107)
901 +dx3*(dyi3*c0017+dy3*c0117))
903 dxi3*(dyi3*c1007+dy3*c1107)
904 +dx3*(dyi3*c1017+dy3*c1117)));
916 dxi3dx*(-c0001+c0101)
917 +dx3dx*(-c0011+c0111))
919 dxi3dx*(-c1001+c1101)
920 +dx3dx*(-c1011+c1111)))
923 -(dyi3dy*c0002+dy3dy*c0102)
924 +(dyi3dy*c0012+dy3dy*c0112))
926 -(dyi3dy*c1002+dy3dy*c1102)
927 +(dyi3dy*c1012+dy3dy*c1112)))
937 dxi3dx*(dyi3dy*c0004+dy3dy*c0104)
938 +dx3dx*(dyi3dy*c0014+dy3dy*c0114))
940 dxi3dx*(dyi3dy*c1004+dy3dy*c1104)
941 +dx3dx*(dyi3dy*c1014+dy3dy*c1114)))
944 dxi3dx*(-c0005+c0105)
945 +dx3dx*(-c0015+c0115))
947 dxi3dx*(-c1005+c1105)
948 +dx3dx*(-c1015+c1115)))
951 -(dyi3dy*c0006+dy3dy*c0106)
952 +(dyi3dy*c0016+dy3dy*c0116))
954 -(dyi3dy*c1006+dy3dy*c1106)
955 +(dyi3dy*c1016+dy3dy*c1116)))
958 dxi3dx*(dyi3dy*c0007+dy3dy*c0107)
959 +dx3dx*(dyi3dy*c0017+dy3dy*c0117))
961 dxi3dx*(dyi3dy*c1007+dy3dy*c1107)
962 +dx3dx*(dyi3dy*c1017+dy3dy*c1117)));
968 -(dyi*c0010+dy*c0110))
971 -(dyi*c1010+dy*c1110)))
974 dxi3dx*(dyi*c0001+dy*c0101)
975 +dx3dx*(dyi*c0011+dy*c0111))
977 dxi3dx*(dyi*c1001+dy*c1101)
978 +dx3dx*(dyi*c1011+dy*c1111)))
981 (dyi3*c0002+dy3*c0102)
982 -(dyi3*c0012+dy3*c0112))
984 (dyi3*c1002+dy3*c1102)
985 -(dyi3*c1012+dy3*c1112)))
988 -(dyi*c0003+dy*c0103)
989 +(dyi*c0013+dy*c0113))
991 -(dyi*c1003+dy*c1103)
992 +(dyi*c1013+dy*c1113)))
995 dxi3dx*(dyi3*c0004+dy3*c0104)
996 +dx3dx*(dyi3*c0014+dy3*c0114))
998 dxi3dx*(dyi3*c1004+dy3*c1104)
999 +dx3dx*(dyi3*c1014+dy3*c1114)))
1002 dxi3dx*(dyi*c0005+dy*c0105)
1003 +dx3dx*(dyi*c0015+dy*c0115))
1005 dxi3dx*(dyi*c1005+dy*c1105)
1006 +dx3dx*(dyi*c1015+dy*c1115)))
1009 -(dyi3*c0006+dy3*c0106)
1010 +(dyi3*c0016+dy3*c0116))
1012 -(dyi3*c1006+dy3*c1106)
1013 +(dyi3*c1016+dy3*c1116)))
1016 dxi3dx*(dyi3*c0007+dy3*c0107)
1017 +dx3dx*(dyi3*c0017+dy3*c0117))
1019 dxi3dx*(dyi3*c1007+dy3*c1107)
1020 +dx3dx*(dyi3*c1017+dy3*c1117)));
1036 +dx3*(c1011-c1111)))
1039 dxi*(dyi3dy*c0002+dy3dy*c0102)
1040 +dx*(dyi3dy*c0012+dy3dy*c0112))
1042 dxi*(dyi3dy*c1002+dy3dy*c1102)
1043 +dx*(dyi3dy*c1012+dy3dy*c1112)))
1050 +dx*(-c1013+c1113)))
1053 dxi3*(dyi3dy*c0004+dy3dy*c0104)
1054 +dx3*(dyi3dy*c0014+dy3dy*c0114))
1056 dxi3*(dyi3dy*c1004+dy3dy*c1104)
1057 +dx3*(dyi3dy*c1014+dy3dy*c1114)))
1061 +dx3*(-c0015+c0115))
1064 +dx3*(-c1015+c1115)))
1067 dxi*(dyi3dy*c0006+dy3dy*c0106)
1068 +dx*(dyi3dy*c0016+dy3dy*c0116))
1070 dxi*(dyi3dy*c1006+dy3dy*c1106)
1071 +dx*(dyi3dy*c1016+dy3dy*c1116)))
1074 dxi3*(dyi3dy*c0007+dy3dy*c0107)
1075 +dx3*(dyi3dy*c0017+dy3dy*c0117))
1077 dxi3*(dyi3dy*c1007+dy3dy*c1107)
1078 +dx3*(dyi3dy*c1017+dy3dy*c1117)));