File: csumm.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye, sid
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (78 lines) | stat: -rw-r--r-- 1,682 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
75
76
77
78
      SUBROUTINE  CSUMM(D1,D2,ID1,D3,D4,ID2,D5,D6,ID5)
C
C     ADDS  D1+D2 TO  D3+D4 SCALING OUTPUT
C
      DOUBLE PRECISION D1,D2,D3,D4,D5,D6,T1,T2,T3,T4
      MULT = IABS(ID1-ID2)
      IF(MULT .LE. 38) FACTOR = 10.0**MULT
      T1 =D1
      T2 =D2
      T3 =D3
      T4 =D4
      ID5 =ID1
      IF(ID1-ID2) 30,50,20
   30 IF(MULT .GT. 38) GO TO 40
      T3 =T3*FACTOR
      T4 =T4*FACTOR
      GO TO 50
   20 IF(MULT .GT. 38) GO TO 35
      T1 = T1*FACTOR
      T2 = T2*FACTOR
      ID5= ID2
      GO TO 50
   35 D5 = D3
      D6 =D4
      ID5 = ID2
      GO TO 70
   40 D5 = D1
      D6 = D2
      GO TO 70
   50 D5 = T1 +T3
      D6 = T2 + T4
   70 RETURN
      ENTRY CSQRTN(D1,D2,ID1,D3,D4,ID2)
C
C     COMPUTES COMPLEX SQRT = SCALED
C
      ID2 = ID1
      D3=D1
      D4= D2
      IF( MOD(ID1,2) .EQ. 0) GO TO 100
      ID2 = ID2 -1
      IF(ID2 .LT. 0) GO TO 105
  101 D3 = D3*10.0
      D4 =D4*10.0
  100 ID2 = ID2/2
      T1 =DSQRT(D3*D3 +D4*D4)
      T2 = DSQRT( DABS(D3+T1)/2.0)
      T3 = DSQRT(DABS(-D3+T1)/2.0)
      D3 =T2
      D4 = T3
      IF(D2 .EQ. 0.0D0) GO TO 70
      D4 =DSIGN(T3,D2)
      GO TO 70
C
C     NEGATIVE EXPONENT
C
  105 ID2 = ID2+1
      GO TO 101
C
C     SCALES DETERMINANT
C
      ENTRY CDETM3(D1,D2,ID1)
      T1 = DMAX1(DABS(D1),DABS(D2))
      IF(T1 .EQ. 0.0D0) GO TO 70
 4125 IF(T1 .GT. 10.0D0) GO TO 4153
 4126 IF(T1 .LT. 1.0D0) GO TO 4140
      GO TO 70
 4153 D1 = D1*0.1D0
      D2 = D2*0.1D0
      T1 = T1*0.1D0
      ID1 = ID1+1
      GO TO 4125
 4140 D1 = D1*10.0D0
      D2 = D2*10.0D0
      T1 = T1*10.0D0
      ID1 = ID1-1
      GO TO 4126
      END