*** empty log message ***
[h316.git] / programs / mandelbrot / src / apfel.f
CommitLineData
c08e22bb 1C APFELMAENNCHEN-PROGRAMM, 30.NOV.2004 PHILIPP HACHTMANN
2C
3C SENSE-SWITCH 1: WENN GESETZT, KONFIGURATION
4C SENSE-SWITCH 2: WENN GESETZT, KEINE AUSGABE
5C
6C
7CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
8 COMPLEX C,Z,CTMP
9C
10 REAL
11 + XIN1,XIN2,YIN1,YIN2,LOWX,LOWY,HIGHX,HIGHY,
12 + XSTEP,YSTEP,MAXVAL,TEMP,
13 + X,Y
14C
15 INTEGER
16 + MAXI,COUNT,WIDTH,
17 + CR,LF,POSI,NEGA, I, N
18C
19CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
20C KONSTANTE WERTE
21C
22C (32=LEERZEICHEN, 88=X)
23 DATA
24 + CR/13/,
25 + LF/10/,
26 + POSI/79/,
27 + NEGA/32/,
28 + WIDTH/70/,
29 + MAXI/60/,
30 + MAXVAL/2.0/,
31 + XIN1/-1.45/,XIN2/0.45/,
32 + YIN1/-1.00/,YIN2/1.00/
33C
34C
35CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
36C
37C
38C
39CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
40C STARTMELDUNG
41 100 WRITE(1,10)
42 10 FORMAT(39HMANDELBROT-DEMO, 01.DEC.2004 HACHTI :-) )
43C
44C
45CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
46C EINGABEN ANNEHMEN
47C
b098c879 48 CALL SSWTCH(1,I)
49 IF(I.NE.1) GO TO 150
c08e22bb 50C
51 WRITE(1,11)
52 READ (1,16) XIN1
53 WRITE(1,12)
54 READ (1,16) XIN2
55 WRITE(1,13)
56 READ (1,16) YIN1
57 WRITE(1,14)
58 READ (1,16) YIN2
59 WRITE(1,15)
60 READ (1,17) MAXI
61
62C
63 11 FORMAT(9H X FROM: )
64 12 FORMAT(9H TO: )
65 13 FORMAT(9H Y FROM: )
66 14 FORMAT(9H TO: )
67 15 FORMAT(9H MAXIT: )
68 16 FORMAT(F12.0)
69 17 FORMAT(I6)
70C
71C
72CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
73C STARTWERTE ENDGUELTIG FESTLEGEN
74C
75C EVENTUELL STARTWERTE TAUSCHEN
76C
77CCCCCC WENN XIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN
78 150 I F(XIN2.GT.XIN1) GO TO 200
79 TEMP = XIN1
80 XIN1 = XIN2
81 XIN2 = TEMP
82C
83CCCCCC WENN YIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN
84 200 IF(YIN2.GT.YIN1) GO TO 201
85 TEMP = YIN1
86 YIN1 = YIN2
87 YIN2 = TEMP
88C
89CCCCCC WERTE UEBERNEHMEN
90 201 LOWX = XIN1
91 HIGHX = XIN2
92 LOWY = YIN1
93 HIGHY = YIN2
94C
95CCCCCC SCHRITTWEITEN AUSRECHNEN
96 XSTEP = (HIGHX-LOWX)/FLOAT(WIDTH)
97 YSTEP = 2.0 * XSTEP
98C
99CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
100C STARTWERTE AUSGEBEN
101C
b098c879 102 CALL SSWTCH(2,I)
c08e22bb 103 IF(I.EQ.1) GO TO 299
104 WRITE (1,20)
105 20 FORMAT (9HSETTINGS:)
106 WRITE (1,30) LOWX, HIGHX
107 30 FORMAT (12HX-WERTE VON ,1F8.5,5H BIS ,1F8.5)
108 WRITE (1,40) LOWY, HIGHY
109 40 FORMAT (12HY-WERTE VON ,F8.5,5H BIS ,F8.5)
110 WRITE (1,50) MAXI, MAXVAL, XSTEP, YSTEP, WIDTH
111 50 FORMAT ( 4HMAX:,I3,
112 + 8H MAXVAL:,F8.5,
113 + 7H XSTEP:,F8.5,
114 + 7H YSTEP:,F8.5,
115 + 7H WIDTH:,I2)
116CCCCCC ZEILENVORSCHUB
117 WRITE (1,55)
118 55 FORMAT (1H0)
119C
120CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
121C EIGENTLICHE BERECHNUNG
122C
123CCCCCC EINSTIEG IN BERECHNUNG
124 299 X=LOWX
125 Y=HIGHY
126C
127CCCCCC EINSTIEG IN DEN AKTUELLEN PUNKT
128 300 C=CMPLX(X,Y)
129 COUNT=0
130 Z=(0.0,0.0)
131C
132CCCCCC HIER DER ITERIERTE TEIL
133 400 CTMP=Z*Z
134 Z=CTMP+C
135 IF ((CABS(Z)).GE.MAXVAL) GO TO 410
136 COUNT=COUNT+1
137 IF (COUNT.GE.MAXI) GO TO 420
138 GO TO 400
139C
140CCCCCC PUNKT DURCHGEFALLEN
141 410 CALL PCHAR(NEGA)
142 GO TO 500
143C
144CCCCCC PUNKT HAT MAXI ERREICHT
145 420 CALL PCHAR(POSI)
146C
147C
148CCCCCC NEUEN PUNKT MACHEN
149 500 X = X + XSTEP
150CCCCCC ZEILE NOCH NICHT VOLL?
151 IF (X.LT.HIGHX) GO TO 300
152CCCCCC X AN ANFANG SETZTEN, CR+LF DRUCKEN
153 X = LOWX
154 CALL PCHAR(CR)
155 CALL PCHAR(LF)
156CCCCCC Y WEITERRUECKEN - NEGATIV WEIL WIR VON OBEN KOMMEN
157 Y=Y-YSTEP
158 IF (Y.GT.LOWY) GO TO 300
159C
160CCCCCC HIER IST DAS BILD FERTIG.
161 WRITE(1, 60)
162 60 FORMAT (6HFERTIG)
163C
164CCCCCC KURZE PAUSE, DANN NEUSTART
165 PAUSE 7
166 GO TO 100
167 END
168$0