! { dg-do compile }
! { dg-additional-options "-ffast-math -ftree-vectorize" }
      SUBROUTINE SOBOOK(MHSO,HSOMAX,MS)
      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
      COMPLEX*16 HSOT,HSO1(2)
      PARAMETER (ZERO=0.0D+00,TWO=2.0D+00)
      DIMENSION SOL1(3,2),SOL2(3)
      CALL FOO(SOL1,SOL2)
      SQRT2=SQRT(TWO)
      DO IH=1,MHSO
        IF(MS.EQ.0) THEN
          HSO1(IH) =  DCMPLX(ZERO,-SOL1(3,IH))
          HSOT =  DCMPLX(ZERO,-SOL2(3))
        ELSE
          HSO1(IH) =  DCMPLX(-SOL1(2,IH),SOL1(1,IH))/SQRT2
          HSOT =  DCMPLX(-SOL2(2),SOL2(1))/SQRT2
        ENDIF
      ENDDO
      HSOT=HSOT+HSO1(1)
      HSOMAX=MAX(HSOMAX,ABS(HSOT))
      RETURN
      END