anchor.diff:  
   
   allocate(WORK(1))
  -call cgeev(JOBL,JOBR,N,A,N,W,VL,LDVL,VR,LDVR,WORK,-1,INFO)
  -if(info.eq.0) then
  -LWORK=int(WORK(1))
  -deallocate(WORK)
  -allocate(WORK(LWORK))
  -else
  -return
  -end if
  -
  -call cgeev(JOBL,JOBR,N,A,N,W,VL,LDVL,VR,LDVR,WORK,LWORK,INFO)
  +call zgeev(JOBL,JOBR,N,A,N,W,VL,LDVL,VR,LDVR,WORK,-1,RWORK,INFO)
  +if(info.eq.0) then
  +LWORK=int(WORK(1))
  +deallocate(WORK)
  +allocate(WORK(LWORK))
  +else
  +return
  +end if
  +
  +call zgeev(JOBL,JOBR,N,A,N,W,VL,LDVL,VR,LDVR,WORK,LWORK,RWORK,INFO)
   
   if(JOBL.eq.'V') then
   A=VL
  
positive.code: end if
  
  if(JOBR.eq.'V') then
  LDVR=N; allocate(VL(LDVR,N))
  else
  LDVR=1; allocate(VR(1,1))
  end if
  
negative.code: 
  allocate(WORK(1))
  call zheev(JOBZ,UPLO,N,A,N,W,WORK,-1,RWORK,INFO)
  if(info.eq.0) then
  LWORK=int(WORK(1))
  if(LWORK.le.0) then
  