#! /bin/sh /usr/share/dpatch/dpatch-run
## 115-rsrtnt64-goto-outer-block.dpatch by <kmccarty@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Patch from Patrice Dumas <pertusus@free.fr> to fix spaghetti code in
## DP: rsrtnt64.F that breaks linking step on Itanium.
## DP: Also, following Harald Vogt, change indicators of line continuation
## DP: from "1" -> "&" to be compatible with gfortran.
@DPATCH@
diff -urNad cernlib-2005.dfsg~/src/mathlib/gen/b/rsrtnt64.F cernlib-2005.dfsg/src/mathlib/gen/b/rsrtnt64.F
--- cernlib-2005.dfsg~/src/mathlib/gen/b/rsrtnt64.F 1996-04-01 10:01:51.000000000 -0500
+++ cernlib-2005.dfsg/src/mathlib/gen/b/rsrtnt64.F 2006-09-06 14:12:38.087369193 -0400
@@ -53,7 +53,7 @@
IF(LLL) GO TO 9
LLL=K .GE. 0 .OR. K .EQ. -1 .AND. U*V .NE. 0
- 1 .OR. K .LE. -2 .AND. U*V .GT. 0
+ & .OR. K .LE. -2 .AND. U*V .GT. 0
IF(.NOT.LLL) GO TO 9
DELTA=4*A*C-B**2
@@ -117,9 +117,16 @@
ENDIF
ELSE
IF(N .EQ. 1) THEN
- ASSIGN 11 TO JMP1
- GO TO 10
- 11 IF(K .EQ. 0) THEN
+ C2=2*C
+ IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN
+ H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/
+ & (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C)
+ ELSEIF(DELTA .EQ. 0) THEN
+ H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C)
+ ELSE
+ H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C)
+ ENDIF
+ IF(K .EQ. 0) THEN
H=H
ELSEIF(K .EQ. 1) THEN
H=(RT(V)-RT(U)-HF*B*H)/C
@@ -134,7 +141,7 @@
G2=A*C
H3=G1-16*G2
H=(((H1*V-H2)*V+H3)*RT(V)-((H1*U-H2)*U+H3)*RT(U)-
- 1 (HF*G1-18*G2)*B*H)/(24*C**3)
+ & (HF*G1-18*G2)*B*H)/(24*C**3)
ENDIF
ELSE
IF(DELTA .EQ. 0) THEN
@@ -174,21 +181,35 @@
H=2*((H1+B*U)/RT(U)-(H1+B*V)/RT(V))/DELTA
LB1=11
ELSEIF(K .EQ. 2) THEN
- ASSIGN 12 TO JMP1
- GO TO 10
- 12 H1=DELTA-B**2
+ C2=2*C
+ IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN
+ H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/
+ & (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C)
+ ELSEIF(DELTA .EQ. 0) THEN
+ H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C)
+ ELSE
+ H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C)
+ ENDIF
+ H1=DELTA-B**2
H2=2*A*B
H=(((H1*U-H2)/RT(U)-(H1*V-H2)/RT(V))/DELTA+H)/C
ELSEIF(K .EQ. 3) THEN
- ASSIGN 13 TO JMP1
- GO TO 10
- 13 H1=C*DELTA
+ C2=2*C
+ IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN
+ H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/
+ & (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C)
+ ELSEIF(DELTA .EQ. 0) THEN
+ H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C)
+ ELSE
+ H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C)
+ ENDIF
+ H1=C*DELTA
G1=A*C
G2=3*B**2
H2=B*(10*G1-G2)
H3=A*(8*G1-G2)
H=(2*(((H1*V+H2)*V+H3)/RT(V)-((H1*U+H2)*U+H3)/RT(U))/
- 1 DELTA-3*B*H)/(2*C**2)
+ & DELTA-3*B*H)/(2*C**2)
ENDIF
ENDIF
ENDIF
@@ -217,9 +238,33 @@
ENDIF
ELSE
IF(N .EQ. 1) THEN
- ASSIGN 21 TO JMP2
- GO TO 20
- 21 IF(K .EQ. -1) THEN
+ IF(C .EQ. 0) THEN
+ IF(B .EQ. 0) THEN
+ H=LOG(ABS(V/U))/SQRT(A)
+ ELSE
+ IF(A .LT. 0) THEN
+ H=2*(ATAN(SQRT(-(A+B*V)/A))-ATAN(SQRT(-(A+B*U)/A)))/SQRT(-A)
+ ELSE
+ WA=SQRT(A)
+ WU=SQRT(A+B*U)
+ WV=SQRT(A+B*V)
+ H=LOG(ABS((WV-WA)*(WU+WA)/((WV+WA)*(WU-WA))))/WA
+ ENDIF
+ ENDIF
+ ELSE
+ A2=2*A
+ IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. A .GT. 0) THEN
+ H=LOG(ABS((-2*SQRT(A*P(V))+B*V+A2)*U/
+ & ((-2*SQRT(A*P(U))+B*U+A2)*V)))/SQRT(A)
+ ELSEIF(DELTA .EQ. 0) THEN
+ H=LOG(ABS((B*U+A2)*V/((B*V+A2)*U)))/SQRT(A)
+ IF(U*V .GT. 0) H=SIGN(H,U)
+ ELSE
+ H=(ASIN((B*V+A2)/(V*RTD))-ASIN((B*U+A2)/(U*RTD)))/SQRT(-A)
+ IF(U .LT. 0 .AND. V .LT. 0) H=-H
+ ENDIF
+ ENDIF
+ IF(K .EQ. -1) THEN
H=H
ELSEIF(K .EQ. -2) THEN
H=(RT(U)/U-RT(V)/V-HF*B*H)/A
@@ -227,7 +272,7 @@
H1=6*B
H2=4*A
H=((H1*V-H2)*RT(V)/V**2-(H1*U-H2)*RT(U)/U**2+
- 1 (3*B**2-H2*C)*H)/(8*A**2)
+ & (3*B**2-H2*C)*H)/(8*A**2)
ENDIF
ELSE
IF(DELTA .EQ. 0) THEN
@@ -257,9 +302,33 @@
IF(U. LT. -X0) H=-H
ENDIF
ELSE
- ASSIGN 22 TO JMP2
- GO TO 20
- 22 IF(K .EQ. -1) THEN
+ IF(C .EQ. 0) THEN
+ IF(B .EQ. 0) THEN
+ H=LOG(ABS(V/U))/SQRT(A)
+ ELSE
+ IF(A .LT. 0) THEN
+ H=2*(ATAN(SQRT(-(A+B*V)/A))-ATAN(SQRT(-(A+B*U)/A)))/SQRT(-A)
+ ELSE
+ WA=SQRT(A)
+ WU=SQRT(A+B*U)
+ WV=SQRT(A+B*V)
+ H=LOG(ABS((WV-WA)*(WU+WA)/((WV+WA)*(WU-WA))))/WA
+ ENDIF
+ ENDIF
+ ELSE
+ A2=2*A
+ IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. A .GT. 0) THEN
+ H=LOG(ABS((-2*SQRT(A*P(V))+B*V+A2)*U/
+ & ((-2*SQRT(A*P(U))+B*U+A2)*V)))/SQRT(A)
+ ELSEIF(DELTA .EQ. 0) THEN
+ H=LOG(ABS((B*U+A2)*V/((B*V+A2)*U)))/SQRT(A)
+ IF(U*V .GT. 0) H=SIGN(H,U)
+ ELSE
+ H=(ASIN((B*V+A2)/(V*RTD))-ASIN((B*U+A2)/(U*RTD)))/SQRT(-A)
+ IF(U .LT. 0 .AND. V .LT. 0) H=-H
+ ENDIF
+ ENDIF
+ IF(K .EQ. -1) THEN
H1=B*C
H2=B**2-2*A*C
H=(2*((H1*U+H2)/RT(U)-(H1*V+H2)/RT(V))/DELTA+H)/A
@@ -270,7 +339,7 @@
H2=(G1-10*G2)*B
H3=A*DELTA
H=(((H1*V+H2-H3/V)/RT(V)-(H1*U+H2-H3/U)/RT(U))/DELTA
- 1 -3*HF*B*H)/A**2
+ & -3*HF*B*H)/A**2
ELSEIF(K .EQ. -3) THEN
G1=A*DELTA
G2=A*C
@@ -281,52 +350,13 @@
H3=(G4-62*G2)*G3+24*G2**2
H4=B*C*(G4-52*G2)
H=((((H2-H1/V)/V-H3-H4*V)/RT(V)-((H2-H1/U)/U-H3-H4*U)/RT(U))
- 1 /DELTA+HF*(G4-12*G2)*H)/(4*A**3)
+ & /DELTA+HF*(G4-12*G2)*H)/(4*A**3)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
- GO TO 9
- 10 C2=2*C
- IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. C .GT. 0) THEN
- H=LOG(ABS((2*SQRT(C*P(V))+C2*V+B)/
- 1 (2*SQRT(C*P(U))+C2*U+B)))/SQRT(C)
- ELSEIF(DELTA .EQ. 0) THEN
- H=ABS(LOG(ABS((C2*V+B)/(C2*U+B))))/SQRT(C)
- ELSE
- H=(ASIN((C2*U+B)/RTD)-ASIN((C2*V+B)/RTD))/SQRT(-C)
- ENDIF
- GO TO JMP1, (11,12,13)
-
- 20 IF(C .EQ. 0) THEN
- IF(B .EQ. 0) THEN
- H=LOG(ABS(V/U))/SQRT(A)
- ELSE
- IF(A .LT. 0) THEN
- H=2*(ATAN(SQRT(-(A+B*V)/A))-ATAN(SQRT(-(A+B*U)/A)))/SQRT(-A)
- ELSE
- WA=SQRT(A)
- WU=SQRT(A+B*U)
- WV=SQRT(A+B*V)
- H=LOG(ABS((WV-WA)*(WU+WA)/((WV+WA)*(WU-WA))))/WA
- ENDIF
- ENDIF
- ELSE
- A2=2*A
- IF(DELTA .GT. 0 .OR. DELTA .LT. 0 .AND. A .GT. 0) THEN
- H=LOG(ABS((-2*SQRT(A*P(V))+B*V+A2)*U/
- 1 ((-2*SQRT(A*P(U))+B*U+A2)*V)))/SQRT(A)
- ELSEIF(DELTA .EQ. 0) THEN
- H=LOG(ABS((B*U+A2)*V/((B*V+A2)*U)))/SQRT(A)
- IF(U*V .GT. 0) H=SIGN(H,U)
- ELSE
- H=(ASIN((B*V+A2)/(V*RTD))-ASIN((B*U+A2)/(U*RTD)))/SQRT(-A)
- IF(U .LT. 0 .AND. V .LT. 0) H=-H
- ENDIF
- ENDIF
- GO TO JMP2, (21,22)
9 RES=SIGN(R1,V1-U1)*H
LRL=LLL