File: test_zero_divide.pro

package info (click to toggle)
gnudatalanguage 1.1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 80,368 kB
  • sloc: cpp: 189,797; ansic: 46,721; sh: 677; python: 474; makefile: 146; xml: 69; f90: 28
file content (74 lines) | stat: -rw-r--r-- 2,975 bytes parent folder | download | duplicates (2)
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
; will exercise all divide (and mod) basic operations with 0 generating an FPE.
; should crash if one operation is not protected against integer divide by zero.
PRO TEST_ZERO_DIVIDE
; initialisations: floats at end, since some commands do not accpet floats/doubles/complex
  typecodes=[1,2,3,12,13,14,15,4,5,6,9]
  all_numeric=10
  integers_only=6
  not_complex=8
; test all divide and mod basic functions (there are dozens of specializations) do not crash on integer divide
  simple_various_types=ptrarr(11,/allo)
k=0 & foreach i,typecodes do begin & *simple_various_types[k]=fix(1,type=i) & k++ &end
   ; DIV
   for k=0,integers_only do begin
      simple_var=*simple_various_types[k]
      multiple_var=replicate(simple_var,10)
      zero_var=simple_var*0
      zero_multiple=multiple_var*0
      multiple_var2=replicate(simple_var,20)
                                ; division by zero , no dimension
      b=simple_var/0  ; DivInvSNew
      b=simple_var/zero_var  ; DivInvSNew
      b=multiple_var/0  ; DivS 
      b=multiple_var/zero_var   ; DivS 
      b=multiple_var/zero_multiple  ; Div // e1->N_Elements() <= e2->N_Elements() : res= e1->Div(e2)
      b=multiple_var2/zero_multiple  ; DivInvNew different size
      v=simple_var
      v/=0  ; DivInvSNew
      v/=zero_var  ;DivInvSNew 
      v=multiple_var
      v/=0  ; DivS 
      v/=zero_multiple  ; DivNew
      v=multiple_var2
      v/=zero_multiple  ; DivInvNew 

      b=0/simple_var  ; DivInvS
      b=zero_var/simple_var  ; DivInvS
      b=0/multiple_var  ; DivInvS
      b=zero_var/multiple_var  ; DivInvS
      b=zero_multiple/multiple_var  ; DivInv // e1->N_Elements() > e2->N_Elements() : res= e2->DivInv(e1) 
      b=zero_multiple/multiple_var2  ; DivNew

   endfor
                                ; MOD
   for k=0,integers_only do begin
      simple_var=*simple_various_types[k]
      multiple_var=replicate(simple_var,10)
      zero_var=simple_var*0
      zero_multiple=multiple_var*0
      multiple_var2=replicate(simple_var,20)
                                ; division by zero , no dimension
      b=simple_var MOD 0  ; ModInvSNew
      b=simple_var MOD zero_var  ; ModInvSNew
      b=multiple_var MOD 0  ; ModS 
      b=multiple_var MOD zero_var   ; ModS 
      b=multiple_var MOD zero_multiple  ; Mod // e1->N_Elements() <= e2->N_Elements() : res= e1->Mod(e2)
      b=multiple_var2 MOD zero_multiple  ; ModInvNew different size
      v=simple_var
      v MOD=0  ; ModInvSNew
      v MOD=zero_var  ;ModInvSNew 
      v=multiple_var
      v MOD=0  ; ModS 
      v MOD=zero_multiple  ; ModNew
      v=multiple_var2
      v MOD=zero_multiple  ; ModInvNew 

      b=0 MOD simple_var  ; ModInvS
      b=zero_var MOD simple_var  ; ModInvS
      b=0 MOD multiple_var  ; ModInvS
      b=zero_var MOD multiple_var  ; ModInvS
      b=zero_multiple MOD multiple_var  ; ModInv // e1->N_Elements() > e2->N_Elements() : res= e2->ModInv(e1) 
      b=zero_multiple MOD multiple_var2  ; ModNew
   endfor
   
end