C C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CTITLESAUNWRP -- PHASE UNWRAP IN RADIANS 00010001 CA AUTHOR B. S. BOK 00030001 CA DESIGNER B. S. BOK 00040001 CA LANGUAGE FORTRAN 00050001 CA SYSTEM IBM / CRAY 00060004 CA WRITTEN AUGUST, 1990 00070001 C REVISED 12-21-91 JJC - MODIFIED TO MEET EDP STANDARDS. C CA 00150001 CA CALL SAUNWRP (PHZ, LDIM) 00160004 CA 00180000 CA IN/OUT PHZ = PHASE SPECTRUM R4 00190003 CA INPUT LDIM = DIMENSION OF PHZ I4 00200003 CA 00350000 CA THIS ROUTINE PERFORM THE PHASE UNWRAP IN RADIANS 00360001 CA 00510000 C************************************************************** C * C SUBROUTINES AND FUNCTIONS CALLED FROM THIS ROUTINE * C * C NO SUBROUTINES OR FUNCTIONS CALLED FROM THIS PROGRAM UNIT * C * C************************************************************** C SUBROUTINE SAUNWRP (PHZ,LDIM) C IMPLICIT INTEGER (A-Z) C DIMENSION PHZ(1) C REAL PHZ REAL PI REAL PI2 C C PI = 3.141592654 PI2 = PI * 2. C C---- FIRST POINT C INT = IFIX ( PHZ(1) / PI ) IF (INT .LT. 0) INT = (INT - 1 ) / 2 IF (INT .GT. 0) INT = (INT + 1 ) / 2 PHZ(1) = PHZ(1) - INT * PI2 IF (LDIM .LE. 1) RETURN C C---- ALL OTHER POINTS C DO 140 I = 2, LDIM INT = IFIX ( (PHZ(I) - PHZ(I - 1) ) / PI ) IF (INT .GT. 0) GO TO 100 IF (INT .EQ. 0) GO TO 120 INT = (INT - 1 ) / 2 PHZ(I) = PHZ(I) - INT * PI2 GO TO 120 100 CONTINUE INT = (INT + 1 ) / 2 PHZ(I) = PHZ(I) - INT * PI2 120 CONTINUE 140 CONTINUE C RETURN END