!reset test_comma
!if comma iswordof $(replyoption$i)
  !if , isin $(reply$i)
   test_comma=yes
   reply$i=!replace internal , by . in $(reply$i)
   replyGood$i=!replace internal . by ,  in $(replygood$i)
  !endif
!endif

reply$i=!rawmath $(reply$i)
reply$i=!trim $(reply$i)
parleft=(
parright=)
dd=$(reply$i)
c=!char 1 of $dd
!if $c=+ or $c=-
 dd=!char 2 to -1 of $dd
!endif
test=!exec pari $(reply$i)
testimg=!exec pari abs(imag($test))
!if $computeanswer!=yes
  !if ( ^ isin $dd or ( . isin $dd and / isin $dd ) )
    test=NaN nocomputecomplex
    !exit
  !endif
  testI=!text select iI in $dd
  !if ii isin $testI
   test=NaN nocomputecomplex
   !exit
  !endif
  !if i notin $testI
    !if ( + isin $dd or - isin $dd or * isin $dd)
        test=NaN nocomputecomplex
        !exit
    !endif
  !endif
  testpm=!text select +- in $dd
  testpm=!charcnt $testpm
  !if $testpm > 1
    test=NaN nocomputecomplex
    !exit
  !endif
  teststar=!text select * in $dd
  teststar=!charcnt $teststar
  !if $teststar > 2 or ($testimg=1 and $teststar=1) or ($teststar=2 and $parleft notin $dd)
    test=NaN nocomputecomplex
    !exit
  !endif
  dd=!nospace $dd

  !if $parright isin $dd and $parright/ notin $dd
!! a  supprimer et remplacer par $parright notin $dd
    test=NaN nocomputecomplex
  !endif
!endif


m_reply$i=!mathsubst I=i in $(m_reply$i)

!if $test_comma=yes
  m_reply$i=!replace internal . by , in $(m_reply$i)
  reply_$i= $(m_reply$i)
!endif

!if $wims_read_parm=nocompare
 !if NaN isin $test
  !exit
 !endif
 !exit
!endif
good=!exec pari $(replygood$i)
!if NaN isin $good or Inf isin $good or $good=$empty
 Test=bad $i
 !exit
!endif

!if NaN isin $test
 !exit
!endif

!default precision=1000
tot=!exec pari max(abs($test)+abs($good),1/$precision)

diff=!exec pari abs($test-($good))
!if NaN isin $tot $diff or Inf isin $tot $diff
 test=NaN
 !exit
!endif
!if absolute iswordof $(replyoption$i)
 !if $diff < 1/$precision
   diareply$i=good
   !advance freegot
 !else
   !if $diff < 10/$precision
     !advance precgood
      precreply$i=yes
   !endif
   diareply$i=bad
 !endif
!else
 !if $precision*$diff<=$tot
   diareply$i=good
   !advance freegot
 !else
  !if sqrt($precision)*$diff<=$tot
   !advance precgood
   precreply$i=yes
  !endif
  diareply$i=bad
 !endif
!endif
