* * $Id: splan3.F,v 1.1.1.1 1996/04/01 15:02:26 mclareni Exp $ * * $Log: splan3.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:26 mclareni * Mathlib gen * * #include "gen/pilot.h" SUBROUTINE SPLAN3(B3,X,X4,X5,X6,X7,X8,ND) #include "gen/imp64.inc" DIMENSION B3(7) ************************************************************************ * NORBAS, VERSION: 15.03.1993 ************************************************************************ * * TEST-ROUTINE SPLAN3 * FOR COMPUTING 1-DIMENSIONAL B-SPLINES OF DEGREE K = 3 * BY MEANS OF ANALYTIC FORMULAE * ************************************************************************ DO 1 I = 1,7 1 B3(I)=0 IF(ND .LT. -1 .OR. ND .GT. 3) RETURN IF(X .LT. X4 .OR. X .GT. X8) RETURN IF(ND .EQ. 0) THEN IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=((X5-X)/X5)**3 B3(2)=(X*(((X-X6)*X5+(X-X5)*X6)*(X-X6)*X5+(X-X5)**2*X6**2))/ 1 (X6**2*X5**3) B3(3)=(-X**2*(X*X7*X6+X*X7*X5+X*X6*X5-3*X7*X6*X5))/ 1 (X7*(X6*X5)**2) B3(4)=X**3/(X7*X6*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=(X6-X)**3/(X6**2*(X6-X5)) B3(3)=(X*(X-X6)**2*(X7-X5)*X7+((X-X7)*(X-X5)*X6+(X-X6)* 1 (X7-X5)*X)*(X-X7)*X6)/((X7-X5)*(X6-X5)*X7*X6**2) B3(4)=(-(((X-X7)*(X5-1)*X-(X-X5)*(X-1)*X7)*(X-X5)*X6+ 1 (X-X6)*(X7-X5)*(X5-1)*X**2))/((X7-X5)*(X6-X5)*(X5-1)*X7*X6) B3(5)=(X5-X)**3/((X7-X5)*(X6-X5)*(X5-1)) B3(6)=0 B3(7)=0 ELSE IF(X6 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=(X7-X)**3/(X7*(X7-X6)*(X7-X5)) B3(4)=(((X-X7)*(X5-1)*X-(X-X5)*(X-1)*X7)*(X-X7)*(X6-1)+ 1 (X-X6)*(X-1)**2*(X7-X5)*X7)/ 2 ((X7-X6)*(X7-X5)*(X6-1)*(X5-1)*X7) B3(5)=(((X-X7)*(X-X5)*(X6-1)-(X-X6)*(X-1)*(X7-X5))*(X-X5) 1 *(X6-1)-(X-X6)**2*(X-1)*(X7-X5)*(X5-1))/ 2 ((X7-X6)*(X7-X5)*(X6-1)**2*(X5-1)) B3(6)=(X-X6)**3/((X7-X6)*(X6-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=(X-1)**3/((X7-1)*(X6-1)*(X5-1)) B3(5)=(-(((X-X6)*(X5-1)+(X-X5)*(X6-1))*(X7-1)+(X-X7)* 1 (X6-1)*(X5-1))*(X-1)**2)/((X7-1)**2*(X6-1)**2*(X5-1)) B3(6)=((((X-X7)*(X6-1)+(X-X6)*(X7-1))*(X-X6)*(X7-1)+ 1 (X-X7)**2*(X6-1)**2)*(X-1))/((X7-1)**3*(X6-1)**2) B3(7)=((X7-X)/(X7-1))**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=((X5-X)/X5)**3 B3(2)=(3*X*(X-X5)**2)/X5**3 B3(3)=(-X**2*((X-X7)*X5+2*(X-X5)*X7))/(X7*X5**3) B3(4)=X**3/(X7*X5**2) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=(X7-X)**3/(X7*(X7-X5)**2) B3(4)=(((X-X7)*(X5-1)*X-(X-X5)*(X-1)*X7)*(X-X7)*(X5-1)+ 1 (X-X5)*(X-1)**2*(X7-X5)*X7)/((X7-X5)**2*(X5-1)**2*X7) B3(5)=(((X-X7)*(X5-1)-2*(X-1)*(X7-X5))*(X-X5)**2)/ 1 ((X7-X5)*(X5-1))**2 B3(6)=(X-X5)**3/((X7-X5)*(X5-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=(X-1)**3/((X7-1)*(X5-1)**2) B3(5)=(-((X-X7)*(X5-1)+2*(X-X5)*(X7-1))*(X-1)**2)/ 1 ((X7-1)*(X5-1))**2 B3(6)=((((X-X7)*(X5-1)+(X-X5)*(X7-1))*(X-X5)*(X7-1)+ 1 (X-X7)**2*(X5-1)**2)*(X-1))/((X7-1)**3*(X5-1)**2) B3(7)=((X7-X)/(X7-1))**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=((X5-X)/X5)**3 B3(2)=(X*(((X-X6)*X5+(X-X5)*X6)*(X-X6)*X5+(X-X5)**2*X6**2))/ 1 (X6**2*X5**3) B3(3)=(-X**2*(2*(X-X6)*X5+(X-X5)*X6))/(X6*X5)**2 B3(4)=X**3/(X6**2*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=(X6-X)**3/(X6**2*(X6-X5)) B3(3)=(((X-X5)*X6+2*(X6-X5)*X)*(X-X6)**2)/((X6-X5)*X6)**2 B3(4)=(-(((X-X6)*(X5-1)*X-(X-X5)*(X-1)*X6)*(X-X5)*X6+ 1 (X-X6)*(X6-X5)*(X5-1)*X**2))/((X6-X5)**2*(X5-1)*X6**2) B3(5)=(X5-X)**3/((X6-X5)**2*(X5-1)) B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=(X-1)**3/((X6-1)**2*(X5-1)) B3(5)=(-(2*(X-X6)*(X5-1)+(X-X5)*(X6-1))*(X-1)**2)/ 1 ((X6-1)**3*(X5-1)) B3(6)=3*(X-1)*(X6-X)**2/(X6-1)**3 B3(7)=((X6-X)/(X6-1))**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=((X5-X)/X5)**3 B3(2)=3*X*(X5-X)**2/X5**3 B3(3)=3*X**2*(X5-X)/X5**3 B3(4)=(X/X5)**3 B3(5)=0 B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=((X-1)/(X5-1))**3 B3(5)=3*(X-1)**2*(X5-X)/(X5-1)**3 B3(6)=3*(X-1)*(X5-X)**2/(X5-1)**3 B3(7)=((X5-X)/(X5-1))**3 END IF END IF ELSE IF(ND .EQ. 1) THEN IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-3*(X-X5)**2/X5**3 B3(2)=3*(X**2*(X6**2+X6*X5+X5**2)-2*X*(X6**2*X5+X6*X5**2) . +X6**2*X5**2)/(X6**2*X5**3) B3(3)=-3*(X*(X7*X6+X7*X5+X6*X5)-2*X7*X6*X5)*X/(X7*X6**2*X5**2) B3(4)=3*X**2/(X7*X6*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=-3*(X-X6)**2/((X6-X5)*X6**2) B3(3)=3*(X**2*(X7**2+X7*X6-X7*X5+X6**2-X6*X5)+ . 2*X*(-X7**2*X6-X7*X6**2+X7*X6*X5)+X7**2*X6**2)/ . ((X7-X5)*(X6-X5)*X7*X6**2) B3(4)=3*(X**2*(X7*X6-X7*X5+X7-X6*X5+X6+X5**2-X5) . -2*X*X7*X6+X7*X6*X5)/((X7-X5)*(X6-X5)*(X5-1)*X7*X6) B3(5)=-3*(X-X5)**2/((X7-X5)*(X6-X5)*(X5-1)) B3(6)=0 B3(7)=0 ELSE IF(X6 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=-3*(X-X7)**2/((X7-X6)*(X7-X5)*X7) B3(4)=3*(X**2*(X7**2-X7*X6-X7*X5+X7+X6*X5-X6-X5+1)+ . 2*X*(-X7**2+X7*X6+X7*X5-X7)+X7**2-X7*X6*X5)/ . ((X7-X6)*(X7-X5)*(X6-1)*(X5-1)*X7) B3(5)=(((X-X7)*(X-X5)*(X6-1)-(X-X6)*(X-1)*(X7-X5))* . (X6-1)-2*(X*X7-X*X6-X*X5+X-X7+X6*X5)*(X-X5)*(X6-1)- . (X-X6)**2*(X7-X5)*(X5-1)-2*(X-X6)*(X-1)*(X7-X5)*(X5-1))/ . ((X7-X6)*(X7-X5)*(X6-1)**2*(X5-1)) B3(6)=3*(X-X6)**2/((X7-X6)*(X6-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=3*(X-1)**2/((X7-1)*(X6-1)*(X5-1)) B3(5)=-3*(X*(X7*X6+X7*X5-2*X7+X6*X5-2*X6-2*X5+3) . -2*X7*X6*X5+X7*X6+X7*X5+X6*X5-1)*(X-1)/ . ((X7-1)**2*(X6-1)**2*(X5-1)) B3(6)=3*(X**2*(X7**2+X7*X6-3*X7+X6**2-3*X6+3)+ . X*(-2*X7**2*X6-2*X7*X6**2+6*X7*X6-2) . +X7**2*X6**2-3*X7*X6+X7+X6)/((X7-1)**3*(X6-1)**2) B3(7)=-3*(X-X7)**2/(X7-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-3*(X-X5)**2/X5**3 B3(2)=3*(3*X-X5)*(X-X5)/X5**3 B3(3)=(3*X**2*(-2*X7-X5)+6*X*X7*X5)/(X7*X5**3) B3(4)=3*X**2/(X7*X5**2) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=-3*(X-X7)**2/((X7-X5)**2*X7) B3(4)=3*(X**2*(X7**2-2*X7*X5+X7+X5**2-2*X5+1)+ . X*(-2*X7**2+4*X7*X5-2*X7)+X7**2-X7*X5**2)/ . ((X7-X5)**2*(X5-1)**2*X7) B3(5)=-3*(X*(2*X7-3*X5+1)-2*X7+X5**2+X5)*(X-X5)/ . ((X7-X5)**2*(X5-1)**2) B3(6)=3*(X-X5)**2/((X7-X5)*(X5-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=3*(X-1)**2/((X7-1)*(X5-1)**2) B3(5)=-3*(X*(2*X7+X5-3)-2*X7*X5+X5+1)*(X-1)/ . ((X7-1)**2*(X5-1)**2) B3(6)=3*(X**2*(X7**2+X7*X5-3*X7+X5**2-3*X5+3)+ . X*(-2*X7**2*X5-2*X7*X5**2+6*X7*X5-2) . +X7**2*X5**2-3*X7*X5+X7+X5)/((X7-1)**3*(X5-1)**2) B3(7)=-3*(X-X7)**2/(X7-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-3*(X-X5)**2/X5**3 B3(2)=(3*X**2*(X6**2+X6*X5+X5**2)-(6*X*X6*X5)*(X6+X5)+3 . *X6**2*X5**2)/(X6**2*X5**3) B3(3)=(3*X**2*(-X6-2*X5)+6*X*X6*X5)/(X6**2*X5**2) B3(4)=3*X**2/(X6**2*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=-3*(X-X6)**2/((X6-X5)*X6**2) B3(3)=3*(X*(3*X6-2*X5)-X6**2)*(X-X6)/((X6-X5)**2*X6**2) B3(4)=3*(X**2*(X6**2-2*X6*X5+2*X6+X5**2-X5) . -2*X*X6**2+X6**2*X5)/((X6-X5)**2*(X5-1)*X6**2) B3(5)=-3*(X-X5)**2/((X6-X5)**2*(X5-1)) B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=3*(X-1)**2/((X6-1)**2*(X5-1)) B3(5)=-3*(X*(X6+2*X5-3)-2*X6*X5+X6+1)*(X-1)/ . ((X6-1)**3*(X5-1)) B3(6)=3*(3*X-X6-2)*(X-X6)/(X6-1)**3 B3(7)=-3*(X-X6)**2/(X6-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-3*(X-X5)**2/X5**3 B3(2)=3*(3*X-X5)*(X-X5)/X5**3 B3(3)=-3*(2*(X-X5)+X)*X/X5**3 B3(4)=3*X**2/X5**3 B3(5)=0 B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=3*(X-1)**2/(X5-1)**3 B3(5)=-3*(2*(X-X5)+(X-1))*(X-1)/(X5-1)**3 B3(6)=3*(3*X-X5-2)*(X-X5)/(X5-1)**3 B3(7)=-3*(X-X5)**2/(X5-1)**3 END IF END IF ELSE IF(ND .EQ. 2) THEN IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=6*(-X+X5)/X5**3 B3(2)=(6*X*(X6**2+X6*X5+X5**2)-(6*X6*X5)*(X6+X5))/(X6**2*X5**3) B3(3)=(-6*X*(X7*X6+X7*X5+X6*X5)+6*X7*X6*X5)/(X7*X6**2*X5**2) B3(4)=6*X/(X7*X6*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=-6*(X-X6)/((X6-X5)*X6**2) B3(3)=6*(((X6-X5)*X7+X7**2+X6**2-X6*X5)*X-(X6-X5)*X7* . X6-X7**2*X6)/((X7-X5)*(X6-X5)*X7*X6**2) B3(4)=6*(((X6-X5+1)*X7-(X5-1)*X6+X5**2-X5)*X-X7*X6)/ . ((X7-X5)*(X6-X5)*(X5-1)*X7*X6) B3(5)=-6*(X-X5)/((X7-X5)*(X6-X5)*(X5-1)) B3(6)=0 B3(7)=0 ELSE IF(X6 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=-6*(X-X7)/((X7-X6)*(X7-X5)*X7) B3(4)=-6*(((X6+X5-1)*X7-(X5-1)*X6-X7**2+X5-1)*X- . (X6+X5-1)*X7+X7**2)/((X7-X6)*(X7-X5)*(X6-1)*(X5-1)*X7) B3(5)=-6*(X*(X7*X6+X7*X5-2*X7-X6**2-X6*X5+2*X6-X5**2+2*X5-1) . -X7*X6*X5+X7+X6**2*X5+X6*X5**2-2*X6*X5)/ . ((X7-X6)*(X7-X5)*(X6-1)**2*(X5-1)) B3(6)=6*(X-X6)/((X7-X6)*(X6-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6*(X-1)/((X7-1)*(X6-1)*(X5-1)) B3(5)=-6*(X*(X7*X6+X7*X5-2*X7+X6*X5-2*X6-2*X5+3) . -X7*X6*X5+X7+X6+X5-2)/((X7-1)**2*(X6-1)**2*(X5-1)) B3(6)=6*(((X6-3)*X7+X7**2+X6**2-3*X6+3)*X-(X6-3)* . X7*X6-X7**2*X6-1)/((X7-1)**3*(X6-1)**2) B3(7)=-6*(X-X7)/(X7-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=6*(-X+X5)/X5**3 B3(2)=(18*X-12*X5)/X5**3 B3(3)=(6*X*(-2*X7-X5)+6*X7*X5)/(X7*X5**3) B3(4)=6*X/(X7*X5**2) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=-6*(X-X7)/((X7-X5)**2*X7) B3(4)=-6*(((2*X5-1)*X7-X7**2-X5**2+2*X5-1)*X- . (2*X5-1)*X7+X7**2)/((X7-X5)**2*(X5-1)**2*X7) B3(5)=-6*(X*(2*X7-3*X5+1)-X7*X5-X7+2*X5**2)/ . ((X7-X5)**2*(X5-1)**2) B3(6)=6*(X-X5)/((X7-X5)*(X5-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6*(X-1)/((X7-1)*(X5-1)**2) B3(5)=-6*(X*(2*X7+X5-3)-X7*X5-X7+2)/((X7-1)**2*(X5-1)**2) B3(6)=6*(((X5-3)*X7+X7**2+X5**2-3*X5+3)*X-(X5-3)* . X7*X5-X7**2*X5-1)/((X7-1)**3*(X5-1)**2) B3(7)=-6*(X-X7)/(X7-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=6*(-X+X5)/X5**3 B3(2)=(6*X*(X6**2+X6*X5+X5**2)-(6*X6*X5)*(X6+X5))/(X6**2*X5**3) B3(3)=(6*X*(-X6-2*X5)+6*X6*X5)/(X6**2*X5**2) B3(4)=6*X/(X6**2*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=-6*(X-X6)/((X6-X5)*X6**2) B3(3)=6*(3*X*X6-2*X*X5-2*X6**2+X6*X5)/((X6-X5)**2*X6**2) B3(4)=-6*((2*(X5-1)*X6-X6**2-X5**2+X5)*X+X6**2)/ . ((X6-X5)**2*(X5-1)*X6**2) B3(5)=-6*(X-X5)/((X6-X5)**2*(X5-1)) B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6*(X-1)/((X6-1)**2*(X5-1)) B3(5)=-6*(X*(X6+2*X5-3)-X6*X5-X5+2)/((X6-1)**3*(X5-1)) B3(6)=6*(3*X-2*X6-1)/(X6-1)**3 B3(7)=-6*(X-X6)/(X6-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=6*(-X+X5)/X5**3 B3(2)=(18*X-12*X5)/X5**3 B3(3)=(-18*X+6*X5)/X5**3 B3(4)=6*X/X5**3 B3(5)=0 B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6*(X-1)/(X5-1)**3 B3(5)=-6*(3*X-X5-2)/(X5-1)**3 B3(6)=6*(3*X-2*X5-1)/(X5-1)**3 B3(7)=-6*(X-X5)/(X5-1)**3 END IF END IF ELSE IF(ND .EQ. 3) THEN IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-6/X5**3 B3(2)=6*(X6**2+X6*X5+X5**2)/(X6**2*X5**3) B3(3)=-6*(X7*X6+X7*X5+X6*X5)/(X7*X6**2*X5**2) B3(4)=6/(X7*X6*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=-6/(X6**2*(X6-X5)) B3(3)=6*((X6-X5)*X7+X7**2+X6**2-X6*X5)/ . ((X7-X5)*(X6-X5)*X7*X6**2) B3(4)=6*((X6-X5+1)*X7-(X5-1)*X6+X5**2-X5)/ . ((X7-X5)*(X6-X5)*(X5-1)*X7*X6) B3(5)=-6/((X7-X5)*(X6-X5)*(X5-1)) B3(6)=0 B3(7)=0 ELSE IF(X6 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=-6/((X7-X6)*(X7-X5)*X7) B3(4)=-6*((X6+X5-1)*X7-(X5-1)*X6-X7**2+X5-1)/ . ((X7-X6)*(X7-X5)*(X6-1)*(X5-1)*X7) B3(5)=-6*((X6+X5-2)*X7-(X5-2)*X6-X6**2-X5**2+2*X5-1)/ . ((X7-X6)*(X7-X5)*(X6-1)**2*(X5-1)) B3(6)=6/((X7-X6)*(X6-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6/((X7-1)*(X6-1)*(X5-1)) B3(5)=-6*((X6+X5-2)*X7+(X5-2)*X6-2*X5+3)/ . ((X7-1)**2*(X6-1)**2*(X5-1)) B3(6)=6*((X6-3)*X7+X7**2+X6**2-3*X6+3)/((X7-1)**3*(X6-1)**2) B3(7)=-6/(X7-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-6/X5**3 B3(2)=18/X5**3 B3(3)=6*(-2*X7-X5)/(X7*X5**3) B3(4)=6/(X7*X5**2) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X7) THEN B3(1)=0 B3(2)=0 B3(3)=-6/((X7-X5)**2*X7) B3(4)=-6*((2*X5-1)*X7-X7**2-X5**2+2*X5-1)/ . ((X7-X5)**2*(X5-1)**2*X7) B3(5)=-6*(2*X7-3*X5+1)/((X7-X5)**2*(X5-1)**2) B3(6)=6/((X7-X5)*(X5-1)**2) B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6/((X7-1)*(X5-1)**2) B3(5)=-6*(2*X7+X5-3)/((X7-1)**2*(X5-1)**2) B3(6)=6*((X5-3)*X7+X7**2+X5**2-3*X5+3)/((X7-1)**3*(X5-1)**2) B3(7)=-6/(X7-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-6/X5**3 B3(2)=6*(X6**2+X6*X5+X5**2)/(X6**2*X5**3) B3(3)=6*(-X6-2*X5)/(X6**2*X5**2) B3(4)=6/(X6**2*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=0 B3(2)=-6/(X6**2*(X6-X5)) B3(3)=6*(3*X6-2*X5)/((X6-X5)**2*X6**2) B3(4)=-6*(2*(X5-1)*X6-X6**2-X5**2+X5)/((X6-X5)**2*(X5-1)*X6**2) B3(5)=-6/((X6-X5)**2*(X5-1)) B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6/((X6-1)**2*(X5-1)) B3(5)=-6*(X6+2*X5-3)/((X6-1)**3*(X5-1)) B3(6)=18/(X6-1)**3 B3(7)=-6/(X6-1)**3 END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-6/X5**3 B3(2)=18/X5**3 B3(3)=-18/X5**3 B3(4)=6/X5**3 B3(5)=0 B3(6)=0 B3(7)=0 ELSE B3(1)=0 B3(2)=0 B3(3)=0 B3(4)=6/(X5-1)**3 B3(5)=-18/(X5-1)**3 B3(6)=18/(X5-1)**3 B3(7)=-6/(X5-1)**3 END IF END IF ELSE IF(ND .EQ. -1) THEN IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-(X**2-2*X*X5+2*X5**2)*(X-2*X5)*X/(4*X5**3) B3(2)=((X6**2+X6*X5+X5**2)*X**2-4*(X6+X5)*X*X6*X5+ . 6*X6**2*X5**2)*X**2/(4*X6**2*X5**3) B3(3)=-(((X6+X5)*X7+X6*X5)*X-4*X7*X6*X5)*X**3/ . (4*X7*X6**2*X5**2) B3(4)=X**4/(4*X7*X6*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=X5/4 B3(2)=-(X**4-4*X**3*X6+6*X**2*X6**2-4*X*X6**3+X6**3*X5)/ . (4*(X6-X5)*X6**2) B3(3)=(X**4*(X7**2+X7*X6-X7*X5+X6**2-X6*X5)+ . X**3*(-4*X7**2*X6-4*X7*X6**2+4*X7*X6*X5)+ . 6*X**2**X7**2*X6**2-4*X*X7**2*X6**2*X5+X7**2*X6**2*X5**2)/ . (4*(X7-X5)*(X6-X5)*X7*X6**2) B3(4)=(X**4*(X7*X6-X7*X5+X7-X6*X5+X6+X5**2-X5) . -4*X**3*X7*X6+6*X**2*X7*X6*X5-4*X*X7*X6*X5**2+X7*X6*X5**3)/ . (4*(X7-X5)*(X6-X5)*(X5-1)*X7*X6) B3(5)=-(X-X5)**4/(4*(X7-X5)*(X6-X5)*(X5-1)) B3(6)=0 B3(7)=0 ELSE IF(X6 .LE. X .AND. X .LT. X7) THEN B3(1)=X5/4 B3(2)=X6/4 B3(3)=-(X**4-4*X**3*X7+6*X**2*X7**2-4*X*X7**3+X7**3*X6 . +X7**3*X5-X7**2*X6*X5)/(4*(X7-X6)*(X7-X5)*X7) B3(4)=(X**4*(X7**2-X7*X6-X7*X5+X7+X6*X5-X6-X5+1)+ . X**3*(-4*X7**2+4*X7*X6+4*X7*X5-4*X7)+ . X**2*(6*X7**2-6*X7*X6*X5)+ . X*(4*X7**2*X6*X5-4*X7**2*X6-4*X7**2*X5+4*X7*X6*X5)+ . X7**2*(-X6**2*X5+X6**2-X6*X5**2+X6*X5+X5**2)+ . X7*(X6**2*X5**2-X6**2*X5-X6*X5**2))/ . (4*(X7-X6)*(X7-X5)*(X6-1)*(X5-1)*X7) B3(5)=(-(X**4*(X7*X6+X7*X5-2*X7-X6**2-X6*X5 . +2*X6-X5**2+2*X5-1)+ . X**3*(-4*X7*X6*X5+4*X7+4*X6**2*X5+4*X6*X5**2-8*X6*X5)+ . X**2*(12*X7*X6*X5-6*X7*X6-6*X7*X5-6*X6**2*X5**2+6*X6*X5)+ . X*(4*X7*X6**2*X5**2- . 8*X7*X6**2*X5+4*X7*X6**2-8*X7*X6*X5**2+4*X7*X6*X5+ . 4*X7*X5**2+8*X6**2*X5**2-4*X6**2*X5-4*X6*X5**2)+ . X7*(-X6**3*X5**2+2*X6**3*X5-X6**3-X6**2*X5**3 . +2*X6**2*X5**2-X6**2*X5+2*X6*X5**3-X6*X5**2-X5**3)+ . X6**3*(X5**3-2*X5**2+X5)+X6**2*(-2*X5**3+X5**2)+X6*X5**3))/ . (4*(X7-X6)*(X7-X5)*(X6-1)**2*(X5-1)) B3(6)=(X-X6)**4/(4*(X7-X6)*(X6-1)**2) B3(7)=0 ELSE B3(1)=X5/4 B3(2)=X6/4 B3(3)=X7/4 B3(4)=(X**4-4*X**3+6*X**2-4*X+X7*X6*X5-X7*X6-X7*X5+X7- . X6*X5+X6+X5)/(4*(X7-1)*(X6-1)*(X5-1)) B3(5)=(-(X**4*(X7*X6+X7*X5-2*X7+X6*X5-2*X6-2*X5+3)+ . X**3*(-4*X7*X6*X5+4*X7+4*X6+4*X5-8)+ . X**2*(12*X7*X6*X5-6*X7*X6-6*X7*X5-6*X6*X5+6)+ . X*(-12*X7*X6*X5+8*X7*X6+8*X7*X5-4*X7+8*X6*X5-4*X6-4*X5)+ . X7**2*(X6**2*X5**2-2*X6**2*X5+X6**2- . 2*X6*X5**2+4*X6*X5-2*X6+X5**2-2*X5+1)+ . X7*(-2*X6**2*X5**2+4*X6**2*X5-2*X6**2+ . 4*X6*X5**2-4*X6*X5+X6-2*X5**2+X5)+X6**2*X5**2 . -2*X6**2*X5+X6**2-2*X6*X5**2+X6*X5+X5**2))/ . (4*(X7-1)**2*(X6-1)**2*(X5-1)) B3(6)=(X**4*(X7**2+X7*X6-3*X7+X6**2-3*X6+3)+ . X**3*(-4*X7**2*X6-4*X7*X6**2+12*X7*X6-4)+ . X**2*(6*X7**2*X6**2-18*X7*X6+6*X7+6*X6)+ . X*(-12*X7**2*X6**2+12*X7**2*X6-4*X7**2 . +12*X7*X6**2-4*X7*X6-4*X6**2)+ . X7**3*(-X6**3+3*X6**2-3*X6+1)+X7**2*(3*X6**3-3*X6**2+X6)+ . X7*(-3*X6**3+X6**2)+X6**3)/(4*(X7-1)**3*(X6-1)**2) B3(7)=-(X-X7)**4/(4*(X7-1)**3) END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .LT. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-(X**2-2*X*X5+2*X5**2)*(X-2*X5)*X/(4*X5**3) B3(2)=(3*X**2-8*X*X5+6*X5**2)*X**2/(4*X5**3) B3(3)=-((2*X7+X5)*X-4*X7*X5)*X**3/(4*X7*X5**3) B3(4)=X**4/(4*X7*X5**2) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X7) THEN B3(1)=X5/4 B3(2)=X5/4 B3(3)=-(X**2-2*X*X7+2*X7**2-X7*X5)*(X**2-2*X*X7+X7*X5)/ . (4*(X7-X5)**2*X7) B3(4)=(X**4*(X7**2-2*X7*X5+X7+X5**2-2*X5+1)+ . X**3*(-4*X7**2+8*X7*X5-4*X7)+X**2*(6*X7**2-6*X7*X5**2)+ . X*(4*X7**2*X5**2-8*X7**2*X5+4*X7*X5**2)+ . X7**2*(-2*X5**3+3*X5**2)+X7*(X5**4-2*X5**3))/ . (4*(X7-X5)**2*(X5-1)**2*X7) B3(5)=-(2*X*X7-3*X*X5+X+2*X7*X5-4*X7-X5**2+3*X5)*(X-X5)**3/ . (4*(X7-X5)**2*(X5-1)**2) B3(6)=(X-X5)**4/(4*(X7-X5)*(X5-1)**2) B3(7)=0 ELSE B3(1)=X5/4 B3(2)=X5/4 B3(3)=X7/4 B3(4)=(X**4-4*X**3+6*X**2-4*X+X7*(X5**2-2*X5+1)-X5**2+2*X5)/ . (4*(X7-1)*(X5-1)**2) B3(5)=-(X**4*(2*X7+X5-3)+X**3*(-4*X7*X5-4*X7+8)+ . X**2*(12*X7*X5-6*X5-6)+X*(-12*X7*X5+4*X7+8*X5)+ . X7**2*(X5**3-3*X5**2+3*X5-1)+ . X7*(-2*X5**3+6*X5**2-2*X5)+X5**3-3*X5**2)/ . (4*(X7-1)**2*(X5-1)**2) B3(6)=(X**4*(X7**2+X7*X5-3*X7+X5**2-3*X5+3)+ . X**3*(-4*X7**2*X5-4*X7*X5**2+12*X7*X5-4)+ . X**2*(6*X7**2*X5**2-18*X7*X5+6*X7+6*X5)+ . X*(-12*X7**2*X5**2+12*X7**2*X5-4*X7**2 . +12*X7*X5**2-4*X7*X5-4*X5**2)+ . X7**3*(-X5**3+3*X5**2-3*X5+1)+X7**2*(3*X5**3-3*X5**2+X5)+ . X7*(-3**X5**3+X5**2)+X5**3)/(4*(X7-1)**3*(X5-1)**2) B3(7)=-(X-X7)**4/(4*(X7-1)**3) END IF ELSE IF(X4 .LT. X5 .AND. X5 .LT. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-(X**2-2*X*X5+2*X5**2)*(X-2*X5)*X/(4*X5**3) B3(2)=(((X6**2+X6*X5+X5**2)*X**2-4*(X6+X5)*X*X6*X5 . +6*X6**2*X5**2)*X**2)/(4*X6**2*X5**3) B3(3)=-((X6+2*X5)*X-4*X6*X5)*X**3/(4*X6**2*X5**2) B3(4)=X**4/(4*X6**2*X5) B3(5)=0 B3(6)=0 B3(7)=0 ELSE IF(X5 .LE. X .AND. X .LT. X6) THEN B3(1)=X5/4 B3(2)=-(X**4-4*X**3*X6+6*X**2*X6**2-4*X*X6**3+X6**3*X5)/ . (4*(X6-X5)*X6**2) B3(3)=(X**4*(3*X6-2*X5)+X**3*(-8*X6**2+4*X6*X5)+ . 6*X**2*X6**3-4*X*X6**3*X5+X6**3*X5**2)/(4*(X6-X5)**2*X6**2) B3(4)=(X**4*(X6**2-2*X6*X5+2*X6+X5**2-X5) . -4*X**3*X6**2+6*X**2*X6**2*X5-4*X*X6**2*X5**2+X6**2*X5**3)/ . (4*(X6-X5)**2*(X5-1)*X6**2) B3(5)=-(X-X5)**4/(4*(X6-X5)**2*(X5-1)) B3(6)=0 B3(7)=0 ELSE B3(1)=X5/4 B3(2)=X6/4 B3(3)=X6/4 B3(4)=(X**4-4*X**3+6*X**2-4*X+X6**2*X5-X6**2-2*X6*X5+2*X6+X5)/ . (4*(X6-1)**2*(X5-1)) B3(5)=-(X**4*(X6+2*X5-3)+X**3*(-4*X6*X5-4*X5+8)+ . X**2*(12*X6*X5-6*X6-6)+X*(-12*X6*X5+8*X6+4*X5)+ . X6**3*(X5**2-2*X5+1)+ . X6**2*(-3*X5**2+6*X5-3)+3*X6*X5**2-2*X6*X5-X5**2)/ . (4*(X6-1)**3*(X5-1)) B3(6)=(3*X+X6-4)*(X-X6)**3/(4*(X6-1)**3) B3(7)=-(X-X6)**4/(4*(X6-1)**3) END IF ELSE IF(X4 .LT. X5 .AND. X5 .EQ. X6 .AND. X6 .EQ. X7 1 .AND. X7 .LT. X8) THEN IF(X .LT. X5) THEN B3(1)=-(X**2-2*X*X5+2*X5**2)*(X-2*X5)*X/(4*X5**3) B3(2)=(3*X**2-8*X*X5+6*X5**2)*X**2/(4*X5**3) B3(3)=-(3*X-4*X5)*X**3/(4*X5**3) B3(4)=X**4/(4*X5**3) B3(5)=0 B3(6)=0 B3(7)=0 ELSE B3(1)=X5/4 B3(2)=X5/4 B3(3)=X5/4 B3(4)=(X**4-4*X**3+6*X**2-4*X+X5**3-3*X5**2+3*X5)/(4*(X5-1)**3) B3(5)=-(3*X**2+X*(2*X5-8)+X5**2-4*X5+6)*(X-X5)**2/(4*(X5-1)**3) B3(6)=(3*X+X5-4)*(X-X5)**3/(4*(X5-1)**3) B3(7)=-(X-X5)**4/(4*(X5-1)**3) END IF END IF END IF RETURN END