C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                
      SUBROUTINE GSTEP1(IPRE) 
C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                
      IMPLICIT REAL(A-H,O-Y)                                          
      IMPLICIT COMPLEX(Z)                                            
      INCLUDE 'PACVPP' 
      KMAX=KNX+1                                                        
      KMAY=KNY+1                                                        
      KMAZ=KNZ+1                                                        
      IF (IPRE.NE.1) THEN                                               
        KMAX=KNX-1                                                      
        KMAY=KNY-1                                                      
        KMAZ=KNZ-1                                                      
      END IF                                                            
      KMAX2=2*KMAX+1                                                    
      KMAY2=2*KMAY+1                                                    
      KMAZ2=2*KMAZ+1                                                    
C     ## LARGEST WAVE VECTOR; CUT OFF WAVE NUMBER FOR WAVE FUNCTION ##  
      GMAX2=GMAX*2.0D0 
C     //////////////////////////////////////////////                    
C     // GENERATION OF RECIPROCAL LATTICE VECTORS //                    
C     //                          STEP 1          //                    
C     //////////////////////////////////////////////                    
           B1X = RLTV(1,1)                                              
           B1Y = RLTV(2,1)                                              
           B1Z = RLTV(3,1)                                              
                           B2X = RLTV(1,2)                              
                           B2Y = RLTV(2,2)                              
                           B2Z = RLTV(3,2)                              
                                           B3X = RLTV(1,3)              
                                           B3Y = RLTV(2,3)              
                                           B3Z = RLTV(3,3)              
      MM=0                                                              
      DO 20 I1=1,KMAX2
                                      F1=FLOAT(I1-KMAX-1)               
      DO 20 I2=1,KMAY2                                                  
                                      F2=FLOAT(I2-KMAY-1)               
      DO 20 I3=1,KMAZ2                                                  
                                      F3=FLOAT(I3-KMAZ-1)               
         FX=  F1*B1X   +   F2*B2X   +   F3*B3X                          
         FY=  F1*B1Y   +   F2*B2Y   +   F3*B3Y                          
         FZ=  F1*B1Z   +   F2*B2Z   +   F3*B3Z                          
         FR=SQRT(FX*FX+FY*FY+FZ*FZ)                                     
             IF(FR.LE.GMAX2)  THEN
             MM=MM+1                                                    
                 IG1(MM)=I1-KMAX-1                                      
                 IG2(MM)=I2-KMAY-1                                      
                 IG3(MM)=I3-KMAZ-1                                      
                              GX(MM)=FX                                 
                              GY(MM)=FY                                 
                              GZ(MM)=FZ                                 
                              GR(MM)=FR                                 
             END IF 
20    CONTINUE 
      WRITE(6,*) 'NUMBER OF GENERATED VECTORS=',MM                      
      IF(MM.NE.KG) WRITE(6,*) '**WARNING] KG MUST BE EQUAL TO  ',MM     
C-----------------------------------------------------------------------
      KG=MM                                                             
          IXMA=0                                                        
          IYMA=0                                                        
          IZMA=0                                                        
          DO 643 I=1,KG                                                 
          IXMA= MAX(IXMA,ABS(IG1(I)))                                   
          IYMA= MAX(IYMA,ABS(IG2(I)))                                   
          IZMA= MAX(IZMA,ABS(IG3(I)))                                   
643       CONTINUE                                                      
          IXMA = IXMA +1                                                
          IYMA = IYMA +1                                                
          IZMA = IZMA +1                                                
          WRITE(6,*) '**KX1 SHOULD BE =',IXMA                           
          WRITE(6,*) '**KY1 SHOULD BE =',IYMA                           
          WRITE(6,*) '**KZ1 SHOULD BE =',IZMA                           
C                                                                       
          KX1=IXMA                                                      
          KY1=IYMA                                                      
          KZ1=IZMA                                                      
      RETURN                                                            
      END