File: complex

package info (click to toggle)
wims 2%3A4.29a%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 185,704 kB
  • sloc: xml: 366,687; javascript: 120,570; ansic: 62,341; java: 62,170; sh: 7,744; perl: 3,937; yacc: 3,217; cpp: 1,915; lex: 1,805; makefile: 1,084; lisp: 914; pascal: 601; python: 520; php: 318; asm: 7
file content (125 lines) | stat: -rw-r--r-- 2,792 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
option:absolute comma j precision symbols=" "
!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
  !else
    replyGood$i=$(replygood$i)
  !endif
!endif
!if j iswordof $(replyoption$i) and j isvariableof $(reply$i)
  replyGood$i=!mathsubst i=j in $(replyGood$i)
!endif
reply$i=!rawmath $(reply$i)
reply$i=!trim $(reply$i)
parleft=(
parright=)
dd=$(reply$i)
!if j iswordof $(replyoption$i)
  dd=!mathsubst j=i in $dd
!endif
test=!exec pari $dd
c=!char 1 of $dd
!if $c=+ or $c=-
  dd=!char 2 to -1 of $dd
!endif
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 j iswordof $(replyoption$i)
  m_reply$i=!mathsubst i=j in $(m_reply$i)
!endif
!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=$(replygood$i)
!if j iswordof $(replyoption$i)
  good=!mathsubst j=i in $(replygood$i)
!endif
good=!exec pari $good
!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 or $tot=$empty or $diff=$empty
  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