Remove references to the obsolete srrat function
[maxima.git] / share / hompack / fortran / otputp.f
blob595344327ce9b85a48a77985170e063fc16b9711
1 SUBROUTINE OTPUTP(N,NUMPAT,CL,FACV,CLX,X,XNP1)
3 C OTPUTP POSTPROCESSES THE ENDPOINTS OF THE PATHS, UNTRANSFORMING
4 C AND UNSCALING THEM.
6 C ON INPUT:
8 C N IS THE NUMBER OF EQUATIONS AND VARIABLES.
10 C NUMPAT IS THE CURRENT PATH NUMBER.
12 C CL IS THE ARRAY THAT DEFINES THE PROJECTIVE TRANSFORMATION.
14 C FACV CONTAINS THE VARIABLE SCALING FACTORS.
16 C X IS THE ENDPOINT OF THE PATH, POSSIBLY TRANSFORMED AND/OR SCALED
17 C DEPENDING ON THE POLSYS INPUT FLAG IFLG1.
19 C CLX IS WORKSPACE.
21 C ON OUTPUT:
23 C N, NUMPAT, CL, AND FACV ARE UNCHANGED.
25 C X IS THE UNTRANSFORMED AND UNSCALED VERSION OF X.
27 C XNP1 IS THE PROJECTIVE COORDINATE "X(N+1)". XNP1 EQUALS UNITY IF
28 C THE PROJECTIVE TRANSFORMATION IS NOT SPECIFIED.
30 C DECLARATIONS OF INPUT, WORKSPACE, AND OUTPUT:
31 INTEGER N,NUMPAT
32 DOUBLE PRECISION CL,FACV,CLX,X,XNP1
33 DIMENSION CL(2,N+1),FACV(N),CLX(2,N),X(2,N),XNP1(2)
35 C DECLARATION OF VARIABLES
36 INTEGER I,IERR,J,NP1
37 DOUBLE PRECISION D1MACH,FAC,TEMP
38 DIMENSION TEMP(2)
40 NP1=N+1
41 C COMPUTE XNP1
42 DO 1 J=1,N
43 CALL MULP(CL(1,J),X(1,J),CLX(1,J))
44 1 CONTINUE
45 DO 2 I=1,2
46 XNP1(I)=CL(I,NP1)
47 DO 2 J=1,N
48 XNP1(I) = XNP1(I) + CLX(I,J)
49 2 CONTINUE
50 C UNTRANSFORM VARIABLES
51 DO 10 J=1,N
52 CALL DIVP(X(1,J),XNP1,TEMP,IERR)
53 X(1,J)=TEMP(1)
54 X(2,J)=TEMP(2)
55 10 CONTINUE
56 C UNSCALE VARIABLES
57 TEMP(1)=D1MACH(2)
58 DO 30 J=1,N
59 FAC=10.**FACV(J)
60 DO 30 I=1,2
61 IF( (ABS(X(I,J))/TEMP(1))*FAC .LT. 1.0 ) X(I,J)=FAC*X(I,J)
62 30 CONTINUE
63 RETURN
64 END