##// END OF EJS Templates
add Ffiles
rflores -
r1601:3b2826fe0d97
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

This diff has been collapsed as it changes many lines, (520 lines changed) Show them Hide them
@@ -0,0 +1,520
1 ! -*- f90 -*-
2 ! Note: the context of this file is case sensitive.
3
4 python module fdjac2__user__routines
5 interface fdjac2_user_interface
6 subroutine fcn(m,n,x,wa,iflag) ! in :full_profile_profile:lmdif1.f:fdjac2:unknown_interface
7 integer, optional,check(len(wa)>=m),depend(wa) :: m=len(wa)
8 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
9 real dimension(n) :: x
10 real dimension(m) :: wa
11 integer :: iflag
12 end subroutine fcn
13 end interface fdjac2_user_interface
14 end python module fdjac2__user__routines
15 python module lmdif__user__routines
16 interface lmdif_user_interface
17 subroutine fcn(m,n,x,fvec,iflag) ! in :full_profile_profile:lmdif1.f:lmdif:unknown_interface
18 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
19 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
20 real dimension(n) :: x
21 real dimension(m) :: fvec
22 integer :: iflag
23 end subroutine fcn
24 end interface lmdif_user_interface
25 end python module lmdif__user__routines
26 python module full_profile_profile ! in
27 interface ! in :full_profile_profile
28 subroutine profile(acf_sum,acf_err,power,en,alag,thb2,bfm2,ote,ete,oti,eti,oph,eph,ophe,ephe,range2,ut,nhts,nacf,ibits,acf_avg_real,status) ! in :full_profile_profile:full_profile_profile.f
29 complex dimension(4,nhts,ibits) :: acf_sum
30 real dimension(nhts,ibits),depend(nhts,ibits) :: acf_err
31 real dimension(nhts),depend(nhts) :: power
32 real dimension(nhts),depend(nhts) :: en
33 real dimension(ibits),depend(ibits) :: alag
34 real dimension(nhts),depend(nhts) :: thb2
35 real dimension(nhts),depend(nhts) :: bfm2
36 real dimension(nacf),depend(nacf) :: ote
37 real dimension(nacf),depend(nacf) :: ete
38 real dimension(nacf),depend(nacf) :: oti
39 real dimension(nacf),depend(nacf) :: eti
40 real dimension(nacf),depend(nacf) :: oph
41 real dimension(nacf),depend(nacf) :: eph
42 real dimension(nacf),depend(nacf) :: ophe
43 real dimension(nacf),depend(nacf) :: ephe
44 real dimension(nhts),depend(nhts) :: range2
45 real :: ut
46 integer, optional,check(shape(acf_sum,1)==nhts),depend(acf_sum) :: nhts=shape(acf_sum,1)
47 integer :: nacf
48 integer, optional,check(shape(acf_sum,2)==ibits),depend(acf_sum) :: ibits=shape(acf_sum,2)
49 real dimension(nhts,ibits),depend(nhts,ibits), :: acf_avg_real
50 real dimension(1) :: status
51 real :: chi2
52 real dimension(91) :: densp
53 real dimension(91) :: tep
54 real dimension(91) :: trp
55 real dimension(91) :: tip
56 real dimension(91) :: hfp
57 real dimension(91) :: hefp
58 real dimension(91) :: altp
59 real :: r0
60 real :: dr
61 real :: wl
62 real dimension(16,91) :: plag
63 real dimension(16,91) :: plag_errors
64 real :: sconst
65 real dimension(91) :: edensp
66 real dimension(91) :: etep
67 real dimension(91) :: etip
68 real dimension(91) :: ehfp
69 real dimension(91) :: ehefp
70 real dimension(85) :: bfld_prof
71 real dimension(85) :: alpha_prof
72 integer :: imode
73 real :: uttime
74 real dimension(34) :: ta
75 real dimension(30,5) :: bcoef
76 real :: te
77 real dimension(10) :: ti
78 real dimension(10) :: fi
79 real :: ven
80 real dimension(10) :: vin
81 real :: alpha
82 real :: dens
83 real :: bfld
84 integer :: nion
85 integer dimension(10) :: wi
86 real :: ak
87 common /chisq/ chi2
88 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
89 common /data/ plag,plag_errors
90 common /sys/ sconst
91 common /errs/ edensp,etep,etip,ehfp,ehefp
92 common /mag/ bfld_prof,alpha_prof
93 common /mode/ imode
94 common /utime/ uttime
95 common /spline/ ta,bcoef
96 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
97 end subroutine profile
98 subroutine grid ! in :full_profile_profile:full_profile_profile.f
99 real dimension(34) :: ta
100 real dimension(30,5) :: bcoef
101 real dimension(91) :: densp
102 real dimension(91) :: tep
103 real dimension(91) :: trp
104 real dimension(91) :: tip
105 real dimension(91) :: hfp
106 real dimension(91) :: hefp
107 real dimension(91) :: altp
108 real :: r0
109 real :: dr
110 real :: wl
111 real dimension(16,91) :: plag
112 real dimension(16,91) :: plag_errors
113 real :: sconst
114 real dimension(91) :: edensp
115 real dimension(91) :: etep
116 real dimension(91) :: etip
117 real dimension(91) :: ehfp
118 real dimension(91) :: ehefp
119 real :: te
120 real dimension(10) :: ti
121 real dimension(10) :: fi
122 real :: ven
123 real dimension(10) :: vin
124 real :: alpha
125 real :: dens
126 real :: bfld
127 integer :: nion
128 integer dimension(10) :: wi
129 real :: ak
130 real :: chi2
131 real :: uttime
132 common /spline/ ta,bcoef
133 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
134 common /data/ plag,plag_errors
135 common /sys/ sconst
136 common /errs/ edensp,etep,etip,ehfp,ehefp
137 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
138 common /chisq/ chi2
139 common /utime/ uttime
140 end subroutine grid
141 subroutine propagate(xe) ! in :full_profile_profile:full_profile_profile.f
142 real dimension(150) :: xe
143 real dimension(91) :: densp
144 real dimension(91) :: tep
145 real dimension(91) :: trp
146 real dimension(91) :: tip
147 real dimension(91) :: hfp
148 real dimension(91) :: hefp
149 real dimension(91) :: altp
150 real :: r0
151 real :: dr
152 real :: wl
153 real dimension(16,91) :: plag
154 real dimension(16,91) :: plag_errors
155 real :: sconst
156 real dimension(91) :: edensp
157 real dimension(91) :: etep
158 real dimension(91) :: etip
159 real dimension(91) :: ehfp
160 real dimension(91) :: ehefp
161 real dimension(34) :: ta
162 real dimension(30,5) :: bcoef
163 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
164 common /data/ plag,plag_errors
165 common /sys/ sconst
166 common /errs/ edensp,etep,etip,ehfp,ehefp
167 common /spline/ ta,bcoef
168 end subroutine propagate
169 subroutine fcn_lpreg(m,n,x,fvec,iflag) ! in :full_profile_profile:full_profile_profile.f
170 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
171 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
172 real dimension(n) :: x
173 real dimension(m) :: fvec
174 integer :: iflag
175 real dimension(34) :: ta
176 real dimension(30,5) :: bcoef
177 real dimension(91) :: densp
178 real dimension(91) :: tep
179 real dimension(91) :: trp
180 real dimension(91) :: tip
181 real dimension(91) :: hfp
182 real dimension(91) :: hefp
183 real dimension(91) :: altp
184 real :: r0
185 real :: dr
186 real :: wl
187 real dimension(16,91) :: plag
188 real dimension(16,91) :: plag_errors
189 real :: sconst
190 real dimension(91) :: edensp
191 real dimension(91) :: etep
192 real dimension(91) :: etip
193 real dimension(91) :: ehfp
194 real dimension(91) :: ehefp
195 real :: te
196 real dimension(10) :: ti
197 real dimension(10) :: fi
198 real :: ven
199 real dimension(10) :: vin
200 real :: alpha
201 real :: dens
202 real :: bfld
203 integer :: nion
204 integer dimension(10) :: wi
205 real :: ak
206 real :: chi2
207 real :: uttime
208 common /spline/ ta,bcoef
209 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
210 common /data/ plag,plag_errors
211 common /sys/ sconst
212 common /errs/ edensp,etep,etip,ehfp,ehefp
213 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
214 common /chisq/ chi2
215 common /utime/ uttime
216 end subroutine fcn_lpreg
217 subroutine get_scale(plag2) ! in :full_profile_profile:full_profile_profile.f
218 real dimension(16,75) :: plag2
219 real dimension(91) :: densp
220 real dimension(91) :: tep
221 real dimension(91) :: trp
222 real dimension(91) :: tip
223 real dimension(91) :: hfp
224 real dimension(91) :: hefp
225 real dimension(91) :: altp
226 real :: r0
227 real :: dr
228 real :: wl
229 real dimension(16,91) :: plag
230 real dimension(16,91) :: plag_errors
231 real :: sconst
232 real dimension(91) :: edensp
233 real dimension(91) :: etep
234 real dimension(91) :: etip
235 real dimension(91) :: ehfp
236 real dimension(91) :: ehefp
237 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
238 common /data/ plag,plag_errors
239 common /sys/ sconst
240 common /errs/ edensp,etep,etip,ehfp,ehefp
241 end subroutine get_scale
242 function enorm(n,x) ! in :full_profile_profile:lmdif1.f
243 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
244 real dimension(n) :: x
245 real :: enorm
246 end function enorm
247 subroutine fdjac2(fcn,m,n,x,fvec,fjac,ldfjac,iflag,epsfcn,wa) ! in :full_profile_profile:lmdif1.f
248 use fdjac2__user__routines
249 external fcn
250 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
251 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
252 real dimension(n) :: x
253 real dimension(m) :: fvec
254 real dimension(ldfjac,n),depend(n) :: fjac
255 integer, optional,check(shape(fjac,0)==ldfjac),depend(fjac) :: ldfjac=shape(fjac,0)
256 integer :: iflag
257 real :: epsfcn
258 real dimension(m),depend(m) :: wa
259 end subroutine fdjac2
260 subroutine lmdif(fcn,m,n,x,fvec,ftol,xtol,gtol,maxfev,epsfcn,diag,mode,factor,nprint,info,nfev,fjac,ldfjac,ipvt,qtf,wa1,wa2,wa3,wa4) ! in :full_profile_profile:lmdif1.f
261 use lmdif__user__routines
262 external fcn
263 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
264 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
265 real dimension(n) :: x
266 real dimension(m) :: fvec
267 real :: ftol
268 real :: xtol
269 real :: gtol
270 integer :: maxfev
271 real :: epsfcn
272 real dimension(n),depend(n) :: diag
273 integer :: mode
274 real :: factor
275 integer :: nprint
276 integer :: info
277 integer :: nfev
278 real dimension(ldfjac,n),depend(n) :: fjac
279 integer, optional,check(shape(fjac,0)==ldfjac),depend(fjac) :: ldfjac=shape(fjac,0)
280 integer dimension(n),depend(n) :: ipvt
281 real dimension(n),depend(n) :: qtf
282 real dimension(n),depend(n) :: wa1
283 real dimension(n),depend(n) :: wa2
284 real dimension(n),depend(n) :: wa3
285 real dimension(m),depend(m) :: wa4
286 end subroutine lmdif
287 subroutine lmpar(n,r,ldr,ipvt,diag,qtb,delta,par,x,sdiag,wa1,wa2) ! in :full_profile_profile:lmdif1.f
288 integer, optional,check(shape(r,1)==n),depend(r) :: n=shape(r,1)
289 real dimension(ldr,n) :: r
290 integer, optional,check(shape(r,0)==ldr),depend(r) :: ldr=shape(r,0)
291 integer dimension(n),depend(n) :: ipvt
292 real dimension(n),depend(n) :: diag
293 real dimension(n),depend(n) :: qtb
294 real :: delta
295 real :: par
296 real dimension(n),depend(n) :: x
297 real dimension(n),depend(n) :: sdiag
298 real dimension(n),depend(n) :: wa1
299 real dimension(n),depend(n) :: wa2
300 end subroutine lmpar
301 subroutine qrfac(m,n,a,lda,pivot,ipvt,lipvt,rdiag,acnorm,wa) ! in :full_profile_profile:lmdif1.f
302 integer :: m
303 integer, optional,check(shape(a,1)==n),depend(a) :: n=shape(a,1)
304 real dimension(lda,n) :: a
305 integer, optional,check(shape(a,0)==lda),depend(a) :: lda=shape(a,0)
306 logical :: pivot
307 integer dimension(lipvt) :: ipvt
308 integer, optional,check(len(ipvt)>=lipvt),depend(ipvt) :: lipvt=len(ipvt)
309 real dimension(n),depend(n) :: rdiag
310 real dimension(n),depend(n) :: acnorm
311 real dimension(n),depend(n) :: wa
312 end subroutine qrfac
313 subroutine qrsolv(n,r,ldr,ipvt,diag,qtb,x,sdiag,wa) ! in :full_profile_profile:lmdif1.f
314 integer, optional,check(shape(r,1)==n),depend(r) :: n=shape(r,1)
315 real dimension(ldr,n) :: r
316 integer, optional,check(shape(r,0)==ldr),depend(r) :: ldr=shape(r,0)
317 integer dimension(n),depend(n) :: ipvt
318 real dimension(n),depend(n) :: diag
319 real dimension(n),depend(n) :: qtb
320 real dimension(n),depend(n) :: x
321 real dimension(n),depend(n) :: sdiag
322 real dimension(n),depend(n) :: wa
323 end subroutine qrsolv
324 function spmpar(i) ! in :full_profile_profile:lmdif1.f
325 integer :: i
326 real :: spmpar
327 end function spmpar
328 function cdtr1(depth) ! in :full_profile_profile:fitacf.f
329 real :: depth
330 real :: cdtr1
331 end function cdtr1
332 function czte1(zlag,tr) ! in :full_profile_profile:fitacf.f
333 real :: zlag
334 real :: tr
335 real :: czte1
336 end function czte1
337 subroutine fcn(m,n,x,fvec,iflag) ! in :full_profile_profile:fitacf.f
338 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
339 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
340 real dimension(n) :: x
341 real dimension(m) :: fvec
342 integer :: iflag
343 real :: te
344 real dimension(10) :: ti
345 real dimension(10) :: fi
346 real :: ven
347 real dimension(10) :: vin
348 real :: alpha
349 real :: dens
350 real :: bfld
351 integer :: nion
352 integer dimension(10) :: wi
353 real :: ak
354 real dimension(100) :: tau
355 real dimension(100) :: rho
356 real dimension(100) :: sigma2
357 real dimension(10) :: params
358 integer dimension(10) :: ifit
359 real :: chisq
360 real dimension(10000) :: ev
361 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
362 common /fitter/ tau,rho,sigma2,params,ifit
363 common /errs/ chisq
364 common /trans/ ev
365 end subroutine fcn
366 function cj_ion(theta,psi) ! in :full_profile_profile:fitacf.f
367 real :: theta
368 real :: psi
369 complex :: cj_ion
370 end function cj_ion
371 function cj_electron(theta,phi,psi,alpha) ! in :full_profile_profile:fitacf.f
372 real :: theta
373 real :: phi
374 real :: psi
375 real :: alpha
376 integer :: imode
377 complex :: cj_electron
378 common /mode/ imode
379 end function cj_electron
380 function y_ion(theta,psi) ! in :full_profile_profile:fitacf.f
381 real :: theta
382 real :: psi
383 complex :: y_ion
384 end function y_ion
385 function y_electron(theta,phi,psi,alpha) ! in :full_profile_profile:fitacf.f
386 real :: theta
387 real :: phi
388 real :: psi
389 real :: alpha
390 complex :: y_electron
391 end function y_electron
392 function spect1(omega) ! in :full_profile_profile:fitacf.f
393 real :: omega
394 real :: te
395 real dimension(10) :: ti
396 real dimension(10) :: fi
397 real :: ven
398 real dimension(10) :: vin
399 real :: alpha
400 real :: dens
401 real :: bfld
402 integer :: nion
403 integer dimension(10) :: wi
404 real :: ak
405 integer :: imode
406 real :: spect1
407 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
408 common /mode/ imode
409 end function spect1
410 subroutine acf2(wl,tau,te1,ti1,fi1,ven1,vin1,wi1,nion1,alpha1,dens1,bfld1,acf) ! in :full_profile_profile:fitacf.f
411 real :: wl
412 real :: tau
413 real :: te1
414 real dimension(nion1) :: ti1
415 real dimension(nion1),depend(nion1) :: fi1
416 real :: ven1
417 real dimension(nion1),depend(nion1) :: vin1
418 integer dimension(nion1),depend(nion1) :: wi1
419 integer, optional,check(len(ti1)>=nion1),depend(ti1) :: nion1=len(ti1)
420 real :: alpha1
421 real :: dens1
422 real :: bfld1
423 real :: acf
424 real :: te
425 real dimension(10) :: ti
426 real dimension(10) :: fi
427 real :: ven
428 real dimension(10) :: vin
429 real :: alpha
430 real :: dens
431 real :: bfld
432 integer :: nion
433 integer dimension(10) :: wi
434 real :: ak
435 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
436 end subroutine acf2
437 subroutine gaussq(tau,acf) ! in :full_profile_profile:fitacf.f
438 real :: tau
439 real :: acf
440 real :: te
441 real dimension(10) :: ti
442 real dimension(10) :: fi
443 real :: ven
444 real dimension(10) :: vin
445 real :: alpha
446 real :: dens
447 real :: bfld
448 integer :: nion
449 integer dimension(10) :: wi
450 real :: ak
451 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
452 end subroutine gaussq
453 subroutine lagp(plag,wl,r0,dr,nl,nrange) ! in :full_profile_profile:lagp.f
454 real dimension(nl,nrange) :: plag
455 real :: wl
456 real :: r0
457 real :: dr
458 integer, optional,check(shape(plag,0)==nl),depend(plag) :: nl=shape(plag,0)
459 integer, optional,check(shape(plag,1)==nrange),depend(plag) :: nrange=shape(plag,1)
460 real :: te
461 real dimension(10) :: ti
462 real dimension(10) :: fi
463 real :: ven
464 real dimension(10) :: vin
465 real :: alpha
466 real :: dens
467 real :: bfld
468 integer :: nion
469 integer dimension(10) :: wi
470 real :: ak
471 real dimension(34) :: ta
472 real dimension(30,5) :: bcoef
473 real dimension(85) :: bfld_prof
474 real dimension(85) :: alpha_prof
475 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
476 common /spline/ ta,bcoef
477 common /mag/ bfld_prof,alpha_prof
478 end subroutine lagp
479 function atanh(x) ! in :full_profile_profile:lagp.f
480 real :: x
481 real :: atanh
482 end function atanh
483 subroutine get_spline(alt,dens,te,ti,hf,hef) ! in :full_profile_profile:lagp.f
484 real :: alt
485 real :: dens
486 real :: te
487 real :: ti
488 real :: hf
489 real :: hef
490 real dimension(34) :: ta
491 real dimension(30,5) :: bcoef
492 common /spline/ ta,bcoef
493 end subroutine get_spline
494 function bvalue(t,bcoef,n,k,x,jderiv) ! in :full_profile_profile:lagp.f
495 real dimension(n+k),depend(n,k) :: t
496 real dimension(n) :: bcoef
497 integer, optional,check(len(bcoef)>=n),depend(bcoef) :: n=len(bcoef)
498 integer :: k
499 real :: x
500 integer :: jderiv
501 real :: bvalue
502 end function bvalue
503 subroutine interv(xt,lxt,x,left,mflag) ! in :full_profile_profile:lagp.f
504 real dimension(lxt) :: xt
505 integer, optional,check(len(xt)>=lxt),depend(xt) :: lxt=len(xt)
506 real :: x
507 integer :: left
508 integer :: mflag
509 end subroutine interv
510 function r1mach(i) ! in :full_profile_profile:r1mach.f
511 integer :: i
512 integer :: cray1
513 real :: r1mach
514 common /d8mach/ cray1
515 end function r1mach
516 end interface
517 end python module full_profile_profile
518
519 ! This file was auto-generated with f2py (version:2).
520 ! See http://cens.ioc.ee/projects/f2py2e/
@@ -0,0 +1,67
1 float **array2(int m, int n){
2
3 int i,j;
4 float **temp;
5
6 temp=(float **)malloc(sizeof(double)*m);
7
8 temp[0]=(float *)malloc(sizeof(double)*m*n);
9 for(j=1;j<m;j++){
10 temp[j]=temp[j-1]+n;
11 }
12
13 return temp;
14 }
15
16
17 float ***array3(int m, int n, int l){
18
19 int i,j;
20 float ***temp;
21
22 temp=(float ***)malloc(sizeof(double)*m);
23 temp[0]=(float **)malloc(sizeof(double)*m*n);
24 for(j=1;j<m;j++){
25 temp[j]=temp[j-1]+n;
26 }
27 temp[0][0]=(float *)malloc(sizeof(double)*l*n*m);;
28 for(j=0;j<m;j++)
29 for(i=0;i<n;i++){
30 temp[j][i]=temp[0][0]+ l*(i+n*j);
31 }
32 return temp;
33 }
34
35 fcomplex **carray2(int m, int n){
36
37 int i,j;
38 fcomplex **temp;
39
40 temp=(fcomplex **)malloc(sizeof(fcomplex)*m);
41
42 temp[0]=(fcomplex *)malloc(sizeof(fcomplex)*m*n);
43 for(j=1;j<m;j++){
44 temp[j]=temp[j-1]+n;
45 }
46
47 return temp;
48 }
49
50
51 fcomplex ***carray3(int m, int n, int l){
52
53 int i,j;
54 fcomplex ***temp;
55
56 temp=(fcomplex ***)malloc(sizeof(fcomplex)*m);
57 temp[0]=(fcomplex **)malloc(sizeof(fcomplex)*m*n);
58 for(j=1;j<m;j++){
59 temp[j]=temp[j-1]+n;
60 }
61 temp[0][0]=(fcomplex *)malloc(sizeof(fcomplex)*l*n*m);;
62 for(j=0;j<m;j++)
63 for(i=0;i<n;i++){
64 temp[j][i]=temp[0][0]+ l*(i+n*j);
65 }
66 return temp;
67 }
@@ -0,0 +1,3
1 parameter(nfield=85) ! should be nrange+10 or more
2 real bfld_prof(nfield),alpha_prof(nfield)
3 common/mag/bfld_prof,alpha_prof
This diff has been collapsed as it changes many lines, (676 lines changed) Show them Hide them
@@ -0,0 +1,676
1 subroutine geobfield(tm,r,theta,phi,br,bt,bp,b)
2 c*****evaluate bfield at geocentric coords r,theta,phi
3 c and return components of field in r,theta and phi directions
4 c and magnitude
5 c*****theta and phi are in radians, r is in km, b is in gauss
6 c ===============================================================
7 c
8 c essentially, this is an adaptation of igrfdemo. it interpolates
9 c smoothly between the coefficients from 1945 to 1985.
10 c
11 c subroutines:
12 c getshc, interpshc, extrapshc, shval3
13 c
14 c igrfdemo is due to:
15 c a. zunde
16 c usgs, ms 964, box 25046 federal center, denver, co 80225
17 c
18 c ===============================================================
19 character*8 filmod(17)
20 c character*31 fqual
21 dimension gh1(220), gh2(220), gha(224), ext(3), dtemod(17)
22 data ext /3*0./
23 data filmod / 'dgrf45', 'dgrf50',
24 1 'dgrf55', 'dgrf60', 'dgrf65',
25 2 'dgrf70', 'dgrf75', 'dgrf80',
26 3 'dgrf85', 'dgrf90', 'dgrf95',
27 4 'dgrf00', 'dgrf05', 'dgrf10',
28 5 'dgrf15', 'igrf20', 'igrf20s'/
29 c data fqual/"/usr/local/lib/faraday/bfmodel/"/
30 data dtemod / 1945., 1950., 1955., 1960.,
31 1 1965., 1970., 1975., 1980., 1985., 1990., 1995., 2000.,
32 2 2005.,2010.,2015.,2020.,2025./
33 data iu/98/,ndt/17/
34 c data a2/40680925./, b2/40408588./
35 data a2/40680631.6/, b2/40408296.0/ ! updated 2010
36 c
37 data rtd/57.29577951/
38 data tmp/0./,lp/0/
39 character(1024) :: fqual_temp
40 character(:), allocatable :: fqual
41 call get_path(fqual_temp)
42 c write(*,*) "L_BEF: ", fqual_temp, "L_BEF_end"
43 fqual = TRIM(fqual_temp)
44 c write(*,*) "L: ", fqual, "L_end"
45
46 flat=90. - theta*rtd
47 flon=rtd*phi
48 c*****if previous time is not equal to current time
49 if(tm .ne. tmp)then
50 l=0
51 C for i=1,ndt
52 DO 1010 i=1,ndt
53 C exit for if(tm .lt. dtemod(i))
54 if(tm .lt. dtemod(i)) GO TO 1011
55 l=i
56 C end for
57 1010 CONTINUE
58 1011 CONTINUE
59 c write(*,-)tm,l
60 if(l .eq. 0)then
61 write(*,fmt='(" geobfield: time is before earliest model.")')
62 stop
63 end if
64 if(l .eq. ndt)then
65 l=l-1
66 write(*,fmt='(" geobfield: warning - extrapolating beyond ",
67 1 "last set of coefficients.")')
68 end if
69 if(l .ne. lp)then
70 c*********if previous epoch not the same, read in new coefs
71 c write(*,fmt='(" read coefs"))')
72 c write(*,*) "filmod", fqual//filmod(l)
73 call getshc2 (iu, fqual//filmod(l), nmax1, erad, gh1, ier)
74 c write(*,*) "AA: ", ier, filmod(l)
75 if(ier .ne. 0)then
76 write(*,fmt='(" geobfield: read error=",i2," on ",a)')
77 1 ier,filmod(l)
78 stop
79 end if
80
81 call getshc2 (iu, fqual//filmod(l+1), nmax2, erad, gh2, ier)
82 if(ier .ne. 0)then
83 write(*,fmt='(" geobfield: read error=",i2," on ",a)')
84 1 ier,filmod(l+1)
85 stop
86 end if
87 end if
88 if (l .lt. ndt-1) then
89 call interpshc (tm, dtemod(l), nmax1, gh1, dtemod(l+1),
90 1 nmax2, gh2, nmax, gha)
91 c write(*,fmt='(" interpolate"))')
92 else
93 call extrapshc (tm, dtemod(l), nmax1, gh1, nmax2,
94 1 gh2, nmax, gha)
95 c write(*,fmt='(" extrapolate"))')
96 end if
97 end if
98 c tmp=tm
99 c lp=l
100 call shval3(2,flat,flon,r,erad,a2,b2,nmax,gha,0,ext,x,y,z)
101 br=-z/100000.
102 bp=y/100000.
103 bt=-x/100000.
104 b=sqrt(br**2 + bp**2 + bt**2)
105
106 C write(*,*)flat,flon,r,erad,a2,b2,nmax,gha,ext
107 C write(*,*)tm,r,theta,phi,br,bt,bp,b
108 return
109 end
110 c
111 subroutine convrt(i, gdlat, gdalt, gclat, rkm)
112
113 c convrt converts between geodetic and geocentric coordinates. the
114 c reference geoid is that adopted by the iau in 1964. a=6378.16,
115 c b=6356.7746, f=1/298.25. the equations for conversion from
116 c geocentric to geodetic are from astron. j., vol 66, 1961, p. 15.
117
118 c i=1 geodetic to geocentric
119 c i=2 geocentric to geodetic
120 c gdlat geodetic latitude (degrees)
121 c gdalt altitude above geoid (km)
122 c gclat geocentric latitude (degrees)
123 c rkm geocentric radial distance (km)
124 c
125 c data a/6378.16/, ab2/1.0067397/, ep2/.0067397/
126 c update 2010
127 data a/6378.137/, ab2/1.0067396/, ep2/.0067396/
128 data dtr/.0174532925199/
129
130 if (i .eq. 1) then
131
132 c .....geodetic to geocentric.....
133
134 gdl = dtr*gdlat
135 sinlat = sin(gdl)
136 coslat = cos(gdl)
137 sl2 = sinlat*sinlat
138 cl2 = ab2*coslat
139 cl2 = cl2*cl2
140 sinbet = sinlat/sqrt(sl2+cl2)
141 sb2 = amin1(sinbet*sinbet, 1.)
142 cosbet = sqrt(1. - sb2)
143 rgeoid = a/sqrt(1. + ep2*sb2)
144 x = rgeoid*cosbet + gdalt*coslat
145 y = rgeoid*sinbet + gdalt*sinlat
146 rkm = sqrt(x*x + y*y)
147 gclat = atan2(y,x)/dtr
148 return
149
150 else if (i .eq. 2) then
151
152 c .....geocentric to geodetic.....
153
154 rer = rkm/a
155 a2 = ((-1.4127348e-8/rer + .94339131e-8)/rer +
156 1 .33523288e-2)/rer
157 a4 = (((-1.2545063e-10/rer + .11760996e-9)/rer +
158 1 .11238084e-4)/rer - .2814244e-5)/rer
159 a6 = ((54.939685e-9/rer - 28.301730e-9)/rer +
160 1 3.5435979e-9)/rer
161 a8 = (((320./rer - 252.)/rer + 64.)/rer - 5.)
162 1 /rer*0.98008304e-12
163 gcl = dtr*gclat
164 ccl = cos(gcl)
165 scl = sin(gcl)
166 s2cl = 2.*scl*ccl
167 c2cl = 2.*ccl*ccl - 1.
168 s4cl = 2.*s2cl*c2cl
169 c4cl = 2.*c2cl*c2cl - 1.
170 s8cl = 2.*s4cl*c4cl
171 s6cl = s2cl*c4cl + c2cl*s4cl
172 dltcl = s2cl*a2 + s4cl*a4 + s6cl*a6 + s8cl*a8
173 gdlat = gclat + dltcl/dtr
174 gdalt = rkm - a/sqrt(1.+ep2*scl*scl)
175 return
176
177 end if
178 end
179 c
180 subroutine getshc2 (iu, fspec, nmax, erad, gh, ier)
181
182 c ===============================================================
183 c
184 c version 1.01
185 c
186 c reads spherical harmonic coefficients from the specified
187 c file into an array.
188 c
189 c input:
190 c iu - logical unit number
191 c fspec - file specification
192 c
193 c output:
194 c nmax - maximum degree and order of model
195 c erad - earth's radius associated with the spherical
196 c harmonic coefficients, in the same units as
197 c elevation
198 c gh - schmidt quasi-normal internal spherical
199 c harmonic coefficients
200 c ier - error number: = 0, no error
201 c = -2, records out of order
202 c = fortran run-time error number
203 c
204 c a. zunde
205 c usgs, ms 964, box 25046 federal center, denver, co 80225
206 c
207 c ===============================================================
208
209 character fspec*(*)
210 dimension gh(*)
211
212 c ---------------------------------------------------------------
213 c open coefficient file. read past first header record.
214 c read degree and order of model and earth's radius.
215 c ---------------------------------------------------------------
216
217
218 open (iu, file=fspec, status='old', iostat=ier, err=999 )
219
220
221 read (iu, *, iostat=ier, err=999)
222 read (iu, *, iostat=ier, err=999) nmax, erad
223
224
225 c ---------------------------------------------------------------
226 c read the coefficient file, arranged as follows:
227 c
228 c n m g h
229 c ----------------------
230 c / 1 0 gh(1) -
231 c / 1 1 gh(2) gh(3)
232 c / 2 0 gh(4) -
233 c / 2 1 gh(5) gh(6)
234 c nmax*(nmax+3)/2 / 2 2 gh(7) gh(8)
235 c records \ 3 0 gh(9) -
236 c \ . . . .
237 c \ . . . .
238 c nmax*(nmax+2) \ . . . .
239 c elements in gh \ nmax nmax . .
240 c
241 c n and m are, respectively, the degree and order of the
242 c coefficient.
243 c ---------------------------------------------------------------
244
245 i = 0
246 C for nn = 1, nmax
247 DO 1010 nn = 1, nmax
248 C for mm = 0, nn
249 DO 1020 mm = 0, nn
250 read (iu, *, iostat=ier, err=999) n, m, g, h
251 c write(*,*) n,m,g,h,nn,nmax,mm,ier
252 if (nn .ne. n .or. mm .ne. m) then
253 ier = -2
254 goto 999
255 endif
256 i = i + 1
257 gh(i) = g
258 if (m .ne. 0) then
259 i = i + 1
260 gh(i) = h
261 endif
262 C end for
263 1020 CONTINUE
264 1021 CONTINUE
265 C end for
266 1010 CONTINUE
267 1011 CONTINUE
268
269 999 close (iu)
270
271 return
272 end
273 c
274 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bfieldsr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
275 c
276 subroutine interpshc (date, dte1, nmax1, gh1, dte2,
277 1 nmax2, gh2, nmax, gh)
278
279 c ===============================================================
280 c
281 c version 1.01
282 c
283 c interpolates linearly, in time, between two spherical
284 c harmonic models.
285 c
286 c input:
287 c date - date of resulting model (in decimal year)
288 c dte1 - date of earlier model
289 c nmax1 - maximum degree and order of earlier model
290 c gh1 - schmidt quasi-normal internal spherical
291 c harmonic coefficients of earlier model
292 c dte2 - date of later model
293 c nmax2 - maximum degree and order of later model
294 c gh2 - schmidt quasi-normal internal spherical
295 c harmonic coefficients of later model
296 c
297 c output:
298 c gh - coefficients of resulting model
299 c nmax - maximum degree and order of resulting model
300 c
301 c a. zunde
302 c usgs, ms 964, box 25046 federal center, denver, co 80225
303 c
304 c ===============================================================
305
306 dimension gh1(*), gh2(*), gh(*)
307
308 c ---------------------------------------------------------------
309 c the coefficients (gh) of the resulting model, at date
310 c date, are computed by linearly interpolating between the
311 c coefficients of the earlier model (gh1), at date dte1,
312 c and those of the later model (gh2), at date dte2. if one
313 c model is smaller than the other, the interpolation is
314 c performed with the missing coefficients assumed to be 0.
315 c ---------------------------------------------------------------
316
317 factor = (date - dte1) / (dte2 - dte1)
318
319 if (nmax1 .eq. nmax2) then
320 k = nmax1 * (nmax1 + 2)
321 nmax = nmax1
322 else if (nmax1 .gt. nmax2) then
323 k = nmax2 * (nmax2 + 2)
324 l = nmax1 * (nmax1 + 2)
325 C for i = k + 1, l
326 DO 1010 i = k + 1, l
327 gh(i) = gh1(i) + factor * (-gh1(i))
328 C end for
329 1010 CONTINUE
330 1011 CONTINUE
331 nmax = nmax1
332 else
333 k = nmax1 * (nmax1 + 2)
334 l = nmax2 * (nmax2 + 2)
335 C for i = k + 1, l
336 DO 1020 i = k + 1, l
337 gh(i) = factor * gh2(i)
338 C end for
339 1020 CONTINUE
340 1021 CONTINUE
341 nmax = nmax2
342 endif
343
344 C for i = 1, k
345 DO 1030 i = 1, k
346 gh(i) = gh1(i) + factor * (gh2(i) - gh1(i))
347 C end for
348 1030 CONTINUE
349 1031 CONTINUE
350
351 return
352 end
353 c
354 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bfieldsr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
355 c
356 subroutine extrapshc (date, dte1, nmax1, gh1, nmax2,
357 1 gh2, nmax, gh)
358
359 c ===============================================================
360 c
361 c version 1.01
362 c
363 c extrapolates linearly a spherical harmonic model with a
364 c rate-of-change model.
365 c
366 c input:
367 c date - date of resulting model (in decimal year)
368 c dte1 - date of base model
369 c nmax1 - maximum degree and order of base model
370 c gh1 - schmidt quasi-normal internal spherical
371 c harmonic coefficients of base model
372 c nmax2 - maximum degree and order of rate-of-change
373 c model
374 c gh2 - schmidt quasi-normal internal spherical
375 c harmonic coefficients of rate-of-change model
376 c
377 c output:
378 c gh - coefficients of resulting model
379 c nmax - maximum degree and order of resulting model
380 c
381 c a. zunde
382 c usgs, ms 964, box 25046 federal center, denver, co 80225
383 c
384 c ===============================================================
385
386 dimension gh1(*), gh2(*), gh(*)
387
388 c ---------------------------------------------------------------
389 c the coefficients (gh) of the resulting model, at date
390 c date, are computed by linearly extrapolating the coef-
391 c ficients of the base model (gh1), at date dte1, using
392 c those of the rate-of-change model (gh2), at date dte2. if
393 c one model is smaller than the other, the extrapolation is
394 c performed with the missing coefficients assumed to be 0.
395 c ---------------------------------------------------------------
396
397 factor = (date - dte1)
398
399 if (nmax1 .eq. nmax2) then
400 k = nmax1 * (nmax1 + 2)
401 nmax = nmax1
402 else if (nmax1 .gt. nmax2) then
403 k = nmax2 * (nmax2 + 2)
404 l = nmax1 * (nmax1 + 2)
405 C for i = k + 1, l
406 DO 1010 i = k + 1, l
407 gh(i) = gh1(i)
408 C end for
409 1010 CONTINUE
410 1011 CONTINUE
411 nmax = nmax1
412 else
413 k = nmax1 * (nmax1 + 2)
414 l = nmax2 * (nmax2 + 2)
415 C for i = k + 1, l
416 DO 1020 i = k + 1, l
417 gh(i) = factor * gh2(i)
418 C end for
419 1020 CONTINUE
420 1021 CONTINUE
421 nmax = nmax2
422 endif
423
424 C for i = 1, k
425 DO 1030 i = 1, k
426 gh(i) = gh1(i) + factor * gh2(i)
427 C end for
428 1030 CONTINUE
429 1031 CONTINUE
430
431 return
432 end
433 c
434 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bfieldsr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
435 c
436 subroutine shval3 (igdgc, flat, flon, elev, erad, a2, b2,
437 1 nmax, gh, iext, ext, x, y, z)
438
439 c ================================================================
440 c
441 c version 1.01
442 c
443 c calculates field components from spherical harmonic (sh)
444 c models.
445 c
446 c input:
447 c igdgc - indicates coordinate system used; set equal to
448 c 1 if geodetic, 2 if geocentric
449 c flat - north latitude, in degrees
450 c flon - east longitude, in degrees
451 c elev - elevation above mean sea level (igdgc=1), or
452 c radial distance from earth's center (igdgc=2)
453 c erad - value of earth's radius associated with the sh
454 c coefficients, in same units as elev
455 c a2,b2 - squares of semi-major and semi-minor axes of
456 c the reference spheroid used for transforming
457 c between geodetic and geocentric coordinates or
458 c components
459 c nmax - maximum degree and order of coefficients
460 c gh - schmidt quasi-normal internal spherical
461 c harmonic coefficients
462 c iext - external coefficients flag (= 0 if none)
463 c ext - the three 1st-degree external coefficients
464 c (not used if iext = 0)
465 c
466 c output:
467 c x - northward component
468 c y - eastward component
469 c z - vertically-downward component
470 c
471 c based on subroutine "igrf" by d. r. barraclough and
472 c s. r. c. malin, report no. 71/1, institute of geological
473 c sciences, u.k.
474 c
475 c norman w. peddie, u.s. geological survey, mail stop 964,
476 c federal center, box 25046, denver, colorado 80225
477 c
478 c ================================================================
479
480 c the required sizes of the arrays used in this subroutine
481 c depend on the value of nmax. the minimum dimensions
482 c needed are indicated in the table below. (note that this
483 c version is dimensioned for nmax of 14 or less).
484 c
485 c minimum dimension
486 c --------------------------
487 c nmax
488 dimension sl(14), cl(14)
489 c (nmax * (nmax + 3)) / 2
490 dimension p(119), q(119)
491 c nmax * (nmax + 2)
492 dimension gh(224)
493 c 3
494 dimension ext(3)
495
496 c ================================================================
497
498 parameter (dtr = .01745329)
499
500 r = elev
501 slat = sin (flat * dtr)
502 if (90. - flat .lt. .001) then
503 c 300 ft from n. pole
504 aa = 89.999
505 else if (90. + flat .lt. .001) then
506 c 300 ft from s. pole
507 aa = -89.999
508 else
509 aa = flat
510 endif
511 clat = cos (aa * dtr)
512 sl(1) = sin (flon * dtr)
513 cl(1) = cos (flon * dtr)
514 x = 0.
515 y = 0.
516 z = 0.
517 sd = 0.
518 cd = 1.
519 n = 0
520 l = 1
521 m = 1
522 npq = (nmax * (nmax + 3)) / 2
523
524 if (igdgc .eq. 1) then
525 aa = a2 * clat * clat
526 bb = b2 * slat * slat
527 cc = aa + bb
528 dd = sqrt (cc)
529 r = sqrt (elev * (elev + 2. * dd)
530 1 + (a2 * aa + b2 * bb) / cc)
531 cd = (elev + dd) / r
532 sd = (a2 - b2) / dd * slat * clat / r
533
534 aa = slat
535 slat = slat * cd - clat * sd
536 clat = clat * cd + aa * sd
537 endif
538
539 ratio = erad / r
540
541 aa = sqrt (3.)
542 p(1) = 2. * slat
543 p(2) = 2. * clat
544 p(3) = 4.5 * slat * slat - 1.5
545 p(4) = 3. * aa * clat * slat
546 q(1) = -clat
547 q(2) = slat
548 q(3) = -3. * clat * slat
549 q(4) = aa * (slat * slat - clat * clat)
550
551 C for k = 1, npq
552 DO 1010 k = 1, npq
553 if (n .lt. m) then
554 m = 0
555 n = n + 1
556 rr = ratio**(n + 2)
557 fn = n
558 endif
559 fm = m
560 if (k .ge. 5) then
561 if (m .eq. n) then
562 aa = sqrt (1. - .5 / fm)
563 j = k - n - 1
564 p(k) = (1. + 1. / fm) * aa * clat * p(j)
565 q(k) = aa * (clat * q(j) + slat / fm * p(j))
566 sl(m) = sl(m-1) * cl(1) + cl(m-1) * sl(1)
567 cl(m) = cl(m-1) * cl(1) - sl(m-1) * sl(1)
568 else
569 aa = sqrt (fn * fn - fm * fm)
570 bb = sqrt ((fn - 1.)**2 - fm * fm) / aa
571 cc = (2. * fn - 1.) / aa
572 i = k - n
573 j = k - 2 * n + 1
574 p(k) = (fn + 1.) * (cc * slat / fn * p(i) - bb
575 1 / (fn - 1.) * p(j))
576 q(k) = cc * (slat * q(i) - clat / fn * p(i))
577 1 - bb * q(j)
578 endif
579 endif
580
581 aa = rr * gh(l)
582
583 if (m .eq. 0) then
584 x = x + aa * q(k)
585 z = z - aa * p(k)
586 l = l + 1
587 else
588 bb = rr * gh(l+1)
589 cc = aa * cl(m) + bb * sl(m)
590 x = x + cc * q(k)
591 z = z - cc * p(k)
592 if (clat .gt. 0.) then
593 y = y + (aa * sl(m) - bb * cl(m)) * fm * p(k)
594 1 / ((fn + 1.) * clat)
595 else
596 y = y + (aa * sl(m) - bb * cl(m)) * q(k)
597 1 * slat
598 endif
599 l = l + 2
600 endif
601 m = m + 1
602 C end for
603 1010 CONTINUE
604 1011 CONTINUE
605
606 if (iext .ne. 0) then
607 aa = ext(2) * cl(1) + ext(3) * sl(1)
608 x = x - ext(1) * clat + aa * slat
609 y = y + ext(2) * sl(1) - ext(3) * cl(1)
610 z = z + ext(1) * slat + aa * clat
611 endif
612
613 aa = x
614 x = x * cd + z * sd
615 z = z * cd - aa * sd
616
617
618 return
619 end
620 c
621 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bfieldsr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
622 c
623 subroutine dihf (x, y, z, d, i, h, f)
624
625 c ===============================================================
626 c
627 c version 1.01
628 c
629 c computes the geomagnetic elements d, i, h, and f from
630 c x, y, and z.
631 c
632 c input:
633 c x - northward component
634 c y - eastward component
635 c z - vertically-downward component
636 c
637 c output:
638 c d - declination
639 c i - inclination
640 c h - horizontal intensity
641 c f - total intensity
642 c
643 c a. zunde
644 c usgs, ms 964, box 25046 federal center, denver, co 80225
645 c
646 c ===============================================================
647
648 real i
649 parameter ( sn = 0.0001 )
650
651 c ---------------------------------------------------------------
652 c if d and i cannot be determined, set equal to 999.0.
653 c ---------------------------------------------------------------
654
655 h2 = x*x + y*y
656 h = sqrt (h2)
657 f = sqrt (h2 + z*z)
658 if (f .lt. sn) then
659 d = 999.
660 i = 999.
661 else
662 i = atan2 (z, h)
663 if (h .lt. sn) then
664 d = 999.
665 else
666 hpx = h + x
667 if (hpx .lt. sn) then
668 d = 180.
669 else
670 d = 2. * atan2 (y, hpx)
671 endif
672 endif
673 endif
674
675 return
676 end
@@ -0,0 +1,2
1 cat $1 | awk -f script > $2
2 cat $1 | awk -f script2 > $3 No newline at end of file
@@ -0,0 +1,106
1 dgrf00
2 13 6371.2 2000.0
3 1 0 -29619.40 0.00 0.00 0.00 DGRF2000 1
4 1 1 -1728.20 5186.10 0.00 0.00 DGRF2000 2
5 2 0 -2267.70 0.00 0.00 0.00 DGRF2000 3
6 2 1 3068.40 -2481.60 0.00 0.00 DGRF2000 4
7 2 2 1670.90 -458.00 0.00 0.00 DGRF2000 5
8 3 0 1339.60 0.00 0.00 0.00 DGRF2000 6
9 3 1 -2288.00 -227.60 0.00 0.00 DGRF2000 7
10 3 2 1252.10 293.40 0.00 0.00 DGRF2000 8
11 3 3 714.50 -491.10 0.00 0.00 DGRF2000 9
12 4 0 932.30 0.00 0.00 0.00 DGRF2000 10
13 4 1 786.80 272.60 0.00 0.00 DGRF2000 11
14 4 2 250.00 -231.90 0.00 0.00 DGRF2000 12
15 4 3 -403.00 119.80 0.00 0.00 DGRF2000 13
16 4 4 111.30 -303.80 0.00 0.00 DGRF2000 14
17 5 0 -218.80 0.00 0.00 0.00 DGRF2000 15
18 5 1 351.40 43.80 0.00 0.00 DGRF2000 16
19 5 2 222.30 171.90 0.00 0.00 DGRF2000 17
20 5 3 -130.40 -133.10 0.00 0.00 DGRF2000 18
21 5 4 -168.60 -39.30 0.00 0.00 DGRF2000 19
22 5 5 -12.90 106.30 0.00 0.00 DGRF2000 20
23 6 0 72.30 0.00 0.00 0.00 DGRF2000 21
24 6 1 68.20 -17.40 0.00 0.00 DGRF2000 22
25 6 2 74.20 63.70 0.00 0.00 DGRF2000 23
26 6 3 -160.90 65.10 0.00 0.00 DGRF2000 24
27 6 4 -5.90 -61.20 0.00 0.00 DGRF2000 25
28 6 5 16.90 0.70 0.00 0.00 DGRF2000 26
29 6 6 -90.40 43.80 0.00 0.00 DGRF2000 27
30 7 0 79.00 0.00 0.00 0.00 DGRF2000 28
31 7 1 -74.00 -64.60 0.00 0.00 DGRF2000 29
32 7 2 0.00 -24.20 0.00 0.00 DGRF2000 30
33 7 3 33.30 6.20 0.00 0.00 DGRF2000 31
34 7 4 9.10 24.00 0.00 0.00 DGRF2000 32
35 7 5 6.90 14.80 0.00 0.00 DGRF2000 33
36 7 6 7.30 -25.40 0.00 0.00 DGRF2000 34
37 7 7 -1.20 -5.80 0.00 0.00 DGRF2000 35
38 8 0 24.40 0.00 0.00 0.00 DGRF2000 36
39 8 1 6.60 11.90 0.00 0.00 DGRF2000 37
40 8 2 -9.20 -21.50 0.00 0.00 DGRF2000 38
41 8 3 -7.90 8.50 0.00 0.00 DGRF2000 39
42 8 4 -16.60 -21.50 0.00 0.00 DGRF2000 40
43 8 5 9.10 15.50 0.00 0.00 DGRF2000 41
44 8 6 7.00 8.90 0.00 0.00 DGRF2000 42
45 8 7 -7.90 -14.90 0.00 0.00 DGRF2000 43
46 8 8 -7.00 -2.10 0.00 0.00 DGRF2000 44
47 9 0 5.00 0.00 0.00 0.00 DGRF2000 45
48 9 1 9.40 -19.70 0.00 0.00 DGRF2000 46
49 9 2 3.00 13.40 0.00 0.00 DGRF2000 47
50 9 3 -8.40 12.50 0.00 0.00 DGRF2000 48
51 9 4 6.30 -6.20 0.00 0.00 DGRF2000 49
52 9 5 -8.90 -8.40 0.00 0.00 DGRF2000 50
53 9 6 -1.50 8.40 0.00 0.00 DGRF2000 51
54 9 7 9.30 3.80 0.00 0.00 DGRF2000 52
55 9 8 -4.30 -8.20 0.00 0.00 DGRF2000 53
56 9 9 -8.20 4.80 0.00 0.00 DGRF2000 54
57 10 0 -2.60 0.00 0.00 0.00 DGRF2000 55
58 10 1 -6.00 1.70 0.00 0.00 DGRF2000 56
59 10 2 1.70 0.00 0.00 0.00 DGRF2000 57
60 10 3 -3.10 4.00 0.00 0.00 DGRF2000 58
61 10 4 -0.50 4.90 0.00 0.00 DGRF2000 59
62 10 5 3.70 -5.90 0.00 0.00 DGRF2000 60
63 10 6 1.00 -1.20 0.00 0.00 DGRF2000 61
64 10 7 2.00 -2.90 0.00 0.00 DGRF2000 62
65 10 8 4.20 0.20 0.00 0.00 DGRF2000 63
66 10 9 0.30 -2.20 0.00 0.00 DGRF2000 64
67 10 10 -1.10 -7.40 0.00 0.00 DGRF2000 65
68 11 0 2.70 0.00 0.00 0.00 DGRF2000 66
69 11 1 -1.70 0.10 0.00 0.00 DGRF2000 67
70 11 2 -1.90 1.30 0.00 0.00 DGRF2000 68
71 11 3 1.50 -0.90 0.00 0.00 DGRF2000 69
72 11 4 -0.10 -2.60 0.00 0.00 DGRF2000 70
73 11 5 0.10 0.90 0.00 0.00 DGRF2000 71
74 11 6 -0.70 -0.70 0.00 0.00 DGRF2000 72
75 11 7 0.70 -2.80 0.00 0.00 DGRF2000 73
76 11 8 1.70 -0.90 0.00 0.00 DGRF2000 74
77 11 9 0.10 -1.20 0.00 0.00 DGRF2000 75
78 11 10 1.20 -1.90 0.00 0.00 DGRF2000 76
79 11 11 4.00 -0.90 0.00 0.00 DGRF2000 77
80 12 0 -2.20 0.00 0.00 0.00 DGRF2000 78
81 12 1 -0.30 -0.40 0.00 0.00 DGRF2000 79
82 12 2 0.20 0.30 0.00 0.00 DGRF2000 80
83 12 3 0.90 2.50 0.00 0.00 DGRF2000 81
84 12 4 -0.20 -2.60 0.00 0.00 DGRF2000 82
85 12 5 0.90 0.70 0.00 0.00 DGRF2000 83
86 12 6 -0.50 0.30 0.00 0.00 DGRF2000 84
87 12 7 0.30 0.00 0.00 0.00 DGRF2000 85
88 12 8 -0.30 0.00 0.00 0.00 DGRF2000 86
89 12 9 -0.40 0.30 0.00 0.00 DGRF2000 87
90 12 10 -0.10 -0.90 0.00 0.00 DGRF2000 88
91 12 11 -0.20 -0.40 0.00 0.00 DGRF2000 89
92 12 12 -0.40 0.80 0.00 0.00 DGRF2000 90
93 13 0 -0.20 0.00 0.00 0.00 DGRF2000 91
94 13 1 -0.90 -0.90 0.00 0.00 DGRF2000 92
95 13 2 0.30 0.20 0.00 0.00 DGRF2000 93
96 13 3 0.10 1.80 0.00 0.00 DGRF2000 94
97 13 4 -0.40 -0.40 0.00 0.00 DGRF2000 95
98 13 5 1.30 -1.00 0.00 0.00 DGRF2000 96
99 13 6 -0.40 -0.10 0.00 0.00 DGRF2000 97
100 13 7 0.70 0.70 0.00 0.00 DGRF2000 98
101 13 8 -0.40 0.30 0.00 0.00 DGRF2000 99
102 13 9 0.30 0.60 0.00 0.00 DGRF2000 100
103 13 10 -0.10 0.30 0.00 0.00 DGRF2000 101
104 13 11 0.40 -0.20 0.00 0.00 DGRF2000 102
105 13 12 0.00 -0.50 0.00 0.00 DGRF2000 103
106 13 13 0.10 -0.90 0.00 0.00 DGRF2000 104
@@ -0,0 +1,106
1 dgrf05
2 13 6371.2 2005.0
3 1 0 -29554.63 0.00 0.00 0.00 IGRF2005 1
4 1 1 -1669.05 5077.99 0.00 0.00 IGRF2005 2
5 2 0 -2337.24 0.00 0.00 0.00 IGRF2005 3
6 2 1 3047.69 -2594.50 0.00 0.00 IGRF2005 4
7 2 2 1657.76 -515.43 0.00 0.00 IGRF2005 5
8 3 0 1336.30 0.00 0.00 0.00 IGRF2005 6
9 3 1 -2305.83 -198.86 0.00 0.00 IGRF2005 7
10 3 2 1246.39 269.72 0.00 0.00 IGRF2005 8
11 3 3 672.51 -524.72 0.00 0.00 IGRF2005 9
12 4 0 920.55 0.00 0.00 0.00 IGRF2005 10
13 4 1 797.96 282.07 0.00 0.00 IGRF2005 11
14 4 2 210.65 -225.23 0.00 0.00 IGRF2005 12
15 4 3 -379.86 145.15 0.00 0.00 IGRF2005 13
16 4 4 100.00 -305.36 0.00 0.00 IGRF2005 14
17 5 0 -227.00 0.00 0.00 0.00 IGRF2005 15
18 5 1 354.41 42.72 0.00 0.00 IGRF2005 16
19 5 2 208.95 180.25 0.00 0.00 IGRF2005 17
20 5 3 -136.54 -123.45 0.00 0.00 IGRF2005 18
21 5 4 -168.05 -19.57 0.00 0.00 IGRF2005 19
22 5 5 -13.55 103.85 0.00 0.00 IGRF2005 20
23 6 0 73.60 0.00 0.00 0.00 IGRF2005 21
24 6 1 69.56 -20.33 0.00 0.00 IGRF2005 22
25 6 2 76.74 54.75 0.00 0.00 IGRF2005 23
26 6 3 -151.34 63.63 0.00 0.00 IGRF2005 24
27 6 4 -14.58 -63.53 0.00 0.00 IGRF2005 25
28 6 5 14.58 0.24 0.00 0.00 IGRF2005 26
29 6 6 -86.36 50.94 0.00 0.00 IGRF2005 27
30 7 0 79.88 0.00 0.00 0.00 IGRF2005 28
31 7 1 -74.46 -61.14 0.00 0.00 IGRF2005 29
32 7 2 -1.65 -22.57 0.00 0.00 IGRF2005 30
33 7 3 38.73 6.82 0.00 0.00 IGRF2005 31
34 7 4 12.30 25.35 0.00 0.00 IGRF2005 32
35 7 5 9.37 10.93 0.00 0.00 IGRF2005 33
36 7 6 5.42 -26.32 0.00 0.00 IGRF2005 34
37 7 7 1.94 -4.64 0.00 0.00 IGRF2005 35
38 8 0 24.80 0.00 0.00 0.00 IGRF2005 36
39 8 1 7.62 11.20 0.00 0.00 IGRF2005 37
40 8 2 -11.73 -20.88 0.00 0.00 IGRF2005 38
41 8 3 -6.88 9.83 0.00 0.00 IGRF2005 39
42 8 4 -18.11 -19.71 0.00 0.00 IGRF2005 40
43 8 5 10.17 16.22 0.00 0.00 IGRF2005 41
44 8 6 9.36 7.61 0.00 0.00 IGRF2005 42
45 8 7 -11.25 -12.76 0.00 0.00 IGRF2005 43
46 8 8 -4.87 -0.06 0.00 0.00 IGRF2005 44
47 9 0 5.58 0.00 0.00 0.00 IGRF2005 45
48 9 1 9.76 -20.11 0.00 0.00 IGRF2005 46
49 9 2 3.58 12.69 0.00 0.00 IGRF2005 47
50 9 3 -6.94 12.67 0.00 0.00 IGRF2005 48
51 9 4 5.01 -6.72 0.00 0.00 IGRF2005 49
52 9 5 -10.76 -8.16 0.00 0.00 IGRF2005 50
53 9 6 -1.25 8.10 0.00 0.00 IGRF2005 51
54 9 7 8.76 2.92 0.00 0.00 IGRF2005 52
55 9 8 -6.66 -7.73 0.00 0.00 IGRF2005 53
56 9 9 -9.22 6.01 0.00 0.00 IGRF2005 54
57 10 0 -2.17 0.00 0.00 0.00 IGRF2005 55
58 10 1 -6.12 2.19 0.00 0.00 IGRF2005 56
59 10 2 1.42 0.10 0.00 0.00 IGRF2005 57
60 10 3 -2.35 4.46 0.00 0.00 IGRF2005 58
61 10 4 -0.15 4.76 0.00 0.00 IGRF2005 59
62 10 5 3.06 -6.58 0.00 0.00 IGRF2005 60
63 10 6 0.29 -1.01 0.00 0.00 IGRF2005 61
64 10 7 2.06 -3.47 0.00 0.00 IGRF2005 62
65 10 8 3.77 -0.86 0.00 0.00 IGRF2005 63
66 10 9 -0.21 -2.31 0.00 0.00 IGRF2005 64
67 10 10 -2.09 -7.93 0.00 0.00 IGRF2005 65
68 11 0 2.95 0.00 0.00 0.00 IGRF2005 66
69 11 1 -1.60 0.26 0.00 0.00 IGRF2005 67
70 11 2 -1.88 1.44 0.00 0.00 IGRF2005 68
71 11 3 1.44 -0.77 0.00 0.00 IGRF2005 69
72 11 4 -0.31 -2.27 0.00 0.00 IGRF2005 70
73 11 5 0.29 0.90 0.00 0.00 IGRF2005 71
74 11 6 -0.79 -0.58 0.00 0.00 IGRF2005 72
75 11 7 0.53 -2.69 0.00 0.00 IGRF2005 73
76 11 8 1.80 -1.08 0.00 0.00 IGRF2005 74
77 11 9 0.16 -1.58 0.00 0.00 IGRF2005 75
78 11 10 0.96 -1.90 0.00 0.00 IGRF2005 76
79 11 11 3.99 -1.39 0.00 0.00 IGRF2005 77
80 12 0 -2.15 0.00 0.00 0.00 IGRF2005 78
81 12 1 -0.29 -0.55 0.00 0.00 IGRF2005 79
82 12 2 0.21 0.23 0.00 0.00 IGRF2005 80
83 12 3 0.89 2.38 0.00 0.00 IGRF2005 81
84 12 4 -0.38 -2.63 0.00 0.00 IGRF2005 82
85 12 5 0.96 0.61 0.00 0.00 IGRF2005 83
86 12 6 -0.30 0.40 0.00 0.00 IGRF2005 84
87 12 7 0.46 0.01 0.00 0.00 IGRF2005 85
88 12 8 -0.35 0.02 0.00 0.00 IGRF2005 86
89 12 9 -0.36 0.28 0.00 0.00 IGRF2005 87
90 12 10 0.08 -0.87 0.00 0.00 IGRF2005 88
91 12 11 -0.49 -0.34 0.00 0.00 IGRF2005 89
92 12 12 -0.08 0.88 0.00 0.00 IGRF2005 90
93 13 0 -0.16 0.00 0.00 0.00 IGRF2005 91
94 13 1 -0.88 -0.76 0.00 0.00 IGRF2005 92
95 13 2 0.30 0.33 0.00 0.00 IGRF2005 93
96 13 3 0.28 1.72 0.00 0.00 IGRF2005 94
97 13 4 -0.43 -0.54 0.00 0.00 IGRF2005 95
98 13 5 1.18 -1.07 0.00 0.00 IGRF2005 96
99 13 6 -0.37 -0.04 0.00 0.00 IGRF2005 97
100 13 7 0.75 0.63 0.00 0.00 IGRF2005 98
101 13 8 -0.26 0.21 0.00 0.00 IGRF2005 99
102 13 9 0.35 0.53 0.00 0.00 IGRF2005 100
103 13 10 -0.05 0.38 0.00 0.00 IGRF2005 101
104 13 11 0.41 -0.22 0.00 0.00 IGRF2005 102
105 13 12 -0.10 -0.57 0.00 0.00 IGRF2005 103
106 13 13 -0.18 -0.82 0.00 0.00 IGRF2005 104
@@ -0,0 +1,106
1 dgrf15
2 13 6371.2 2015.0
3 1 0 -29441.46 0
4 1 1 -1501.77 4795.99
5 2 0 -2445.88 0
6 2 1 3012.2 -2845.41
7 2 2 1676.35 -642.17
8 3 0 1350.33 0
9 3 1 -2352.26 -115.29
10 3 2 1225.85 245.04
11 3 3 581.69 -538.7
12 4 0 907.42 0
13 4 1 813.68 283.54
14 4 2 120.49 -188.43
15 4 3 -334.85 180.95
16 4 4 70.38 -329.23
17 5 0 -232.91 0
18 5 1 360.14 46.98
19 5 2 192.35 196.98
20 5 3 -140.94 -119.14
21 5 4 -157.4 15.98
22 5 5 4.3 100.12
23 6 0 69.55 0
24 6 1 67.57 -20.61
25 6 2 72.79 33.3
26 6 3 -129.85 58.74
27 6 4 -28.93 -66.64
28 6 5 13.14 7.35
29 6 6 -70.85 62.41
30 7 0 81.29 0
31 7 1 -75.99 -54.27
32 7 2 -6.79 -19.53
33 7 3 51.82 5.59
34 7 4 15.07 24.45
35 7 5 9.32 3.27
36 7 6 -2.88 -27.5
37 7 7 6.61 -2.32
38 8 0 23.98 0
39 8 1 8.89 10.04
40 8 2 -16.78 -18.26
41 8 3 -3.16 13.18
42 8 4 -20.56 -14.6
43 8 5 13.33 16.16
44 8 6 11.76 5.69
45 8 7 -15.98 -9.1
46 8 8 -2.02 2.26
47 9 0 5.33 0
48 9 1 8.83 -21.77
49 9 2 3.02 10.76
50 9 3 -3.22 11.74
51 9 4 0.67 -6.74
52 9 5 -13.2 -6.88
53 9 6 -0.1 7.79
54 9 7 8.68 1.04
55 9 8 -9.06 -3.89
56 9 9 -10.54 8.44
57 10 0 -2.01 0
58 10 1 -6.26 3.28
59 10 2 0.17 -0.4
60 10 3 0.55 4.55
61 10 4 -0.55 4.4
62 10 5 1.7 -7.92
63 10 6 -0.67 -0.61
64 10 7 2.13 -4.16
65 10 8 2.33 -2.85
66 10 9 -1.8 -1.12
67 10 10 -3.59 -8.72
68 11 0 3 0
69 11 1 -1.4 0
70 11 2 -2.3 2.11
71 11 3 2.08 -0.6
72 11 4 -0.79 -1.05
73 11 5 0.58 0.76
74 11 6 -0.7 -0.2
75 11 7 0.14 -2.12
76 11 8 1.7 -1.44
77 11 9 -0.22 -2.57
78 11 10 0.44 -2.01
79 11 11 3.49 -2.34
80 12 0 -2.09 0
81 12 1 -0.16 -1.08
82 12 2 0.46 0.37
83 12 3 1.23 1.75
84 12 4 -0.89 -2.19
85 12 5 0.85 0.27
86 12 6 0.1 0.72
87 12 7 0.54 -0.09
88 12 8 -0.37 0.29
89 12 9 -0.43 0.23
90 12 10 0.22 -0.89
91 12 11 -0.94 -0.16
92 12 12 -0.03 0.72
93 13 0 -0.02 0
94 13 1 -0.92 -0.88
95 13 2 0.42 0.49
96 13 3 0.63 1.56
97 13 4 -0.42 -0.5
98 13 5 0.96 -1.24
99 13 6 -0.19 -0.1
100 13 7 0.81 0.42
101 13 8 -0.13 -0.04
102 13 9 0.38 0.48
103 13 10 0.08 0.48
104 13 11 0.46 -0.3
105 13 12 -0.35 -0.43
106 13 13 -0.36 -0.71
@@ -0,0 +1,67
1 dgrf65
2 10 6371.2 1965.
3 1 0 -30334. 0.
4 1 1 -2119. 5776.
5 2 0 -1662. 0.
6 2 1 2997. -2016.
7 2 2 1594. 114.
8 3 0 1297. 0.
9 3 1 -2038. -404.
10 3 2 1292. 240.
11 3 3 856. -165.
12 4 0 957. 0.
13 4 1 804. 148.
14 4 2 479. -269.
15 4 3 -390. 13.
16 4 4 252. -269.
17 5 0 -219. 0.
18 5 1 358. 19.
19 5 2 254. 128.
20 5 3 -31. -126.
21 5 4 -157. -97.
22 5 5 -62. 81.
23 6 0 45. 0.
24 6 1 61. -11.
25 6 2 8. 100.
26 6 3 -228. 68.
27 6 4 4. -32.
28 6 5 1. -8.
29 6 6 -111. -7.
30 7 0 75. 0.
31 7 1 -57. -61.
32 7 2 4. -27.
33 7 3 13. -2.
34 7 4 -26. 6.
35 7 5 -6. 26.
36 7 6 13. -23.
37 7 7 1. -12.
38 8 0 13. 0.
39 8 1 5. 7.
40 8 2 -4. -12.
41 8 3 -14. 9.
42 8 4 0. -16.
43 8 5 8. 4.
44 8 6 -1. 24.
45 8 7 11. -3.
46 8 8 4. -17.
47 9 0 8. 0.
48 9 1 10. -22.
49 9 2 2. 15.
50 9 3 -13. 7.
51 9 4 10. -4.
52 9 5 -1. -5.
53 9 6 -1. 10.
54 9 7 5. 10.
55 9 8 1. -4.
56 9 9 -2. 1.
57 10 0 -2. 0.
58 10 1 -3. 2.
59 10 2 2. 1.
60 10 3 -5. 2.
61 10 4 -2. 6.
62 10 5 4. -4.
63 10 6 4. 0.
64 10 7 0. -2.
65 10 8 2. 3.
66 10 9 2. 0.
67 10 10 0. -6.
@@ -0,0 +1,67
1 dgrf70
2 10 6371.2 1970.
3 1 0 -30220. 0.
4 1 1 -2068. 5737.
5 2 0 -1781. 0.
6 2 1 3000. -2047.
7 2 2 1611. 25.
8 3 0 1287. 0.
9 3 1 -2091. -366.
10 3 2 1278. 251.
11 3 3 838. -196.
12 4 0 952. 0.
13 4 1 800. 167.
14 4 2 461. -266.
15 4 3 -395. 26.
16 4 4 234. -279.
17 5 0 -216. 0.
18 5 1 359. 26.
19 5 2 262. 139.
20 5 3 -42. -139.
21 5 4 -160. -91.
22 5 5 -56. 83.
23 6 0 43. 0.
24 6 1 64. -12.
25 6 2 15. 100.
26 6 3 -212. 72.
27 6 4 2. -37.
28 6 5 3. -6.
29 6 6 -112. 1.
30 7 0 72. 0.
31 7 1 -57. -70.
32 7 2 1. -27.
33 7 3 14. -4.
34 7 4 -22. 8.
35 7 5 -2. 23.
36 7 6 13. -23.
37 7 7 -2. -11.
38 8 0 14. 0.
39 8 1 6. 7.
40 8 2 -2. -15.
41 8 3 -13. 6.
42 8 4 -3. -17.
43 8 5 5. 6.
44 8 6 0. 21.
45 8 7 11. -6.
46 8 8 3. -16.
47 9 0 8. 0.
48 9 1 10. -21.
49 9 2 2. 16.
50 9 3 -12. 6.
51 9 4 10. -4.
52 9 5 -1. -5.
53 9 6 0. 10.
54 9 7 3. 11.
55 9 8 1. -2.
56 9 9 -1. 1.
57 10 0 -3. 0.
58 10 1 -3. 1.
59 10 2 2. 1.
60 10 3 -5. 3.
61 10 4 -1. 4.
62 10 5 6. -4.
63 10 6 4. 0.
64 10 7 1. -1.
65 10 8 0. 3.
66 10 9 3. 1.
67 10 10 -1. -4.
@@ -0,0 +1,67
1 dgrf75
2 10 6371.2 1975.
3 1 0 -30100. 0.
4 1 1 -2013. 5675.
5 2 0 -1902. 0.
6 2 1 3010. -2067.
7 2 2 1632. -68.
8 3 0 1276. 0.
9 3 1 -2144. -333.
10 3 2 1260. 262.
11 3 3 830. -223.
12 4 0 946. 0.
13 4 1 791. 191.
14 4 2 438. -265.
15 4 3 -405. 39.
16 4 4 216. -288.
17 5 0 -218. 0.
18 5 1 356. 31.
19 5 2 264. 148.
20 5 3 -59. -152.
21 5 4 -159. -83.
22 5 5 -49. 88.
23 6 0 45. 0.
24 6 1 66. -13.
25 6 2 28. 99.
26 6 3 -198. 75.
27 6 4 1. -41.
28 6 5 6. -4.
29 6 6 -111. 11.
30 7 0 71. 0.
31 7 1 -56. -77.
32 7 2 1. -26.
33 7 3 16. -5.
34 7 4 -14. 10.
35 7 5 0. 22.
36 7 6 12. -23.
37 7 7 -5. -12.
38 8 0 14. 0.
39 8 1 6. 6.
40 8 2 -1. -16.
41 8 3 -12. 4.
42 8 4 -8. -19.
43 8 5 4. 6.
44 8 6 0. 18.
45 8 7 10. -10.
46 8 8 1. -17.
47 9 0 7. 0.
48 9 1 10. -21.
49 9 2 2. 16.
50 9 3 -12. 7.
51 9 4 10. -4.
52 9 5 -1. -5.
53 9 6 -1. 10.
54 9 7 4. 11.
55 9 8 1. -3.
56 9 9 -2. 1.
57 10 0 -3. 0.
58 10 1 -3. 1.
59 10 2 2. 1.
60 10 3 -5. 3.
61 10 4 -2. 4.
62 10 5 5. -4.
63 10 6 4. -1.
64 10 7 1. -1.
65 10 8 0. 3.
66 10 9 3. 1.
67 10 10 -1. -5.
@@ -0,0 +1,67
1 dgrf80
2 10 6371.2 1980.0
3 1 0 -29992. 0.
4 1 1 -1956. 5604.
5 2 0 -1997. 0.
6 2 1 3027. -2129.
7 2 2 1663. -200.
8 3 0 1281. 0.
9 3 1 -2180. -336.
10 3 2 1251. 271.
11 3 3 833. -252.
12 4 0 938. 0.
13 4 1 782. 212.
14 4 2 398. -257.
15 4 3 -419. 53.
16 4 4 199. -297.
17 5 0 -218. 0.
18 5 1 357. 46.
19 5 2 261. 150.
20 5 3 -74. -151.
21 5 4 -162. -78.
22 5 5 -48. 92.
23 6 0 48. 0.
24 6 1 66. -15.
25 6 2 42. 93.
26 6 3 -192. 71.
27 6 4 4. -43.
28 6 5 14. -2.
29 6 6 -108. 17.
30 7 0 72. 0.
31 7 1 -59. -82.
32 7 2 2. -27.
33 7 3 21. -5.
34 7 4 -12. 16.
35 7 5 1. 18.
36 7 6 11. -23.
37 7 7 -2. -10.
38 8 0 18. 0.
39 8 1 6. 7.
40 8 2 0. -18.
41 8 3 -11. 4.
42 8 4 -7. -22.
43 8 5 4. 9.
44 8 6 3. 16.
45 8 7 6. -13.
46 8 8 -1. -15.
47 9 0 5. 0.
48 9 1 10. -21.
49 9 2 1. 16.
50 9 3 -12. 9.
51 9 4 9. -5.
52 9 5 -3. -6.
53 9 6 -1. 9.
54 9 7 7. 10.
55 9 8 2. -6.
56 9 9 -5. 2.
57 10 0 -4. 0.
58 10 1 -4. 1.
59 10 2 2. 0.
60 10 3 -5. 3.
61 10 4 -2. 6.
62 10 5 5. -4.
63 10 6 3. 0.
64 10 7 1. -1.
65 10 8 2. 4.
66 10 9 3. 0.
67 10 10 0. -6.
This diff has been collapsed as it changes many lines, (594 lines changed) Show them Hide them
@@ -0,0 +1,594
1 DGRF45 1945.00 10 0 0 1945.00 1945.00 -1.0 600.0 dgrf45 1
2 0 1-30594.0 .0 .00 .00 dgrf45 4
3 1 1 -2285.0 5810.0 .00 .00 dgrf45 5
4 0 2 -1244.0 .0 .00 .00 dgrf45 6
5 1 2 2990.0 -1702.0 .00 .00 dgrf45 7
6 2 2 1578.0 477.0 .00 .00 dgrf45 8
7 0 3 1282.0 .0 .00 .00 dgrf45 9
8 1 3 -1834.0 -499.0 .00 .00 dgrf45 10
9 2 3 1255.0 186.0 .00 .00 dgrf45 11
10 3 3 913.0 -11.0 .00 .00 dgrf45 12
11 0 4 944.0 .0 .00 .00 dgrf45 13
12 1 4 776.0 144.0 .00 .00 dgrf45 14
13 2 4 544.0 -276.0 .00 .00 dgrf45 15
14 3 4 -421.0 -55.0 .00 .00 dgrf45 16
15 4 4 304.0 -178.0 .00 .00 dgrf45 17
16 0 5 -253.0 .0 .00 .00 dgrf45 18
17 1 5 346.0 -12.0 .00 .00 dgrf45 19
18 2 5 194.0 95.0 .00 .00 dgrf45 20
19 3 5 -20.0 -67.0 .00 .00 dgrf45 21
20 4 5 -142.0 -119.0 .00 .00 dgrf45 22
21 5 5 -82.0 82.0 .00 .00 dgrf45 23
22 0 6 59.0 .0 .00 .00 dgrf45 24
23 1 6 57.0 6.0 .00 .00 dgrf45 25
24 2 6 6.0 100.0 .00 .00 dgrf45 26
25 3 6 -246.0 16.0 .00 .00 dgrf45 27
26 4 6 -25.0 -9.0 .00 .00 dgrf45 28
27 5 6 21.0 -16.0 .00 .00 dgrf45 29
28 6 6 -104.0 -39.0 .00 .00 dgrf45 30
29 0 7 70.0 .0 .00 .00 dgrf45 31
30 1 7 -40.0 -45.0 .00 .00 dgrf45 32
31 2 7 .0 -18.0 .00 .00 dgrf45 33
32 3 7 .0 2.0 .00 .00 dgrf45 34
33 4 7 -29.0 6.0 .00 .00 dgrf45 35
34 5 7 -10.0 28.0 .00 .00 dgrf45 36
35 6 7 15.0 -17.0 .00 .00 dgrf45 37
36 7 7 29.0 -22.0 .00 .00 dgrf45 38
37 0 8 13.0 .0 .00 .00 dgrf45 39
38 1 8 7.0 12.0 .00 .00 dgrf45 40
39 2 8 -8.0 -21.0 .00 .00 dgrf45 41
40 3 8 -5.0 -12.0 .00 .00 dgrf45 42
41 4 8 9.0 -7.0 .00 .00 dgrf45 43
42 5 8 7.0 2.0 .00 .00 dgrf45 44
43 6 8 -10.0 18.0 .00 .00 dgrf45 45
44 7 8 7.0 3.0 .00 .00 dgrf45 46
45 8 8 2.0 -11.0 .00 .00 dgrf45 47
46 0 9 5.0 .0 .00 .00 dgrf45 48
47 1 9 -21.0 -27.0 .00 .00 dgrf45 49
48 2 9 1.0 17.0 .00 .00 dgrf45 50
49 3 9 -11.0 29.0 .00 .00 dgrf45 51
50 4 9 3.0 -9.0 .00 .00 dgrf45 52
51 5 9 16.0 4.0 .00 .00 dgrf45 53
52 6 9 -3.0 9.0 .00 .00 dgrf45 54
53 7 9 -4.0 6.0 .00 .00 dgrf45 55
54 8 9 -3.0 1.0 .00 .00 dgrf45 56
55 9 9 -4.0 8.0 .00 .00 dgrf45 57
56 010 -3.0 .0 .00 .00 dgrf45 58
57 110 11.0 5.0 .00 .00 dgrf45 59
58 210 1.0 1.0 .00 .00 dgrf45 60
59 310 2.0 -20.0 .00 .00 dgrf45 61
60 410 -5.0 -1.0 .00 .00 dgrf45 62
61 510 -1.0 -6.0 .00 .00 dgrf45 63
62 610 8.0 6.0 .00 .00 dgrf45 64
63 710 -1.0 -4.0 .00 .00 dgrf45 65
64 810 -3.0 -2.0 .00 .00 dgrf45 66
65 910 5.0 .0 .00 .00 dgrf45 67
66 1010 -2.0 -2.0 .00 .00 dgrf45 68
67 DGRF50 1950.00 10 0 0 1950.00 1955.00 -1.0 600.0 dgrf50 1
68 0 1-30554.0 .0 .00 .00 dgrf50 4
69 1 1 -2250.0 5815.0 .00 .00 dgrf50 5
70 0 2 -1341.0 .0 .00 .00 dgrf50 6
71 1 2 2998.0 -1810.0 .00 .00 dgrf50 7
72 2 2 1576.0 381.0 .00 .00 dgrf50 8
73 0 3 1297.0 .0 .00 .00 dgrf50 9
74 1 3 -1889.0 -476.0 .00 .00 dgrf50 10
75 2 3 1274.0 206.0 .00 .00 dgrf50 11
76 3 3 896.0 -46.0 .00 .00 dgrf50 12
77 0 4 954.0 .0 .00 .00 dgrf50 13
78 1 4 792.0 136.0 .00 .00 dgrf50 14
79 2 4 528.0 -278.0 .00 .00 dgrf50 15
80 3 4 -408.0 -37.0 .00 .00 dgrf50 16
81 4 4 303.0 -210.0 .00 .00 dgrf50 17
82 0 5 -240.0 .0 .00 .00 dgrf50 18
83 1 5 349.0 3.0 .00 .00 dgrf50 19
84 2 5 211.0 103.0 .00 .00 dgrf50 20
85 3 5 -20.0 -87.0 .00 .00 dgrf50 21
86 4 5 -147.0 -122.0 .00 .00 dgrf50 22
87 5 5 -76.0 80.0 .00 .00 dgrf50 23
88 0 6 54.0 .0 .00 .00 dgrf50 24
89 1 6 57.0 -1.0 .00 .00 dgrf50 25
90 2 6 4.0 99.0 .00 .00 dgrf50 26
91 3 6 -247.0 33.0 .00 .00 dgrf50 27
92 4 6 -16.0 -12.0 .00 .00 dgrf50 28
93 5 6 12.0 -12.0 .00 .00 dgrf50 29
94 6 6 -105.0 -30.0 .00 .00 dgrf50 30
95 0 7 65.0 .0 .00 .00 dgrf50 31
96 1 7 -55.0 -35.0 .00 .00 dgrf50 32
97 2 7 2.0 -17.0 .00 .00 dgrf50 33
98 3 7 1.0 .0 .00 .00 dgrf50 34
99 4 7 -40.0 10.0 .00 .00 dgrf50 35
100 5 7 -7.0 36.0 .00 .00 dgrf50 36
101 6 7 5.0 -18.0 .00 .00 dgrf50 37
102 7 7 19.0 -16.0 .00 .00 dgrf50 38
103 0 8 22.0 .0 .00 .00 dgrf50 39
104 1 8 15.0 5.0 .00 .00 dgrf50 40
105 2 8 -4.0 -22.0 .00 .00 dgrf50 41
106 3 8 -1.0 .0 .00 .00 dgrf50 42
107 4 8 11.0 -21.0 .00 .00 dgrf50 43
108 5 8 15.0 -8.0 .00 .00 dgrf50 44
109 6 8 -13.0 17.0 .00 .00 dgrf50 45
110 7 8 5.0 -4.0 .00 .00 dgrf50 46
111 8 8 -1.0 -17.0 .00 .00 dgrf50 47
112 0 9 3.0 .0 .00 .00 dgrf50 48
113 1 9 -7.0 -24.0 .00 .00 dgrf50 49
114 2 9 -1.0 19.0 .00 .00 dgrf50 50
115 3 9 -25.0 12.0 .00 .00 dgrf50 51
116 4 9 10.0 2.0 .00 .00 dgrf50 52
117 5 9 5.0 2.0 .00 .00 dgrf50 53
118 6 9 -5.0 8.0 .00 .00 dgrf50 54
119 7 9 -2.0 8.0 .00 .00 dgrf50 55
120 8 9 3.0 -11.0 .00 .00 dgrf50 56
121 9 9 8.0 -7.0 .00 .00 dgrf50 57
122 010 -8.0 .0 .00 .00 dgrf50 58
123 110 4.0 13.0 .00 .00 dgrf50 59
124 210 -1.0 -2.0 .00 .00 dgrf50 60
125 310 13.0 -10.0 .00 .00 dgrf50 61
126 410 -4.0 2.0 .00 .00 dgrf50 62
127 510 4.0 -3.0 .00 .00 dgrf50 63
128 610 12.0 6.0 .00 .00 dgrf50 64
129 710 3.0 -3.0 .00 .00 dgrf50 65
130 810 2.0 6.0 .00 .00 dgrf50 66
131 910 10.0 11.0 .00 .00 dgrf50 67
132 1010 3.0 8.0 .00 .00 dgrf50 68
133 DGRF55 1955.00 10 0 0 1955.00 1960.00 -1.0 600.0 dgrf55 1
134 0 1-30500.0 .0 .00 .00 dgrf55 2
135 1 1 -2215.0 5820.0 .00 .00 dgrf55 3
136 0 2 -1440.0 .0 .00 .00 dgrf55 4
137 1 2 3003.0 -1898.0 .00 .00 dgrf55 5
138 2 2 1581.0 291.0 .00 .00 dgrf55 6
139 0 3 1302.0 .0 .00 .00 dgrf55 7
140 1 3 -1944.0 -462.0 .00 .00 dgrf55 8
141 2 3 1288.0 216.0 .00 .00 dgrf55 9
142 3 3 882.0 -83.0 .00 .00 dgrf55 10
143 0 4 958.0 .0 .00 .00 dgrf55 11
144 1 4 796.0 133.0 .00 .00 dgrf55 12
145 2 4 510.0 -274.0 .00 .00 dgrf55 13
146 3 4 -397.0 -23.0 .00 .00 dgrf55 14
147 4 4 290.0 -230.0 .00 .00 dgrf55 15
148 0 5 -229.0 .0 .00 .00 dgrf55 16
149 1 5 360.0 15.0 .00 .00 dgrf55 17
150 2 5 230.0 110.0 .00 .00 dgrf55 18
151 3 5 -23.0 -98.0 .00 .00 dgrf55 19
152 4 5 -152.0 -121.0 .00 .00 dgrf55 20
153 5 5 -69.0 78.0 .00 .00 dgrf55 21
154 0 6 47.0 .0 .00 .00 dgrf55 22
155 1 6 57.0 -9.0 .00 .00 dgrf55 23
156 2 6 3.0 96.0 .00 .00 dgrf55 24
157 3 6 -247.0 48.0 .00 .00 dgrf55 25
158 4 6 -8.0 -16.0 .00 .00 dgrf55 26
159 5 6 7.0 -12.0 .00 .00 dgrf55 27
160 6 6 -107.0 -24.0 .00 .00 dgrf55 28
161 0 7 65.0 .0 .00 .00 dgrf55 29
162 1 7 -56.0 -50.0 .00 .00 dgrf55 30
163 2 7 2.0 -24.0 .00 .00 dgrf55 31
164 3 7 10.0 -4.0 .00 .00 dgrf55 32
165 4 7 -32.0 8.0 .00 .00 dgrf55 33
166 5 7 -11.0 28.0 .00 .00 dgrf55 34
167 6 7 9.0 -20.0 .00 .00 dgrf55 35
168 7 7 18.0 -18.0 .00 .00 dgrf55 36
169 0 8 11.0 .0 .00 .00 dgrf55 37
170 1 8 9.0 10.0 .00 .00 dgrf55 38
171 2 8 -6.0 -15.0 .00 .00 dgrf55 39
172 3 8 -14.0 5.0 .00 .00 dgrf55 40
173 4 8 6.0 -23.0 .00 .00 dgrf55 41
174 5 8 10.0 3.0 .00 .00 dgrf55 42
175 6 8 -7.0 23.0 .00 .00 dgrf55 43
176 7 8 6.0 -4.0 .00 .00 dgrf55 44
177 8 8 9.0 -13.0 .00 .00 dgrf55 45
178 0 9 4.0 .0 .00 .00 dgrf55 46
179 1 9 9.0 -11.0 .00 .00 dgrf55 47
180 2 9 -4.0 12.0 .00 .00 dgrf55 48
181 3 9 -5.0 7.0 .00 .00 dgrf55 49
182 4 9 2.0 6.0 .00 .00 dgrf55 50
183 5 9 4.0 -2.0 .00 .00 dgrf55 51
184 6 9 1.0 10.0 .00 .00 dgrf55 52
185 7 9 2.0 7.0 .00 .00 dgrf55 53
186 8 9 2.0 -6.0 .00 .00 dgrf55 54
187 9 9 5.0 5.0 .00 .00 dgrf55 55
188 010 -3.0 .0 .00 .00 dgrf55 56
189 110 -5.0 -4.0 .00 .00 dgrf55 57
190 210 -1.0 .0 .00 .00 dgrf55 58
191 310 2.0 -8.0 .00 .00 dgrf55 59
192 410 -3.0 -2.0 .00 .00 dgrf55 60
193 510 7.0 -4.0 .00 .00 dgrf55 61
194 610 4.0 1.0 .00 .00 dgrf55 62
195 710 -2.0 -3.0 .00 .00 dgrf55 63
196 810 6.0 7.0 .00 .00 dgrf55 64
197 910 -2.0 -1.0 .00 .00 dgrf55 65
198 1010 .0 -3.0 .00 .00 dgrf55 66
199 DGRF60 1960.00 10 0 0 1960.00 1965.00 -1.0 600.0 dgrf60 1
200 0 1-30421.0 .0 .00 .00 dgrf60 2
201 1 1 -2169.0 5791.0 .00 .00 dgrf60 3
202 0 2 -1555.0 .0 .00 .00 dgrf60 4
203 1 2 3002.0 -1967.0 .00 .00 dgrf60 5
204 2 2 1590.0 206.0 .00 .00 dgrf60 6
205 0 3 1302.0 .0 .00 .00 dgrf60 7
206 1 3 -1992.0 -414.0 .00 .00 dgrf60 8
207 2 3 1289.0 224.0 .00 .00 dgrf60 9
208 3 3 878.0 -130.0 .00 .00 dgrf60 10
209 0 4 957.0 .0 .00 .00 dgrf60 11
210 1 4 800.0 135.0 .00 .00 dgrf60 12
211 2 4 504.0 -278.0 .00 .00 dgrf60 13
212 3 4 -394.0 3.0 .00 .00 dgrf60 14
213 4 4 269.0 -255.0 .00 .00 dgrf60 15
214 0 5 -222.0 .0 .00 .00 dgrf60 16
215 1 5 362.0 16.0 .00 .00 dgrf60 17
216 2 5 242.0 125.0 .00 .00 dgrf60 18
217 3 5 -26.0 -117.0 .00 .00 dgrf60 19
218 4 5 -156.0 -114.0 .00 .00 dgrf60 20
219 5 5 -63.0 81.0 .00 .00 dgrf60 21
220 0 6 46.0 .0 .00 .00 dgrf60 22
221 1 6 58.0 -10.0 .00 .00 dgrf60 23
222 2 6 1.0 99.0 .00 .00 dgrf60 24
223 3 6 -237.0 60.0 .00 .00 dgrf60 25
224 4 6 -1.0 -20.0 .00 .00 dgrf60 26
225 5 6 -2.0 -11.0 .00 .00 dgrf60 27
226 6 6 -113.0 -17.0 .00 .00 dgrf60 28
227 0 7 67.0 .0 .00 .00 dgrf60 29
228 1 7 -56.0 -55.0 .00 .00 dgrf60 30
229 2 7 5.0 -28.0 .00 .00 dgrf60 31
230 3 7 15.0 -6.0 .00 .00 dgrf60 32
231 4 7 -32.0 7.0 .00 .00 dgrf60 33
232 5 7 -7.0 23.0 .00 .00 dgrf60 34
233 6 7 17.0 -18.0 .00 .00 dgrf60 35
234 7 7 8.0 -17.0 .00 .00 dgrf60 36
235 0 8 15.0 .0 .00 .00 dgrf60 37
236 1 8 6.0 11.0 .00 .00 dgrf60 38
237 2 8 -4.0 -14.0 .00 .00 dgrf60 39
238 3 8 -11.0 7.0 .00 .00 dgrf60 40
239 4 8 2.0 -18.0 .00 .00 dgrf60 41
240 5 8 10.0 4.0 .00 .00 dgrf60 42
241 6 8 -5.0 23.0 .00 .00 dgrf60 43
242 7 8 10.0 1.0 .00 .00 dgrf60 44
243 8 8 8.0 -20.0 .00 .00 dgrf60 45
244 0 9 4.0 .0 .00 .00 dgrf60 46
245 1 9 6.0 -18.0 .00 .00 dgrf60 47
246 2 9 .0 12.0 .00 .00 dgrf60 48
247 3 9 -9.0 2.0 .00 .00 dgrf60 49
248 4 9 1.0 .0 .00 .00 dgrf60 50
249 5 9 4.0 -3.0 .00 .00 dgrf60 51
250 6 9 -1.0 9.0 .00 .00 dgrf60 52
251 7 9 -2.0 8.0 .00 .00 dgrf60 53
252 8 9 3.0 .0 .00 .00 dgrf60 54
253 9 9 -1.0 5.0 .00 .00 dgrf60 55
254 010 1.0 .0 .00 .00 dgrf60 56
255 110 -3.0 4.0 .00 .00 dgrf60 57
256 210 4.0 1.0 .00 .00 dgrf60 58
257 310 .0 .0 .00 .00 dgrf60 59
258 410 -1.0 2.0 .00 .00 dgrf60 60
259 510 4.0 -5.0 .00 .00 dgrf60 61
260 610 6.0 1.0 .00 .00 dgrf60 62
261 710 1.0 -1.0 .00 .00 dgrf60 63
262 810 -1.0 6.0 .00 .00 dgrf60 64
263 910 2.0 .0 .00 .00 dgrf60 65
264 1010 .0 -7.0 .00 .00 dgrf60 66
265 DGRF65 1965.00 10 0 0 1965.00 1970.00 -1.0 600.0 dgrf65 1
266 0 1-30334.0 .0 .00 .00 dgrf65 2
267 1 1 -2119.0 5776.0 .00 .00 dgrf65 3
268 0 2 -1662.0 .0 .00 .00 dgrf65 4
269 1 2 2997.0 -2016.0 .00 .00 dgrf65 5
270 2 2 1594.0 114.0 .00 .00 dgrf65 6
271 0 3 1297.0 .0 .00 .00 dgrf65 7
272 1 3 -2038.0 -404.0 .00 .00 dgrf65 8
273 2 3 1292.0 240.0 .00 .00 dgrf65 9
274 3 3 856.0 -165.0 .00 .00 dgrf65 10
275 0 4 957.0 .0 .00 .00 dgrf65 11
276 1 4 804.0 148.0 .00 .00 dgrf65 12
277 2 4 479.0 -269.0 .00 .00 dgrf65 13
278 3 4 -390.0 13.0 .00 .00 dgrf65 14
279 4 4 252.0 -269.0 .00 .00 dgrf65 15
280 0 5 -219.0 .0 .00 .00 dgrf65 16
281 1 5 358.0 19.0 .00 .00 dgrf65 17
282 2 5 254.0 128.0 .00 .00 dgrf65 18
283 3 5 -31.0 -126.0 .00 .00 dgrf65 19
284 4 5 -157.0 -97.0 .00 .00 dgrf65 20
285 5 5 -62.0 81.0 .00 .00 dgrf65 21
286 0 6 45.0 .0 .00 .00 dgrf65 22
287 1 6 61.0 -11.0 .00 .00 dgrf65 23
288 2 6 8.0 100.0 .00 .00 dgrf65 24
289 3 6 -228.0 68.0 .00 .00 dgrf65 25
290 4 6 4.0 -32.0 .00 .00 dgrf65 26
291 5 6 1.0 -8.0 .00 .00 dgrf65 27
292 6 6 -111.0 -7.0 .00 .00 dgrf65 28
293 0 7 75.0 .0 .00 .00 dgrf65 29
294 1 7 -57.0 -61.0 .00 .00 dgrf65 30
295 2 7 4.0 -27.0 .00 .00 dgrf65 31
296 3 7 13.0 -2.0 .00 .00 dgrf65 32
297 4 7 -26.0 6.0 .00 .00 dgrf65 33
298 5 7 -6.0 26.0 .00 .00 dgrf65 34
299 6 7 13.0 -23.0 .00 .00 dgrf65 35
300 7 7 1.0 -12.0 .00 .00 dgrf65 36
301 0 8 13.0 .0 .00 .00 dgrf65 37
302 1 8 5.0 7.0 .00 .00 dgrf65 38
303 2 8 -4.0 -12.0 .00 .00 dgrf65 39
304 3 8 -14.0 9.0 .00 .00 dgrf65 40
305 4 8 .0 -16.0 .00 .00 dgrf65 41
306 5 8 8.0 4.0 .00 .00 dgrf65 42
307 6 8 -1.0 24.0 .00 .00 dgrf65 43
308 7 8 11.0 -3.0 .00 .00 dgrf65 44
309 8 8 4.0 -17.0 .00 .00 dgrf65 45
310 0 9 8.0 .0 .00 .00 dgrf65 46
311 1 9 10.0 -22.0 .00 .00 dgrf65 47
312 2 9 2.0 15.0 .00 .00 dgrf65 48
313 3 9 -13.0 7.0 .00 .00 dgrf65 49
314 4 9 10.0 -4.0 .00 .00 dgrf65 50
315 5 9 -1.0 -5.0 .00 .00 dgrf65 51
316 6 9 -1.0 10.0 .00 .00 dgrf65 52
317 7 9 5.0 10.0 .00 .00 dgrf65 53
318 8 9 1.0 -4.0 .00 .00 dgrf65 54
319 9 9 -2.0 1.0 .00 .00 dgrf65 55
320 010 -2.0 .0 .00 .00 dgrf65 56
321 110 -3.0 2.0 .00 .00 dgrf65 57
322 210 2.0 1.0 .00 .00 dgrf65 58
323 310 -5.0 2.0 .00 .00 dgrf65 59
324 410 -2.0 6.0 .00 .00 dgrf65 60
325 510 4.0 -4.0 .00 .00 dgrf65 61
326 610 4.0 .0 .00 .00 dgrf65 62
327 710 .0 -2.0 .00 .00 dgrf65 63
328 810 2.0 3.0 .00 .00 dgrf65 64
329 910 2.0 .0 .00 .00 dgrf65 65
330 1010 .0 -6.0 .00 .00 dgrf65 66
331 DGRF70 1970.00 10 0 0 1970.00 1975.00 -1.0 600.0 dgrf70 1
332 0 1-30220.0 .0 .00 .00 dgrf70 2
333 1 1 -2068.0 5737.0 .00 .00 dgrf70 3
334 0 2 -1781.0 .0 .00 .00 dgrf70 4
335 1 2 3000.0 -2047.0 .00 .00 dgrf70 5
336 2 2 1611.0 25.0 .00 .00 dgrf70 6
337 0 3 1287.0 .0 .00 .00 dgrf70 7
338 1 3 -2091.0 -366.0 .00 .00 dgrf70 8
339 2 3 1278.0 251.0 .00 .00 dgrf70 9
340 3 3 838.0 -196.0 .00 .00 dgrf70 10
341 0 4 952.0 .0 .00 .00 dgrf70 11
342 1 4 800.0 167.0 .00 .00 dgrf70 12
343 2 4 461.0 -266.0 .00 .00 dgrf70 13
344 3 4 -395.0 26.0 .00 .00 dgrf70 14
345 4 4 234.0 -279.0 .00 .00 dgrf70 15
346 0 5 -216.0 .0 .00 .00 dgrf70 16
347 1 5 359.0 26.0 .00 .00 dgrf70 17
348 2 5 262.0 139.0 .00 .00 dgrf70 18
349 3 5 -42.0 -139.0 .00 .00 dgrf70 19
350 4 5 -160.0 -91.0 .00 .00 dgrf70 20
351 5 5 -56.0 83.0 .00 .00 dgrf70 21
352 0 6 43.0 .0 .00 .00 dgrf70 22
353 1 6 64.0 -12.0 .00 .00 dgrf70 23
354 2 6 15.0 100.0 .00 .00 dgrf70 24
355 3 6 -212.0 72.0 .00 .00 dgrf70 25
356 4 6 2.0 -37.0 .00 .00 dgrf70 26
357 5 6 3.0 -6.0 .00 .00 dgrf70 27
358 6 6 -112.0 1.0 .00 .00 dgrf70 28
359 0 7 72.0 .0 .00 .00 dgrf70 29
360 1 7 -57.0 -70.0 .00 .00 dgrf70 30
361 2 7 1.0 -27.0 .00 .00 dgrf70 31
362 3 7 14.0 -4.0 .00 .00 dgrf70 32
363 4 7 -22.0 8.0 .00 .00 dgrf70 33
364 5 7 -2.0 23.0 .00 .00 dgrf70 34
365 6 7 13.0 -23.0 .00 .00 dgrf70 35
366 7 7 -2.0 -11.0 .00 .00 dgrf70 36
367 0 8 14.0 .0 .00 .00 dgrf70 37
368 1 8 6.0 7.0 .00 .00 dgrf70 38
369 2 8 -2.0 -15.0 .00 .00 dgrf70 39
370 3 8 -13.0 6.0 .00 .00 dgrf70 40
371 4 8 -3.0 -17.0 .00 .00 dgrf70 41
372 5 8 5.0 6.0 .00 .00 dgrf70 42
373 6 8 .0 21.0 .00 .00 dgrf70 43
374 7 8 11.0 -6.0 .00 .00 dgrf70 44
375 8 8 3.0 -16.0 .00 .00 dgrf70 45
376 0 9 8.0 .0 .00 .00 dgrf70 46
377 1 9 10.0 -21.0 .00 .00 dgrf70 47
378 2 9 2.0 16.0 .00 .00 dgrf70 48
379 3 9 -12.0 6.0 .00 .00 dgrf70 49
380 4 9 10.0 -4.0 .00 .00 dgrf70 50
381 5 9 -1.0 -5.0 .00 .00 dgrf70 51
382 6 9 .0 10.0 .00 .00 dgrf70 52
383 7 9 3.0 11.0 .00 .00 dgrf70 53
384 8 9 1.0 -2.0 .00 .00 dgrf70 54
385 9 9 -1.0 1.0 .00 .00 dgrf70 55
386 010 -3.0 .0 .00 .00 dgrf70 56
387 110 -3.0 1.0 .00 .00 dgrf70 57
388 210 2.0 1.0 .00 .00 dgrf70 58
389 310 -5.0 3.0 .00 .00 dgrf70 59
390 410 -1.0 4.0 .00 .00 dgrf70 60
391 510 6.0 -4.0 .00 .00 dgrf70 61
392 610 4.0 .0 .00 .00 dgrf70 62
393 710 1.0 -1.0 .00 .00 dgrf70 63
394 810 .0 3.0 .00 .00 dgrf70 64
395 910 3.0 1.0 .00 .00 dgrf70 65
396 1010 -1.0 -4.0 .00 .00 dgrf70 66
397 DGRF75 1975.00 10 0 0 1975.00 1980.00 -1.0 600.0 dgrf75 1
398 0 1-30100.0 .0 .00 .00 dgrf75 2
399 1 1 -2013.0 5675.0 .00 .00 dgrf75 3
400 0 2 -1902.0 .0 .00 .00 dgrf75 4
401 1 2 3010.0 -2067.0 .00 .00 dgrf75 5
402 2 2 1632.0 -68.0 .00 .00 dgrf75 6
403 0 3 1276.0 .0 .00 .00 dgrf75 7
404 1 3 -2144.0 -333.0 .00 .00 dgrf75 8
405 2 3 1260.0 262.0 .00 .00 dgrf75 9
406 3 3 830.0 -223.0 .00 .00 dgrf75 10
407 0 4 946.0 .0 .00 .00 dgrf75 11
408 1 4 791.0 191.0 .00 .00 dgrf75 12
409 2 4 438.0 -265.0 .00 .00 dgrf75 13
410 3 4 -405.0 39.0 .00 .00 dgrf75 14
411 4 4 216.0 -288.0 .00 .00 dgrf75 15
412 0 5 -218.0 .0 .00 .00 dgrf75 16
413 1 5 356.0 31.0 .00 .00 dgrf75 17
414 2 5 264.0 148.0 .00 .00 dgrf75 18
415 3 5 -59.0 -152.0 .00 .00 dgrf75 19
416 4 5 -159.0 -83.0 .00 .00 dgrf75 20
417 5 5 -49.0 88.0 .00 .00 dgrf75 21
418 0 6 45.0 .0 .00 .00 dgrf75 22
419 1 6 66.0 -13.0 .00 .00 dgrf75 23
420 2 6 28.0 99.0 .00 .00 dgrf75 24
421 3 6 -198.0 75.0 .00 .00 dgrf75 25
422 4 6 1.0 -41.0 .00 .00 dgrf75 26
423 5 6 6.0 -4.0 .00 .00 dgrf75 27
424 6 6 -111.0 11.0 .00 .00 dgrf75 28
425 0 7 71.0 .0 .00 .00 dgrf75 29
426 1 7 -56.0 -77.0 .00 .00 dgrf75 30
427 2 7 1.0 -26.0 .00 .00 dgrf75 31
428 3 7 16.0 -5.0 .00 .00 dgrf75 32
429 4 7 -14.0 10.0 .00 .00 dgrf75 33
430 5 7 .0 22.0 .00 .00 dgrf75 34
431 6 7 12.0 -23.0 .00 .00 dgrf75 35
432 7 7 -5.0 -12.0 .00 .00 dgrf75 36
433 0 8 14.0 .0 .00 .00 dgrf75 37
434 1 8 6.0 6.0 .00 .00 dgrf75 38
435 2 8 -1.0 -16.0 .00 .00 dgrf75 39
436 3 8 -12.0 4.0 .00 .00 dgrf75 40
437 4 8 -8.0 -19.0 .00 .00 dgrf75 41
438 5 8 4.0 6.0 .00 .00 dgrf75 42
439 6 8 .0 18.0 .00 .00 dgrf75 43
440 7 8 10.0 -10.0 .00 .00 dgrf75 44
441 8 8 1.0 -17.0 .00 .00 dgrf75 45
442 0 9 7.0 .0 .00 .00 dgrf75 46
443 1 9 10.0 -21.0 .00 .00 dgrf75 47
444 2 9 2.0 16.0 .00 .00 dgrf75 48
445 3 9 -12.0 7.0 .00 .00 dgrf75 49
446 4 9 10.0 -4.0 .00 .00 dgrf75 50
447 5 9 -1.0 -5.0 .00 .00 dgrf75 51
448 6 9 -1.0 10.0 .00 .00 dgrf75 52
449 7 9 4.0 11.0 .00 .00 dgrf75 53
450 8 9 1.0 -3.0 .00 .00 dgrf75 54
451 9 9 -2.0 1.0 .00 .00 dgrf75 55
452 010 -3.0 .0 .00 .00 dgrf75 56
453 110 -3.0 1.0 .00 .00 dgrf75 57
454 210 2.0 1.0 .00 .00 dgrf75 58
455 310 -5.0 3.0 .00 .00 dgrf75 59
456 410 -2.0 4.0 .00 .00 dgrf75 60
457 510 5.0 -4.0 .00 .00 dgrf75 61
458 610 4.0 -1.0 .00 .00 dgrf75 62
459 710 1.0 -1.0 .00 .00 dgrf75 63
460 810 .0 3.0 .00 .00 dgrf75 64
461 910 3.0 1.0 .00 .00 dgrf75 65
462 1010 -1.0 -5.0 .00 .00 dgrf75 66
463 DGRF80 1980.00 10 0 0 1980.00 1985.00 -1.0 600.0 dgrf80 1
464 0 1-29992.0 .0 .00 .00 dgrf80 2
465 1 1 -1956.0 5604.0 .00 .00 dgrf80 3
466 0 2 -1997.0 .0 .00 .00 dgrf80 4
467 1 2 3027.0 -2129.0 .00 .00 dgrf80 5
468 2 2 1663.0 -200.0 .00 .00 dgrf80 6
469 0 3 1281.0 .0 .00 .00 dgrf80 7
470 1 3 -2180.0 -336.0 .00 .00 dgrf80 8
471 2 3 1251.0 271.0 .00 .00 dgrf80 9
472 3 3 833.0 -252.0 .00 .00 dgrf80 10
473 0 4 938.0 .0 .00 .00 dgrf80 11
474 1 4 782.0 212.0 .00 .00 dgrf80 12
475 2 4 398.0 -257.0 .00 .00 dgrf80 13
476 3 4 -419.0 53.0 .00 .00 dgrf80 14
477 4 4 199.0 -297.0 .00 .00 dgrf80 15
478 0 5 -218.0 .0 .00 .00 dgrf80 16
479 1 5 357.0 46.0 .00 .00 dgrf80 17
480 2 5 261.0 150.0 .00 .00 dgrf80 18
481 3 5 -74.0 -151.0 .00 .00 dgrf80 19
482 4 5 -162.0 -78.0 .00 .00 dgrf80 20
483 5 5 -48.0 92.0 .00 .00 dgrf80 21
484 0 6 48.0 .0 .00 .00 dgrf80 22
485 1 6 66.0 -15.0 .00 .00 dgrf80 23
486 2 6 42.0 93.0 .00 .00 dgrf80 24
487 3 6 -192.0 71.0 .00 .00 dgrf80 25
488 4 6 4.0 -43.0 .00 .00 dgrf80 26
489 5 6 14.0 -2.0 .00 .00 dgrf80 27
490 6 6 -108.0 17.0 .00 .00 dgrf80 28
491 0 7 72.0 .0 .00 .00 dgrf80 29
492 1 7 -59.0 -82.0 .00 .00 dgrf80 30
493 2 7 2.0 -27.0 .00 .00 dgrf80 31
494 3 7 21.0 -5.0 .00 .00 dgrf80 32
495 4 7 -12.0 16.0 .00 .00 dgrf80 33
496 5 7 1.0 18.0 .00 .00 dgrf80 34
497 6 7 11.0 -23.0 .00 .00 dgrf80 35
498 7 7 -2.0 -10.0 .00 .00 dgrf80 36
499 0 8 18.0 .0 .00 .00 dgrf80 37
500 1 8 6.0 7.0 .00 .00 dgrf80 38
501 2 8 .0 -18.0 .00 .00 dgrf80 39
502 3 8 -11.0 4.0 .00 .00 dgrf80 40
503 4 8 -7.0 -22.0 .00 .00 dgrf80 41
504 5 8 4.0 9.0 .00 .00 dgrf80 42
505 6 8 3.0 16.0 .00 .00 dgrf80 43
506 7 8 6.0 -13.0 .00 .00 dgrf80 44
507 8 8 -1.0 -15.0 .00 .00 dgrf80 45
508 0 9 5.0 .0 .00 .00 dgrf80 46
509 1 9 10.0 -21.0 .00 .00 dgrf80 47
510 2 9 1.0 16.0 .00 .00 dgrf80 48
511 3 9 -12.0 9.0 .00 .00 dgrf80 49
512 4 9 9.0 -5.0 .00 .00 dgrf80 50
513 5 9 -3.0 -6.0 .00 .00 dgrf80 51
514 6 9 -1.0 9.0 .00 .00 dgrf80 52
515 7 9 7.0 10.0 .00 .00 dgrf80 53
516 8 9 2.0 -6.0 .00 .00 dgrf80 54
517 9 9 -5.0 2.0 .00 .00 dgrf80 55
518 010 -4.0 .0 .00 .00 dgrf80 56
519 110 -4.0 1.0 .00 .00 dgrf80 57
520 210 2.0 .0 .00 .00 dgrf80 58
521 310 -5.0 3.0 .00 .00 dgrf80 59
522 410 -2.0 6.0 .00 .00 dgrf80 60
523 510 5.0 -4.0 .00 .00 dgrf80 61
524 610 3.0 .0 .00 .00 dgrf80 62
525 710 1.0 -1.0 .00 .00 dgrf80 63
526 810 2.0 4.0 .00 .00 dgrf80 64
527 910 3.0 .0 .00 .00 dgrf80 65
528 1010 .0 -6.0 .00 .00 dgrf80 66
529 DGRF85 1985.00 10 0 0 1985.00 1990.00 -1.0 600.0 DGRF85
530 0 1-29872.6 .0 .0 .0 DGRF85 1
531 1 1 -1904.6 5500.4 .0 .0 DGRF85 2
532 0 2 -2072.0 .0 .0 .0 DGRF85 3
533 1 2 3044.1 -2197.0 .0 .0 DGRF85 4
534 2 2 1687.1 -306.1 .0 .0 DGRF85 5
535 0 3 1295.6 .0 .0 .0 DGRF85 6
536 1 3 -2208.2 -309.8 .0 .0 DGRF85 7
537 2 3 1246.8 283.8 .0 .0 DGRF85 8
538 3 3 829.4 -296.9 .0 .0 DGRF85 9
539 0 4 936.2 .0 .0 .0 DGRF85 10
540 1 4 780.4 231.7 .0 .0 DGRF85 11
541 2 4 361.4 -249.3 .0 .0 DGRF85 12
542 3 4 -424.3 69.5 .0 .0 DGRF85 13
543 4 4 169.9 -296.9 .0 .0 DGRF85 14
544 0 5 -213.9 .0 .0 .0 DGRF85 15
545 1 5 354.6 47.3 .0 .0 DGRF85 16
546 2 5 253.3 150.4 .0 .0 DGRF85 17
547 3 5 -93.1 -153.7 .0 .0 DGRF85 18
548 4 5 -163.7 -74.9 .0 .0 DGRF85 19
549 5 5 -46.3 95.1 .0 .0 DGRF85 20
550 0 6 53.3 .0 .0 .0 DGRF85 21
551 1 6 65.1 -15.7 .0 .0 DGRF85 22
552 2 6 50.9 88.4 .0 .0 DGRF85 23
553 3 6 -184.8 68.9 .0 .0 DGRF85 24
554 4 6 4.0 -48.0 .0 .0 DGRF85 25
555 5 6 15.9 -.6 .0 .0 DGRF85 26
556 6 6 -102.1 20.8 .0 .0 DGRF85 27
557 0 7 73.6 .0 .0 .0 DGRF85 28
558 1 7 -61.6 -82.7 .0 .0 DGRF85 29
559 2 7 3.2 -26.9 .0 .0 DGRF85 30
560 3 7 24.0 -2.3 .0 .0 DGRF85 31
561 4 7 -6.2 19.8 .0 .0 DGRF85 32
562 5 7 3.5 17.0 .0 .0 DGRF85 33
563 6 7 9.8 -22.8 .0 .0 DGRF85 34
564 7 7 -.5 -6.7 .0 .0 DGRF85 35
565 0 8 20.8 .0 .0 .0 DGRF85 36
566 1 8 6.3 7.7 .0 .0 DGRF85 37
567 2 8 -.0 -18.9 .0 .0 DGRF85 38
568 3 8 -10.9 4.8 .0 .0 DGRF85 39
569 4 8 -9.1 -23.2 .0 .0 DGRF85 40
570 5 8 3.6 10.7 .0 .0 DGRF85 41
571 6 8 3.6 13.6 .0 .0 DGRF85 42
572 7 8 3.8 -14.5 .0 .0 DGRF85 43
573 8 8 -3.7 -11.4 .0 .0 DGRF85 44
574 0 9 4.5 .0 .0 .0 DGRF85 45
575 1 9 9.8 -21.1 .0 .0 DGRF85 46
576 2 9 .6 15.4 .0 .0 DGRF85 47
577 3 9 -11.9 9.3 .0 .0 DGRF85 48
578 4 9 9.5 -5.6 .0 .0 DGRF85 49
579 5 9 -3.5 -6.3 .0 .0 DGRF85 50
580 6 9 -1.3 8.9 .0 .0 DGRF85 51
581 7 9 7.0 9.4 .0 .0 DGRF85 52
582 8 9 1.5 -6.5 .0 .0 DGRF85 53
583 9 9 -5.4 2.0 .0 .0 DGRF85 54
584 010 -3.6 .0 .0 .0 DGRF85 55
585 110 -3.7 1.4 .0 .0 DGRF85 56
586 210 2.6 .4 .0 .0 DGRF85 57
587 310 -5.3 2.9 .0 .0 DGRF85 58
588 410 -2.4 5.8 .0 .0 DGRF85 59
589 510 4.5 -4.1 .0 .0 DGRF85 60
590 610 3.0 -.3 .0 .0 DGRF85 61
591 710 1.2 -1.4 .0 .0 DGRF85 62
592 810 2.2 3.8 .0 .0 DGRF85 63
593 910 3.1 -.4 .0 .0 DGRF85 64
594 1010 .0 -6.2 .0 .0 DGRF85 65
@@ -0,0 +1,67
1 igrf05
2 10 6371.2 2005.0
3 1 0 -29556.8 0.0
4 1 1 -1671.8 5080.0
5 2 0 -2340.5 0.0
6 2 1 3047.0 -2594.9
7 2 2 1656.9 -516.7
8 3 0 1335.7 0.0
9 3 1 -2305.3 -200.4
10 3 2 1246.8 269.3
11 3 3 674.4 -524.5
12 4 0 919.8 0.0
13 4 1 798.2 281.4
14 4 2 211.5 -225.8
15 4 3 -379.5 145.7
16 4 4 100.2 -304.7
17 5 0 -227.6 0.0
18 5 1 354.4 42.7
19 5 2 208.8 179.8
20 5 3 -136.6 -123.0
21 5 4 -168.3 -19.5
22 5 5 -14.1 103.6
23 6 0 72.9 0.0
24 6 1 69.6 -20.2
25 6 2 76.6 54.7
26 6 3 -151.1 63.7
27 6 4 -15.0 -63.4
28 6 5 14.7 0.0
29 6 6 -86.4 50.3
30 7 0 79.8 0.0
31 7 1 -74.4 -61.4
32 7 2 -1.4 -22.5
33 7 3 38.6 6.9
34 7 4 12.3 25.4
35 7 5 9.4 10.9
36 7 6 5.5 -26.4
37 7 7 2.0 -4.8
38 8 0 24.8 0.0
39 8 1 7.7 11.2
40 8 2 -11.4 -21.0
41 8 3 -6.8 9.7
42 8 4 -18.0 -19.8
43 8 5 10.0 16.1
44 8 6 9.4 7.7
45 8 7 -11.4 -12.8
46 8 8 -5.0 -0.1
47 9 0 5.6 0.0
48 9 1 9.8 -20.1
49 9 2 3.6 12.9
50 9 3 -7.0 12.7
51 9 4 5.0 -6.7
52 9 5 -10.8 -8.1
53 9 6 -1.3 8.1
54 9 7 8.7 2.9
55 9 8 -6.7 -7.9
56 9 9 -9.2 5.9
57 10 0 -2.2 0.0
58 10 1 -6.3 2.4
59 10 2 1.6 0.2
60 10 3 -2.5 4.4
61 10 4 -0.1 4.7
62 10 5 3.0 -6.5
63 10 6 0.3 -1.0
64 10 7 2.1 -3.4
65 10 8 3.9 -0.9
66 10 9 -0.1 -2.3
67 10 10 -2.2 -8.0 No newline at end of file
@@ -0,0 +1,46
1 igrf05s
2 8 6371.2 2010.0
3 1 0 8.8 0.
4 1 1 10.8 -21.3
5 2 0 -15.0 0.
6 2 1 -6.9 -23.3
7 2 2 -1.0 -14.0
8 3 0 -0.3 0.0
9 3 1 -3.1 5.4
10 3 2 -0.9 -6.5
11 3 3 -6.8 -2.0
12 4 0 -2.5 0.
13 4 1 2.8 2.0
14 4 2 -7.1 1.8
15 4 3 5.9 5.6
16 4 4 -3.2 0.0
17 5 0 -2.6 0.0
18 5 1 0.4 0.1
19 5 2 -3.0 1.8
20 5 3 -1.2 2.0
21 5 4 0.2 4.5
22 5 5 -0.6 -1.0
23 6 0 -0.8 0.0
24 6 1 0.2 -0.4
25 6 2 -0.2 -1.9
26 6 3 2.1 -0.4
27 6 4 -2.1 -0.4
28 6 5 -0.4 -0.2
29 6 6 1.3 0.9
30 7 0 -0.4 0.0
31 7 1 0.0 0.8
32 7 2 -0.2 0.4
33 7 3 1.1 0.1
34 7 4 0.6 0.2
35 7 5 0.4 -0.9
36 7 6 -0.5 -0.3
37 7 7 0.9 0.3
38 8 0 -0.2 0.0
39 8 1 0.2 -0.2
40 8 2 -0.2 0.2
41 8 3 0.2 0.2
42 8 4 -0.2 0.4
43 8 5 0.2 0.2
44 8 6 0.5 -0.3
45 8 7 -0.7 0.5
46 8 8 0.5 0.4 No newline at end of file
@@ -0,0 +1,106
1 igrf10
2 13 6371.2 2010.0
3 1 0 -29496.50 0.00 11.40 0.00 IGRF2010 1
4 1 1 -1585.90 4945.10 16.70 -28.80 IGRF2010 2
5 2 0 -2396.60 0.00 -11.30 0.00 IGRF2010 3
6 2 1 3026.00 -2707.70 -3.90 -23.00 IGRF2010 4
7 2 2 1668.60 -575.40 2.70 -12.90 IGRF2010 5
8 3 0 1339.70 0.00 1.30 0.00 IGRF2010 6
9 3 1 -2326.30 -160.50 -3.90 8.60 IGRF2010 7
10 3 2 1231.70 251.70 -2.90 -2.90 IGRF2010 8
11 3 3 634.20 -536.80 -8.10 -2.10 IGRF2010 9
12 4 0 912.60 0.00 -1.40 0.00 IGRF2010 10
13 4 1 809.00 286.40 2.00 0.40 IGRF2010 11
14 4 2 166.60 -211.20 -8.90 3.20 IGRF2010 12
15 4 3 -357.10 164.40 4.40 3.60 IGRF2010 13
16 4 4 89.70 -309.20 -2.30 -0.80 IGRF2010 14
17 5 0 -231.10 0.00 -0.50 0.00 IGRF2010 15
18 5 1 357.20 44.70 0.50 0.50 IGRF2010 16
19 5 2 200.30 188.90 -1.50 1.50 IGRF2010 17
20 5 3 -141.20 -118.10 -0.70 0.90 IGRF2010 18
21 5 4 -163.10 0.10 1.30 3.70 IGRF2010 19
22 5 5 -7.70 100.90 1.40 -0.60 IGRF2010 20
23 6 0 72.80 0.00 -0.30 0.00 IGRF2010 21
24 6 1 68.60 -20.80 -0.30 -0.10 IGRF2010 22
25 6 2 76.00 44.20 -0.30 -2.10 IGRF2010 23
26 6 3 -141.40 61.50 1.90 -0.40 IGRF2010 24
27 6 4 -22.90 -66.30 -1.60 -0.50 IGRF2010 25
28 6 5 13.10 3.10 -0.20 0.80 IGRF2010 26
29 6 6 -77.90 54.90 1.80 0.50 IGRF2010 27
30 7 0 80.40 0.00 0.20 0.00 IGRF2010 28
31 7 1 -75.00 -57.80 -0.10 0.60 IGRF2010 29
32 7 2 -4.70 -21.20 -0.60 0.30 IGRF2010 30
33 7 3 45.30 6.60 1.40 -0.20 IGRF2010 31
34 7 4 14.00 24.90 0.30 -0.10 IGRF2010 32
35 7 5 10.40 7.00 0.10 -0.80 IGRF2010 33
36 7 6 1.60 -27.70 -0.80 -0.30 IGRF2010 34
37 7 7 4.90 -3.40 0.40 0.20 IGRF2010 35
38 8 0 24.30 0.00 -0.10 0.00 IGRF2010 36
39 8 1 8.20 10.90 0.10 0.00 IGRF2010 37
40 8 2 -14.50 -20.00 -0.50 0.20 IGRF2010 38
41 8 3 -5.70 11.90 0.30 0.50 IGRF2010 39
42 8 4 -19.30 -17.40 -0.30 0.40 IGRF2010 40
43 8 5 11.60 16.70 0.30 0.10 IGRF2010 41
44 8 6 10.90 7.10 0.20 -0.10 IGRF2010 42
45 8 7 -14.10 -10.80 -0.50 0.40 IGRF2010 43
46 8 8 -3.70 1.70 0.20 0.40 IGRF2010 44
47 9 0 5.40 0.00 0.00 0.00 IGRF2010 45
48 9 1 9.40 -20.50 0.00 0.00 IGRF2010 46
49 9 2 3.40 11.60 0.00 0.00 IGRF2010 47
50 9 3 -5.30 12.80 0.00 0.00 IGRF2010 48
51 9 4 3.10 -7.20 0.00 0.00 IGRF2010 49
52 9 5 -12.40 -7.40 0.00 0.00 IGRF2010 50
53 9 6 -0.80 8.00 0.00 0.00 IGRF2010 51
54 9 7 8.40 2.20 0.00 0.00 IGRF2010 52
55 9 8 -8.40 -6.10 0.00 0.00 IGRF2010 53
56 9 9 -10.10 7.00 0.00 0.00 IGRF2010 54
57 10 0 -2.00 0.00 0.00 0.00 IGRF2010 55
58 10 1 -6.30 2.80 0.00 0.00 IGRF2010 56
59 10 2 0.90 -0.10 0.00 0.00 IGRF2010 57
60 10 3 -1.10 4.70 0.00 0.00 IGRF2010 58
61 10 4 -0.20 4.40 0.00 0.00 IGRF2010 59
62 10 5 2.50 -7.20 0.00 0.00 IGRF2010 60
63 10 6 -0.30 -1.00 0.00 0.00 IGRF2010 61
64 10 7 2.20 -4.00 0.00 0.00 IGRF2010 62
65 10 8 3.10 -2.00 0.00 0.00 IGRF2010 63
66 10 9 -1.00 -2.00 0.00 0.00 IGRF2010 64
67 10 10 -2.80 -8.30 0.00 0.00 IGRF2010 65
68 11 0 3.00 0.00 0.00 0.00 IGRF2010 66
69 11 1 -1.50 0.10 0.00 0.00 IGRF2010 67
70 11 2 -2.10 1.70 0.00 0.00 IGRF2010 68
71 11 3 1.60 -0.60 0.00 0.00 IGRF2010 69
72 11 4 -0.50 -1.80 0.00 0.00 IGRF2010 70
73 11 5 0.50 0.90 0.00 0.00 IGRF2010 71
74 11 6 -0.80 -0.40 0.00 0.00 IGRF2010 72
75 11 7 0.40 -2.50 0.00 0.00 IGRF2010 73
76 11 8 1.80 -1.30 0.00 0.00 IGRF2010 74
77 11 9 0.20 -2.10 0.00 0.00 IGRF2010 75
78 11 10 0.80 -1.90 0.00 0.00 IGRF2010 76
79 11 11 3.80 -1.80 0.00 0.00 IGRF2010 77
80 12 0 -2.10 0.00 0.00 0.00 IGRF2010 78
81 12 1 -0.20 -0.80 0.00 0.00 IGRF2010 79
82 12 2 0.30 0.30 0.00 0.00 IGRF2010 80
83 12 3 1.00 2.20 0.00 0.00 IGRF2010 81
84 12 4 -0.70 -2.50 0.00 0.00 IGRF2010 82
85 12 5 0.90 0.50 0.00 0.00 IGRF2010 83
86 12 6 -0.10 0.60 0.00 0.00 IGRF2010 84
87 12 7 0.50 0.00 0.00 0.00 IGRF2010 85
88 12 8 -0.40 0.10 0.00 0.00 IGRF2010 86
89 12 9 -0.40 0.30 0.00 0.00 IGRF2010 87
90 12 10 0.20 -0.90 0.00 0.00 IGRF2010 88
91 12 11 -0.80 -0.20 0.00 0.00 IGRF2010 89
92 12 12 0.00 0.80 0.00 0.00 IGRF2010 90
93 13 0 -0.20 0.00 0.00 0.00 IGRF2010 91
94 13 1 -0.90 -0.80 0.00 0.00 IGRF2010 92
95 13 2 0.30 0.30 0.00 0.00 IGRF2010 93
96 13 3 0.40 1.70 0.00 0.00 IGRF2010 94
97 13 4 -0.40 -0.60 0.00 0.00 IGRF2010 95
98 13 5 1.10 -1.20 0.00 0.00 IGRF2010 96
99 13 6 -0.30 -0.10 0.00 0.00 IGRF2010 97
100 13 7 0.80 0.50 0.00 0.00 IGRF2010 98
101 13 8 -0.20 0.10 0.00 0.00 IGRF2010 99
102 13 9 0.40 0.50 0.00 0.00 IGRF2010 100
103 13 10 0.00 0.40 0.00 0.00 IGRF2010 101
104 13 11 0.40 -0.20 0.00 0.00 IGRF2010 102
105 13 12 -0.30 -0.50 0.00 0.00 IGRF2010 103
106 13 13 -0.30 -0.80 0.00 0.00 IGRF2010 104
@@ -0,0 +1,106
1 igrf10s
2 13 6371.2 2015.0
3 1 0 11.40 0.00 IGRF2010 1
4 1 1 16.70 -28.80 IGRF2010 2
5 2 0 -11.30 0.00 IGRF2010 3
6 2 1 -3.90 -23.00 IGRF2010 4
7 2 2 2.70 -12.90 IGRF2010 5
8 3 0 1.30 0.00 IGRF2010 6
9 3 1 -3.90 8.60 IGRF2010 7
10 3 2 -2.90 -2.90 IGRF2010 8
11 3 3 -8.10 -2.10 IGRF2010 9
12 4 0 -1.40 0.00 IGRF2010 10
13 4 1 2.00 0.40 IGRF2010 11
14 4 2 -8.90 3.20 IGRF2010 12
15 4 3 4.40 3.60 IGRF2010 13
16 4 4 -2.30 -0.80 IGRF2010 14
17 5 0 -0.50 0.00 IGRF2010 15
18 5 1 0.50 0.50 IGRF2010 16
19 5 2 -1.50 1.50 IGRF2010 17
20 5 3 -0.70 0.90 IGRF2010 18
21 5 4 1.30 3.70 IGRF2010 19
22 5 5 1.40 -0.60 IGRF2010 20
23 6 0 -0.30 0.00 IGRF2010 21
24 6 1 -0.30 -0.10 IGRF2010 22
25 6 2 -0.30 -2.10 IGRF2010 23
26 6 3 1.90 -0.40 IGRF2010 24
27 6 4 -1.60 -0.50 IGRF2010 25
28 6 5 -0.20 0.80 IGRF2010 26
29 6 6 1.80 0.50 IGRF2010 27
30 7 0 0.20 0.00 IGRF2010 28
31 7 1 -0.10 0.60 IGRF2010 29
32 7 2 -0.60 0.30 IGRF2010 30
33 7 3 1.40 -0.20 IGRF2010 31
34 7 4 0.30 -0.10 IGRF2010 32
35 7 5 0.10 -0.80 IGRF2010 33
36 7 6 -0.80 -0.30 IGRF2010 34
37 7 7 0.40 0.20 IGRF2010 35
38 8 0 -0.10 0.00 IGRF2010 36
39 8 1 0.10 0.00 IGRF2010 37
40 8 2 -0.50 0.20 IGRF2010 38
41 8 3 0.30 0.50 IGRF2010 39
42 8 4 -0.30 0.40 IGRF2010 40
43 8 5 0.30 0.10 IGRF2010 41
44 8 6 0.20 -0.10 IGRF2010 42
45 8 7 -0.50 0.40 IGRF2010 43
46 8 8 0.20 0.40 IGRF2010 44
47 9 0 0.00 0.00 IGRF2010 45
48 9 1 0.00 0.00 IGRF2010 46
49 9 2 0.00 0.00 IGRF2010 47
50 9 3 0.00 0.00 IGRF2010 48
51 9 4 0.00 0.00 IGRF2010 49
52 9 5 0.00 0.00 IGRF2010 50
53 9 6 0.00 0.00 IGRF2010 51
54 9 7 0.00 0.00 IGRF2010 52
55 9 8 0.00 0.00 IGRF2010 53
56 9 9 0.00 0.00 IGRF2010 54
57 10 0 0.00 0.00 IGRF2010 55
58 10 1 0.00 0.00 IGRF2010 56
59 10 2 0.00 0.00 IGRF2010 57
60 10 3 0.00 0.00 IGRF2010 58
61 10 4 0.00 0.00 IGRF2010 59
62 10 5 0.00 0.00 IGRF2010 60
63 10 6 0.00 0.00 IGRF2010 61
64 10 7 0.00 0.00 IGRF2010 62
65 10 8 0.00 0.00 IGRF2010 63
66 10 9 0.00 0.00 IGRF2010 64
67 10 10 0.00 0.00 IGRF2010 65
68 11 0 0.00 0.00 IGRF2010 66
69 11 1 0.00 0.00 IGRF2010 67
70 11 2 0.00 0.00 IGRF2010 68
71 11 3 0.00 0.00 IGRF2010 69
72 11 4 0.00 0.00 IGRF2010 70
73 11 5 0.00 0.00 IGRF2010 71
74 11 6 0.00 0.00 IGRF2010 72
75 11 7 0.00 0.00 IGRF2010 73
76 11 8 0.00 0.00 IGRF2010 74
77 11 9 0.00 0.00 IGRF2010 75
78 11 10 0.00 0.00 IGRF2010 76
79 11 11 0.00 0.00 IGRF2010 77
80 12 0 0.00 0.00 IGRF2010 78
81 12 1 0.00 0.00 IGRF2010 79
82 12 2 0.00 0.00 IGRF2010 80
83 12 3 0.00 0.00 IGRF2010 81
84 12 4 0.00 0.00 IGRF2010 82
85 12 5 0.00 0.00 IGRF2010 83
86 12 6 0.00 0.00 IGRF2010 84
87 12 7 0.00 0.00 IGRF2010 85
88 12 8 0.00 0.00 IGRF2010 86
89 12 9 0.00 0.00 IGRF2010 87
90 12 10 0.00 0.00 IGRF2010 88
91 12 11 0.00 0.00 IGRF2010 89
92 12 12 0.00 0.00 IGRF2010 90
93 13 0 0.00 0.00 IGRF2010 91
94 13 1 0.00 0.00 IGRF2010 92
95 13 2 0.00 0.00 IGRF2010 93
96 13 3 0.00 0.00 IGRF2010 94
97 13 4 0.00 0.00 IGRF2010 95
98 13 5 0.00 0.00 IGRF2010 96
99 13 6 0.00 0.00 IGRF2010 97
100 13 7 0.00 0.00 IGRF2010 98
101 13 8 0.00 0.00 IGRF2010 99
102 13 9 0.00 0.00 IGRF2010 100
103 13 10 0.00 0.00 IGRF2010 101
104 13 11 0.00 0.00 IGRF2010 102
105 13 12 0.00 0.00 IGRF2010 103
106 13 13 0.00 0.00 IGRF2010 104
@@ -0,0 +1,106
1 igrf15
2 13 6371.2 2015.0
3 1 0 -29442.00 0.00
4 1 1 -1501.00 4797.10
5 2 0 -2445.10 0.00
6 2 1 3012.90 -2845.60
7 2 2 1676.70 -641.90
8 3 0 1350.70 0.00
9 3 1 -2352.30 -115.30
10 3 2 1225.60 244.90
11 3 3 582.00 -538.40
12 4 0 907.60 0.00
13 4 1 813.70 283.30
14 4 2 120.40 -188.70
15 4 3 -334.90 180.90
16 4 4 70.40 -329.50
17 5 0 -232.60 0.00
18 5 1 360.10 47.30
19 5 2 192.40 197.00
20 5 3 -140.90 -119.30
21 5 4 -157.50 16.00
22 5 5 4.10 100.20
23 6 0 70.00 0.00
24 6 1 67.70 -20.80
25 6 2 72.70 33.20
26 6 3 -129.90 58.90
27 6 4 -28.90 -66.70
28 6 5 13.20 7.30
29 6 6 -70.90 62.60
30 7 0 81.60 0.00
31 7 1 -76.10 -54.10
32 7 2 -6.80 -19.50
33 7 3 51.80 5.70
34 7 4 15.00 24.40
35 7 5 9.40 3.40
36 7 6 -2.80 -27.40
37 7 7 6.80 -2.20
38 8 0 24.20 0.00
39 8 1 8.80 10.10
40 8 2 -16.90 -18.30
41 8 3 -3.20 13.30
42 8 4 -20.60 -14.60
43 8 5 13.40 16.20
44 8 6 11.70 5.70
45 8 7 -15.90 -9.10
46 8 8 -2.00 2.10
47 9 0 5.40 0.00
48 9 1 8.80 -21.60
49 9 2 3.10 10.80
50 9 3 -3.30 11.80
51 9 4 0.70 -6.80
52 9 5 -13.30 -6.90
53 9 6 -0.10 7.80
54 9 7 8.70 1.00
55 9 8 -9.10 -4.00
56 9 9 -10.50 8.40
57 10 0 -1.90 0.00
58 10 1 -6.30 3.20
59 10 2 0.10 -0.40
60 10 3 0.50 4.60
61 10 4 -0.50 4.40
62 10 5 1.80 -7.90
63 10 6 -0.70 -0.60
64 10 7 2.10 -4.20
65 10 8 2.40 -2.80
66 10 9 -1.80 -1.20
67 10 10 -3.60 -8.70
68 11 0 3.10 0.00
69 11 1 -1.50 -0.10
70 11 2 -2.30 2.00
71 11 3 2.00 -0.70
72 11 4 -0.80 -1.10
73 11 5 0.60 0.80
74 11 6 -0.70 -0.20
75 11 7 0.20 -2.20
76 11 8 1.70 -1.40
77 11 9 -0.20 -2.50
78 11 10 0.40 -2.00
79 11 11 3.50 -2.40
80 12 0 -1.90 0.00
81 12 1 -0.20 -1.10
82 12 2 0.40 0.40
83 12 3 1.20 1.90
84 12 4 -0.80 -2.20
85 12 5 0.90 0.30
86 12 6 0.10 0.70
87 12 7 0.50 -0.10
88 12 8 -0.30 0.30
89 12 9 -0.40 0.20
90 12 10 0.20 -0.90
91 12 11 -0.90 -0.10
92 12 12 0.00 0.70
93 13 0 0.00 0.00
94 13 1 -0.90 -0.90
95 13 2 0.40 0.40
96 13 3 0.50 1.60
97 13 4 -0.50 -0.50
98 13 5 1.00 -1.20
99 13 6 -0.20 -0.10
100 13 7 0.80 0.40
101 13 8 -0.10 -0.10
102 13 9 0.30 0.40
103 13 10 0.10 0.50
104 13 11 0.50 -0.30
105 13 12 -0.40 -0.40
106 13 13 -0.30 -0.80
@@ -0,0 +1,106
1 igrf15s
2 13 6371.2 2020.0
3 1 0 10.30 0.00
4 1 1 18.10 -26.60
5 2 0 -8.70 0.00
6 2 1 -3.30 -27.40
7 2 2 2.10 -14.10
8 3 0 3.40 0.00
9 3 1 -5.50 8.20
10 3 2 -0.70 -0.40
11 3 3 -10.10 1.80
12 4 0 -0.70 0.00
13 4 1 0.20 -1.30
14 4 2 -9.10 5.30
15 4 3 4.10 2.90
16 4 4 -4.30 -5.20
17 5 0 -0.20 0.00
18 5 1 0.50 0.60
19 5 2 -1.30 1.70
20 5 3 -0.10 -1.20
21 5 4 1.40 3.40
22 5 5 3.90 0.00
23 6 0 -0.30 0.00
24 6 1 -0.10 0.00
25 6 2 -0.70 -2.10
26 6 3 2.10 -0.70
27 6 4 -1.20 0.20
28 6 5 0.30 0.90
29 6 6 1.60 1.00
30 7 0 0.30 0.00
31 7 1 -0.20 0.80
32 7 2 -0.50 0.40
33 7 3 1.30 -0.20
34 7 4 0.10 -0.30
35 7 5 -0.60 -0.60
36 7 6 -0.80 0.10
37 7 7 0.20 -0.20
38 8 0 0.20 0.00
39 8 1 0.00 -0.30
40 8 2 -0.60 0.30
41 8 3 0.50 0.10
42 8 4 -0.20 0.50
43 8 5 0.40 -0.20
44 8 6 0.10 -0.30
45 8 7 -0.40 0.30
46 8 8 0.30 0.00
47 9 0 0.00 0.00
48 9 1 0.00 0.00
49 9 2 0.00 0.00
50 9 3 0.00 0.00
51 9 4 0.00 0.00
52 9 5 0.00 0.00
53 9 6 0.00 0.00
54 9 7 0.00 0.00
55 9 8 0.00 0.00
56 9 9 0.00 0.00
57 10 0 0.00 0.00
58 10 1 0.00 0.00
59 10 2 0.00 0.00
60 10 3 0.00 0.00
61 10 4 0.00 0.00
62 10 5 0.00 0.00
63 10 6 0.00 0.00
64 10 7 0.00 0.00
65 10 8 0.00 0.00
66 10 9 0.00 0.00
67 10 10 0.00 0.00
68 11 0 0.00 0.00
69 11 1 0.00 0.00
70 11 2 0.00 0.00
71 11 3 0.00 0.00
72 11 4 0.00 0.00
73 11 5 0.00 0.00
74 11 6 0.00 0.00
75 11 7 0.00 0.00
76 11 8 0.00 0.00
77 11 9 0.00 0.00
78 11 10 0.00 0.00
79 11 11 0.00 0.00
80 12 0 0.00 0.00
81 12 1 0.00 0.00
82 12 2 0.00 0.00
83 12 3 0.00 0.00
84 12 4 0.00 0.00
85 12 5 0.00 0.00
86 12 6 0.00 0.00
87 12 7 0.00 0.00
88 12 8 0.00 0.00
89 12 9 0.00 0.00
90 12 10 0.00 0.00
91 12 11 0.00 0.00
92 12 12 0.00 0.00
93 13 0 0.00 0.00
94 13 1 0.00 0.00
95 13 2 0.00 0.00
96 13 3 0.00 0.00
97 13 4 0.00 0.00
98 13 5 0.00 0.00
99 13 6 0.00 0.00
100 13 7 0.00 0.00
101 13 8 0.00 0.00
102 13 9 0.00 0.00
103 13 10 0.00 0.00
104 13 11 0.00 0.00
105 13 12 0.00 0.00
106 13 13 0.00 0.00
@@ -0,0 +1,106
1 igrf2020
2 13 6371.20 2020.0
3 1 0 -29404.8 0
4 1 1 -1450.9 4652.5
5 2 0 -2499.6 0
6 2 1 2982 -2991.6
7 2 2 1677 -734.6
8 3 0 1363.2 0
9 3 1 -2381.2 -82.1
10 3 2 1236.2 241.9
11 3 3 525.7 -543.4
12 4 0 903 0
13 4 1 809.5 281.9
14 4 2 86.3 -158.4
15 4 3 -309.4 199.7
16 4 4 48 -349.7
17 5 0 -234.3 0
18 5 1 363.2 47.7
19 5 2 187.8 208.3
20 5 3 -140.7 -121.2
21 5 4 -151.2 32.3
22 5 5 13.5 98.9
23 6 0 66 0
24 6 1 65.5 -19.1
25 6 2 72.9 25.1
26 6 3 -121.5 52.8
27 6 4 -36.2 -64.5
28 6 5 13.5 8.9
29 6 6 -64.7 68.1
30 7 0 80.6 0
31 7 1 -76.7 -51.5
32 7 2 -8.2 -16.9
33 7 3 56.5 2.2
34 7 4 15.8 23.5
35 7 5 6.4 -2.2
36 7 6 -7.2 -27.2
37 7 7 9.8 -1.8
38 8 0 23.7 0
39 8 1 9.7 8.4
40 8 2 -17.6 -15.3
41 8 3 -0.5 12.8
42 8 4 -21.1 -11.7
43 8 5 15.3 14.9
44 8 6 13.7 3.6
45 8 7 -16.5 -6.9
46 8 8 -0.3 2.8
47 9 0 5 0
48 9 1 8.4 -23.4
49 9 2 2.9 11
50 9 3 -1.5 9.8
51 9 4 -1.1 -5.1
52 9 5 -13.2 -6.3
53 9 6 1.1 7.8
54 9 7 8.8 0.4
55 9 8 -9.3 -1.4
56 9 9 -11.9 9.6
57 10 0 -1.9 0
58 10 1 -6.2 3.4
59 10 2 -0.1 -0.2
60 10 3 1.7 3.6
61 10 4 -0.9 4.8
62 10 5 0.7 -8.6
63 10 6 -0.9 -0.1
64 10 7 1.9 -4.3
65 10 8 1.4 -3.4
66 10 9 -2.4 -0.1
67 10 10 -3.8 -8.8
68 11 0 3 0
69 11 1 -1.4 0
70 11 2 -2.5 2.5
71 11 3 2.3 -0.6
72 11 4 -0.9 -0.4
73 11 5 0.3 0.6
74 11 6 -0.7 -0.2
75 11 7 -0.1 -1.7
76 11 8 1.4 -1.6
77 11 9 -0.6 -3
78 11 10 0.2 -2
79 11 11 3.1 -2.6
80 12 0 -2 0
81 12 1 -0.1 -1.2
82 12 2 0.5 0.5
83 12 3 1.3 1.4
84 12 4 -1.2 -1.8
85 12 5 0.7 0.1
86 12 6 0.3 0.8
87 12 7 0.5 -0.2
88 12 8 -0.3 0.6
89 12 9 -0.5 0.2
90 12 10 0.1 -0.9
91 12 11 -1.1 0
92 12 12 -0.3 0.5
93 13 0 0.1 0
94 13 1 -0.9 -0.9
95 13 2 0.5 0.6
96 13 3 0.7 1.4
97 13 4 -0.3 -0.4
98 13 5 0.8 -1.3
99 13 6 0 -0.1
100 13 7 0.8 0.3
101 13 8 0 -0.1
102 13 9 0.4 0.5
103 13 10 0.1 0.5
104 13 11 0.5 -0.4
105 13 12 -0.5 -0.4
106 13 13 -0.4 -0.6
@@ -0,0 +1,67
1 igrf00
2 10 6371.2 2000.0
3 1 0 -29615. 0.0
4 1 1 -1728. 5186.
5 2 0 -2267. 0.0
6 2 1 3072. -2478.
7 2 2 1672. -458.
8 3 0 1341. 0.0
9 3 1 -2290. -227.
10 3 2 1253. 296.
11 3 3 715. -492.
12 4 0 935. .0
13 4 1 787. 272.
14 4 2 251. -232.
15 4 3 -405. 119.
16 4 4 110. -304.
17 5 0 -217. .0
18 5 1 351. 44.
19 5 2 222. 172.
20 5 3 -131. -134.
21 5 4 -169. -40.
22 5 5 -12. 107.
23 6 0 72. .0
24 6 1 68. -17.
25 6 2 74. 64.
26 6 3 -161. 65.
27 6 4 -5. -61.
28 6 5 17. 1.
29 6 6 -91. 44.
30 7 0 79. .0
31 7 1 -74. -65.
32 7 2 0. -24.
33 7 3 33. 6.
34 7 4 9. 24.
35 7 5 7. 15.
36 7 6 8. -25.
37 7 7 -2. -6.
38 8 0 25. .0
39 8 1 6. 12.
40 8 2 -9. -22.
41 8 3 -8. 8.
42 8 4 -17. -21.
43 8 5 9. 15.
44 8 6 7. 9.
45 8 7 -8. -16.
46 8 8 -7. -3.
47 9 0 5. .0
48 9 1 9. -20.
49 9 2 3. 13.
50 9 3 -8. 12.
51 9 4 6. -6.
52 9 5 -9. -8.
53 9 6 -2. 9.
54 9 7 9. 4.
55 9 8 -4. -8.
56 9 9 -8. 5.
57 10 0 -2. .0
58 10 1 -6. 1.
59 10 2 2. 0.
60 10 3 -3. 4.
61 10 4 0. 5.
62 10 5 4. -6.
63 10 6 1. -1.
64 10 7 2. -3.
65 10 8 4. 0.
66 10 9 0. -2.
67 10 10 -1. -8.
@@ -0,0 +1,67
1 igrf2000
2 10 6371.2 2000.0
3 1 0 -29615. 0.
4 1 1 -1728. 5186.
5 2 0 -2267. 0.
6 2 1 3072. -2478.
7 2 2 1672. -458.
8 3 0 1341. 0.
9 3 1 -2290. -227.
10 3 2 1253. 296.
11 3 3 715. -492.
12 4 0 935. 0.
13 4 1 787. 272.
14 4 2 251. -232.
15 4 3 -405. 119.
16 4 4 110. -304.
17 5 0 -217. 0.
18 5 1 351. 44.
19 5 2 222. 172.
20 5 3 -131. -134.
21 5 4 -169. -40.
22 5 5 -12. 107.
23 6 0 72. 0.
24 6 1 68. -17.
25 6 2 74. 64.
26 6 3 -161. 65.
27 6 4 -5. -61.
28 6 5 17. 1.
29 6 6 -91. 44.
30 7 0 79. 0.
31 7 1 -74. -65.
32 7 2 0. -24.
33 7 3 33. 6.
34 7 4 9. 24.
35 7 5 7. 15.
36 7 6 8. -25.
37 7 7 -2. -6.
38 8 0 25. 0.
39 8 1 6. 12.
40 8 2 -9. -22.
41 8 3 -8. 8.
42 8 4 -17. -21.
43 8 5 9. 15.
44 8 6 7. 9.
45 8 7 -8. -16.
46 8 8 -7. -3.
47 9 0 5. 0.
48 9 1 9. -20.
49 9 2 3. 13.
50 9 3 -8. 12.
51 9 4 6. -6.
52 9 5 -9. -8.
53 9 6 -2. 9.
54 9 7 9. 4.
55 9 8 -4. -8.
56 9 9 -8. 5.
57 10 0 -2. 0.
58 10 1 -6. 1.
59 10 2 2. 0.
60 10 3 -3. 4.
61 10 4 0. 5.
62 10 5 4. -6.
63 10 6 1. -1.
64 10 7 2. -3.
65 10 8 4. 0.
66 10 9 0. -2.
67 10 10 -1. -8.
@@ -0,0 +1,67
1 igrf00
2 10 6371.2 2000.0
3 1 0 -29615. 0.
4 1 1 -1728. 5186.
5 2 0 -2267. 0.
6 2 1 3072. -2478.
7 2 2 1672. -458.
8 3 0 1341. 0.
9 3 1 -2290. -227.
10 3 2 1253. 296.
11 3 3 715. -492.
12 4 0 935. 0.
13 4 1 787. 272.
14 4 2 251. -232.
15 4 3 -405. 119.
16 4 4 110. -304.
17 5 0 -217. 0.
18 5 1 351. 44.
19 5 2 222. 172.
20 5 3 -131. -134.
21 5 4 -169. -40.
22 5 5 -12. 107.
23 6 0 72. 0.
24 6 1 68. -17.
25 6 2 74. 64.
26 6 3 -161. 65.
27 6 4 -5. -61.
28 6 5 17. 1.
29 6 6 -91. 44.
30 7 0 79. 0.
31 7 1 -74. -65.
32 7 2 0. -24.
33 7 3 33. 6.
34 7 4 9. 24.
35 7 5 7. 15.
36 7 6 8. -25.
37 7 7 -2. -6.
38 8 0 25. 0.
39 8 1 6. 12.
40 8 2 -9. -22.
41 8 3 -8. 8.
42 8 4 -17. -21.
43 8 5 9. 15.
44 8 6 7. 9.
45 8 7 -8. -16.
46 8 8 -7. -3.
47 9 0 5. 0.
48 9 1 9. -20.
49 9 2 3. 13.
50 9 3 -8. 12.
51 9 4 6. -6.
52 9 5 -9. -8.
53 9 6 -2. 9.
54 9 7 9. 4.
55 9 8 -4. -8.
56 9 9 -8. 5.
57 10 0 -2. 0.
58 10 1 -6. 1.
59 10 2 2. 0.
60 10 3 -3. 4.
61 10 4 0. 5.
62 10 5 4. -6.
63 10 6 1. -1.
64 10 7 2. -3.
65 10 8 4. 0.
66 10 9 0. -2.
67 10 10 -1. -8.
@@ -0,0 +1,46
1 igrf00s
2 8 6371.2 2005.0
3 1 0 14.6 0.
4 1 1 10.7 -22.5
5 2 0 -12.4 0.
6 2 1 1.1 -20.6
7 2 2 -1.1 -9.6
8 3 0 0.7 0.
9 3 1 -5.4 6.0
10 3 2 0.9 -0.1
11 3 3 -7.7 -14.2
12 4 0 -1.3 0.
13 4 1 1.6 2.1
14 4 2 -7.3 1.3
15 4 3 2.9 5.0
16 4 4 -3.2 0.3
17 5 0 0.0 0.
18 5 1 -0.7 -0.1
19 5 2 -2.1 0.6
20 5 3 -2.8 1.7
21 5 4 -0.8 1.9
22 5 5 2.5 0.1
23 6 0 1.0 0.
24 6 1 -0.4 -0.2
25 6 2 0.9 -1.4
26 6 3 2.0 0.0
27 6 4 -0.6 -0.8
28 6 5 -0.3 0.0
29 6 6 1.2 0.9
30 7 0 -0.4 0.
31 7 1 -0.4 1.1
32 7 2 -0.3 0.0
33 7 3 1.1 0.3
34 7 4 1.1 -0.1
35 7 5 -0.2 -0.6
36 7 6 0.6 -0.7
37 7 7 -0.9 0.2
38 8 0 -0.3 0.
39 8 1 0.2 0.1
40 8 2 -0.3 0.0
41 8 3 0.4 0.0
42 8 4 -1.0 0.3
43 8 5 0.3 0.6
44 8 6 -0.5 -0.4
45 8 7 -0.7 0.3
46 8 8 -0.4 0.7
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -0,0 +1,106
1 igrf2020s
2 13 6371.2 2025
3 1 0 5.7 0
4 1 1 7.4 -25.9
5 2 0 -11 0
6 2 1 -7 -30.2
7 2 2 -2.1 -22.4
8 3 0 2.2 0
9 3 1 -5.9 6
10 3 2 3.1 -1.1
11 3 3 -12 0.5
12 4 0 -1.2 0
13 4 1 -1.6 -0.1
14 4 2 -5.9 6.5
15 4 3 5.2 3.6
16 4 4 -5.1 -5
17 5 0 -0.3 0
18 5 1 0.5 0
19 5 2 -0.6 2.5
20 5 3 0.2 -0.6
21 5 4 1.3 3
22 5 5 0.9 0.3
23 6 0 -0.5 0
24 6 1 -0.3 0
25 6 2 0.4 -1.6
26 6 3 1.3 -1.3
27 6 4 -1.4 0.8
28 6 5 0 0
29 6 6 0.9 1
30 7 0 -0.1 0
31 7 1 -0.2 0.6
32 7 2 0 0.6
33 7 3 0.7 -0.8
34 7 4 0.1 -0.2
35 7 5 -0.5 -1.1
36 7 6 -0.8 0.1
37 7 7 0.8 0.3
38 8 0 0 0
39 8 1 0.1 -0.2
40 8 2 -0.1 0.6
41 8 3 0.4 -0.2
42 8 4 -0.1 0.5
43 8 5 0.4 -0.3
44 8 6 0.3 -0.4
45 8 7 -0.1 0.5
46 8 8 0.4 0
47 9 0 0 0
48 9 1 0 0
49 9 2 0 0
50 9 3 0 0
51 9 4 0 0
52 9 5 0 0
53 9 6 0 0
54 9 7 0 0
55 9 8 0 0
56 9 9 0 0
57 10 0 0 0
58 10 1 0 0
59 10 2 0 0
60 10 3 0 0
61 10 4 0 0
62 10 5 0 0
63 10 6 0 0
64 10 7 0 0
65 10 8 0 0
66 10 9 0 0
67 10 10 0 0
68 11 0 0 0
69 11 1 0 0
70 11 2 0 0
71 11 3 0 0
72 11 4 0 0
73 11 5 0 0
74 11 6 0 0
75 11 7 0 0
76 11 8 0 0
77 11 9 0 0
78 11 10 0 0
79 11 11 0 0
80 12 0 0 0
81 12 1 0 0
82 12 2 0 0
83 12 3 0 0
84 12 4 0 0
85 12 5 0 0
86 12 6 0 0
87 12 7 0 0
88 12 8 0 0
89 12 9 0 0
90 12 10 0 0
91 12 11 0 0
92 12 12 0 0
93 13 0 0 0
94 13 1 0 0
95 13 2 0 0
96 13 3 0 0
97 13 4 0 0
98 13 5 0 0
99 13 6 0 0
100 13 7 0 0
101 13 8 0 0
102 13 9 0 0
103 13 10 0 0
104 13 11 0 0
105 13 12 0 0
106 13 13 0 0
@@ -0,0 +1,46
1 igrf45
2 8 6371.2 1945.0
3 1 0 -30634. 0.
4 1 1 -2240. 5806.
5 2 0 -1215. 0.
6 2 1 2972. -1700.
7 2 2 1588. 497.
8 3 0 1274. 0.
9 3 1 -1833. -512.
10 3 2 1225. 185.
11 3 3 926. -5.
12 4 0 980. 0.
13 4 1 771. 155.
14 4 2 544. -280.
15 4 3 -408. -68.
16 4 4 300. -158.
17 5 0 -286. 0.
18 5 1 341. -14.
19 5 2 207. 80.
20 5 3 -25. -65.
21 5 4 -156. -114.
22 5 5 -88. 83.
23 6 0 68. 0.
24 6 1 67. 9.
25 6 2 6. 118.
26 6 3 -244. 18.
27 6 4 -12. -9.
28 6 5 14. -12.
29 6 6 -100. -42.
30 7 0 72. 0.
31 7 1 -61. -42.
32 7 2 6. -39.
33 7 3 6. 2.
34 7 4 -44. -1.
35 7 5 -2. 25.
36 7 6 18. -19.
37 7 7 27. -23.
38 8 0 15. 0.
39 8 1 5. -7.
40 8 2 -12. 9.
41 8 3 -21. 0.
42 8 4 18. -13.
43 8 5 16. 5.
44 8 6 -14. 26.
45 8 7 1. 1.
46 8 8 10. -19.
@@ -0,0 +1,46
1 igrf50
2 8 6371.2 1950.0
3 1 0 -30571. 0.
4 1 1 -2241. 5807.
5 2 0 -1330. 0.
6 2 1 2978. -1813.
7 2 2 1579. 388.
8 3 0 1293. 0.
9 3 1 -1878. -485.
10 3 2 1271. 228.
11 3 3 890. -67.
12 4 0 975. 0.
13 4 1 795. 171.
14 4 2 532. -306.
15 4 3 -402. -51.
16 4 4 310. -184.
17 5 0 -255. 0.
18 5 1 355. -8.
19 5 2 201. 101.
20 5 3 -3. -95.
21 5 4 -160. -100.
22 5 5 -76. 73.
23 6 0 57. 0.
24 6 1 50. -1.
25 6 2 15. 100.
26 6 3 -261. 52.
27 6 4 8. -7.
28 6 5 8. -17.
29 6 6 -108. -21.
30 7 0 67. 0.
31 7 1 -48. -44.
32 7 2 -3. -18.
33 7 3 16. -6.
34 7 4 -38. -8.
35 7 5 1. 32.
36 7 6 9. -18.
37 7 7 11. -22.
38 8 0 16. 0.
39 8 1 4. 2.
40 8 2 -8. -2.
41 8 3 -31. -3.
42 8 4 15. -7.
43 8 5 8. 6.
44 8 6 -17. 27.
45 8 7 7. -6.
46 8 8 13. -22.
@@ -0,0 +1,46
1 igrf55
2 8 6371.2 1955.0
3 1 0 -30507. 0.
4 1 1 -2134. 5796.
5 2 0 -1432. 0.
6 2 1 2995. -1896.
7 2 2 1567. 263.
8 3 0 1308. 0.
9 3 1 -1955. -487.
10 3 2 1293. 235.
11 3 3 897. -73.
12 4 0 964. 0.
13 4 1 794. 167.
14 4 2 510. -275.
15 4 3 -392. -44.
16 4 4 292. -249.
17 5 0 -232. 0.
18 5 1 360. 14.
19 5 2 237. 111.
20 5 3 -13. -90.
21 5 4 -176. -111.
22 5 5 -68. 77.
23 6 0 47. 0.
24 6 1 57. -7.
25 6 2 4. 101.
26 6 3 -250. 46.
27 6 4 12. -16.
28 6 5 13. -6.
29 6 6 -105. -21.
30 7 0 80. 0.
31 7 1 -66. -52.
32 7 2 2. -37.
33 7 3 4. 6.
34 7 4 -46. -1.
35 7 5 -15. 29.
36 7 6 8. -20.
37 7 7 14. -12.
38 8 0 5. 0.
39 8 1 17. 12.
40 8 2 -3. 1.
41 8 3 -30. 10.
42 8 4 14. -20.
43 8 5 27. 5.
44 8 6 -15. 34.
45 8 7 1. 4.
46 8 8 12. -19.
@@ -0,0 +1,67
1 igrf60
2 10 6371.2 1960.0
3 1 0 -30411. 0.
4 1 1 -2162. 5780.
5 2 0 -1546. 0.
6 2 1 3007. -1948.
7 2 2 1572. 209.
8 3 0 1307. 0.
9 3 1 -1987. -421.
10 3 2 1288. 230.
11 3 3 879. -130.
12 4 0 962. 0.
13 4 1 804. 150.
14 4 2 492. -272.
15 4 3 -392. 1.
16 4 4 267. -254.
17 5 0 -236. 0.
18 5 1 358. 12.
19 5 2 229. 121.
20 5 3 -34. -115.
21 5 4 -153. -106.
22 5 5 -64. 83.
23 6 0 47. 0.
24 6 1 56. -13.
25 6 2 -3. 106.
26 6 3 -241. 55.
27 6 4 3. -26.
28 6 5 4. -10.
29 6 6 -108. -16.
30 7 0 72. 0.
31 7 1 -52. -53.
32 7 2 4. -25.
33 7 3 11. -8.
34 7 4 -20. 3.
35 7 5 -4. 28.
36 7 6 15. -16.
37 7 7 6. -18.
38 8 0 6. 0.
39 8 1 4. 7.
40 8 2 -3. -16.
41 8 3 -13. 5.
42 8 4 -5. -19.
43 8 5 10. 5.
44 8 6 -6. 23.
45 8 7 15. -2.
46 8 8 5. -18.
47 9 0 13. 0.
48 9 1 5. -22.
49 9 2 4. 14.
50 9 3 -12. 5.
51 9 4 14. -5.
52 9 5 5. 0.
53 9 6 -2. 11.
54 9 7 0. 10.
55 9 8 0. 2.
56 9 9 -1. -2.
57 10 0 -5. 0.
58 10 1 -2. 3.
59 10 2 0. 0.
60 10 3 -5. 4.
61 10 4 -2. 3.
62 10 5 8. -4.
63 10 6 3. -2.
64 10 7 0. -3.
65 10 8 1. 5.
66 10 9 0. 3.
67 10 10 -1. -3.
@@ -0,0 +1,67
1 igrf85
2 10 6371.2 1980.0
3 1 0 -29877. 0.
4 1 1 -1903. 5497.
5 2 0 -2073. 0.
6 2 1 3045. -2191.
7 2 2 1691. -309.
8 3 0 1300. 0.
9 3 1 -2208. -312.
10 3 2 1244. 284.
11 3 3 835. -296.
12 4 0 937. 0.
13 4 1 780. 233.
14 4 2 363. -250.
15 4 3 -426. 68.
16 4 4 169. -298.
17 5 0 -215. 0.
18 5 1 356. 47.
19 5 2 253. 148.
20 5 3 -94. -155.
21 5 4 -161. -75.
22 5 5 -48. 95.
23 6 0 52. 0.
24 6 1 65. -16.
25 6 2 50. 90.
26 6 3 -186. 69.
27 6 4 4. -50.
28 6 5 17. -4.
29 6 6 -102. 20.
30 7 0 75. 0.
31 7 1 -61. -82.
32 7 2 2. -26.
33 7 3 24. -1.
34 7 4 -6. 23.
35 7 5 4. 17.
36 7 6 9. -21.
37 7 7 0. -6.
38 8 0 21. 0.
39 8 1 6. 7.
40 8 2 0. -21.
41 8 3 -11. 5.
42 8 4 -9. -25.
43 8 5 2. 11.
44 8 6 4. 12.
45 8 7 4. -16.
46 8 8 -6. -10.
47 9 0 5. 0.
48 9 1 10. -21.
49 9 2 1. 16.
50 9 3 -12. 9.
51 9 4 9. -5.
52 9 5 -3. -6.
53 9 6 -1. 9.
54 9 7 7. 10.
55 9 8 2. -6.
56 9 9 -5. 2.
57 10 0 -4. 0.
58 10 1 -4. 1.
59 10 2 2. 0.
60 10 3 -5. 3.
61 10 4 -2. 6.
62 10 5 5. -4.
63 10 6 3. 0.
64 10 7 1. -1.
65 10 8 2. 4.
66 10 9 3. 0.
67 10 10 0. -6.
@@ -0,0 +1,46
1 igrf85s
2 8 6371.2 1990.0
3 1 0 23.2 0.0
4 1 1 10.0 -24.5
5 2 0 -13.7 0.0
6 2 1 3.4 -11.5
7 2 2 7.0 -20.2
8 3 0 5.1 0.0
9 3 1 -4.6 5.3
10 3 2 -0.6 2.3
11 3 3 0.1 -10.8
12 4 0 0.1 0.0
13 4 1 -0.6 3.8
14 4 2 -7.8 2.2
15 4 3 -1.4 2.5
16 4 4 -6.8 0.9
17 5 0 1.3 0.0
18 5 1 0.1 0.1
19 5 2 -1.5 -0.2
20 5 3 -3.2 -0.1
21 5 4 0.1 0.6
22 5 5 -0.1 0.0
23 6 0 1.4 0.0
24 6 1 -0.3 -0.4
25 6 2 1.7 -1.1
26 6 3 0.6 -0.8
27 6 4 0.0 -2.3
28 6 5 0.9 -0.5
29 6 6 1.2 -0.1
30 7 0 0.2 0.0
31 7 1 -0.6 0.2
32 7 2 -0.5 1.0
33 7 3 0.8 1.1
34 7 4 1.0 1.9
35 7 5 0.4 0.3
36 7 6 -0.5 0.2
37 7 7 -0.1 0.9
38 8 0 0.7 0.0
39 8 1 0.0 0.1
40 8 2 0.3 -1.0
41 8 3 0.4 0.1
42 8 4 -0.3 -0.8
43 8 5 -0.3 0.2
44 8 6 0.1 -0.8
45 8 7 -0.5 -0.1
46 8 8 -0.8 1.3
@@ -0,0 +1,67
1 igrf90
2 10 6371.2 1990.0
3 1 0 -29775.4 0.0
4 1 1 -1851.0 5410.9
5 2 0 -2135.8 0.0
6 2 1 3058.2 -2277.7
7 2 2 1693.2 -380.0
8 3 0 1314.6 0.0
9 3 1 -2240.2 -286.5
10 3 2 1245.6 293.3
11 3 3 806.5 -348.5
12 4 0 938.9 0.0
13 4 1 782.3 248.1
14 4 2 323.9 -239.5
15 4 3 -422.7 87.0
16 4 4 141.7 -299.4
17 5 0 -211.0 0.0
18 5 1 352.5 47.2
19 5 2 243.8 153.5
20 5 3 -110.8 -154.4
21 5 4 -165.6 -69.2
22 5 5 -37.0 97.7
23 6 0 60.7 0.0
24 6 1 63.9 -15.8
25 6 2 60.4 82.7
26 6 3 -177.5 68.3
27 6 4 2.0 -52.5
28 6 5 16.7 1.8
29 6 6 -96.3 26.9
30 7 0 76.6 0.0
31 7 1 -64.2 -81.1
32 7 2 3.7 -27.3
33 7 3 27.5 0.6
34 7 4 0.9 20.4
35 7 5 5.7 16.4
36 7 6 9.8 -22.6
37 7 7 -0.5 -5.0
38 8 0 22.4 0.0
39 8 1 5.1 9.7
40 8 2 -0.9 -19.9
41 8 3 -10.8 7.1
42 8 4 -12.4 -22.1
43 8 5 3.8 11.9
44 8 6 3.8 11.0
45 8 7 2.6 -16.0
46 8 8 -6.0 -10.7
47 9 0 4.4 0.0
48 9 1 9.9 -20.8
49 9 2 0.8 15.4
50 9 3 -12.0 9.5
51 9 4 9.3 -5.7
52 9 5 -3.9 -6.4
53 9 6 -1.4 8.6
54 9 7 7.3 9.1
55 9 8 1.5 -6.6
56 9 9 -5.5 1.9
57 10 0 -3.6 0.0
58 10 1 -3.9 1.3
59 10 2 2.4 0.4
60 10 3 -5.3 3.1
61 10 4 -2.4 5.6
62 10 5 4.4 -4.2
63 10 6 3.0 -0.5
64 10 7 1.2 -1.5
65 10 8 2.2 3.8
66 10 9 2.9 -0.5
67 10 10 0.0 -6.2
@@ -0,0 +1,66
1 IGRF90 1990.00 10 8 0 1990.00 1995.00 -1.0 600.0 IGRF90
2 0 1-29775.4 .0 18.0 .0 IGRF90 1
3 1 1 -1851.0 5410.9 10.6 -16.1 IGRF90 2
4 0 2 -2135.8 .0 -12.9 .0 IGRF90 3
5 1 2 3058.2 -2277.7 2.4 -15.8 IGRF90 4
6 2 2 1693.2 -380.0 -.0 -13.8 IGRF90 5
7 0 3 1314.6 .0 3.3 .0 IGRF90 6
8 1 3 -2240.2 -286.5 -6.7 4.4 IGRF90 7
9 2 3 1245.6 293.3 .0 1.6 IGRF90 8
10 3 3 806.5 -348.5 -5.9 -10.6 IGRF90 9
11 0 4 938.9 .0 .5 .0 IGRF90 10
12 1 4 782.3 248.1 .6 2.6 IGRF90 11
13 2 4 323.9 -239.5 -7.0 1.8 IGRF90 12
14 3 4 -422.7 87.0 .5 3.1 IGRF90 13
15 4 4 141.7 -299.4 -5.5 -1.4 IGRF90 14
16 0 5 -211.0 .0 .6 .0 IGRF90 15
17 1 5 352.5 47.2 -.1 -.1 IGRF90 16
18 2 5 243.8 153.5 -1.6 .5 IGRF90 17
19 3 5 -110.8 -154.4 -3.1 .4 IGRF90 18
20 4 5 -165.6 -69.2 -.0 1.7 IGRF90 19
21 5 5 -37.0 97.7 2.3 .4 IGRF90 20
22 0 6 60.7 .0 1.3 .0 IGRF90 21
23 1 6 63.9 -15.8 -.2 .2 IGRF90 22
24 2 6 60.4 82.7 1.8 -1.3 IGRF90 23
25 3 6 -177.5 68.3 1.3 .0 IGRF90 24
26 4 6 2.0 -52.5 -.2 -.9 IGRF90 25
27 5 6 16.7 1.8 .1 .5 IGRF90 26
28 6 6 -96.3 26.9 1.2 1.2 IGRF90 27
29 0 7 76.6 .0 .6 .0 IGRF90 28
30 1 7 -64.2 -81.1 -.5 .6 IGRF90 29
31 2 7 3.7 -27.3 -.3 .2 IGRF90 30
32 3 7 27.5 .6 .6 .8 IGRF90 31
33 4 7 .9 20.4 1.6 -.5 IGRF90 32
34 5 7 5.7 16.4 .2 -.2 IGRF90 33
35 6 7 9.8 -22.6 .2 .0 IGRF90 34
36 7 7 -.5 -5.0 .3 -.0 IGRF90 35
37 0 8 22.4 .0 .2 .0 IGRF90 36
38 1 8 5.1 9.7 -.7 .5 IGRF90 37
39 2 8 -.9 -19.9 -.2 -.2 IGRF90 38
40 3 8 -10.8 7.1 .1 .3 IGRF90 39
41 4 8 -12.4 -22.1 -1.1 .3 IGRF90 40
42 5 8 3.8 11.9 -.0 .4 IGRF90 41
43 6 8 3.8 11.0 -.0 -.5 IGRF90 42
44 7 8 2.6 -16.0 -.5 -.3 IGRF90 43
45 8 8 -6.0 -10.7 -.6 .6 IGRF90 44
46 0 9 4.4 .0 .0 .0 IGRF90 45
47 1 9 9.9 -20.8 .0 .0 IGRF90 46
48 2 9 .8 15.4 .0 .0 IGRF90 47
49 3 9 -12.0 9.5 .0 .0 IGRF90 48
50 4 9 9.3 -5.7 .0 .0 IGRF90 49
51 5 9 -3.9 -6.4 .0 .0 IGRF90 50
52 6 9 -1.4 8.6 .0 .0 IGRF90 51
53 7 9 7.3 9.1 .0 .0 IGRF90 52
54 8 9 1.5 -6.6 .0 .0 IGRF90 53
55 9 9 -5.5 1.9 .0 .0 IGRF90 54
56 010 -3.6 .0 .0 .0 IGRF90 55
57 110 -3.9 1.3 .0 .0 IGRF90 56
58 210 2.4 .4 .0 .0 IGRF90 57
59 310 -5.3 3.1 .0 .0 IGRF90 58
60 410 -2.4 5.6 .0 .0 IGRF90 59
61 510 4.4 -4.2 .0 .0 IGRF90 60
62 610 3.0 -.5 .0 .0 IGRF90 61
63 710 1.2 -1.5 .0 .0 IGRF90 62
64 810 2.2 3.8 .0 .0 IGRF90 63
65 910 2.9 -.5 .0 .0 IGRF90 64
66 1010 .0 -6.2 .0 .0 IGRF90 65
@@ -0,0 +1,46
1 igrf90s
2 8 6371.2 1995.0
3 1 0 18.0 0.0
4 1 1 10.6 -16.1
5 2 0 -12.9 0.0
6 2 1 2.4 -15.8
7 2 2 0.0 -13.8
8 3 0 3.3 0.0
9 3 1 -6.7 4.4
10 3 2 0.0 1.6
11 3 3 -5.9 -10.6
12 4 0 0.5 0.0
13 4 1 0.6 2.6
14 4 2 -7.0 1.8
15 4 3 0.5 3.1
16 4 4 -5.5 -1.4
17 5 0 0.6 0.0
18 5 1 -0.1 -0.1
19 5 2 -1.6 0.5
20 5 3 -3.1 0.4
21 5 4 0.0 1.7
22 5 5 2.3 0.4
23 6 0 1.3 0.0
24 6 1 -0.2 0.2
25 6 2 1.8 -1.3
26 6 3 1.3 0.0
27 6 4 -0.2 -0.9
28 6 5 0.1 0.5
29 6 6 1.2 1.2
30 7 0 0.6 0.0
31 7 1 -0.5 0.6
32 7 2 -0.3 0.2
33 7 3 0.6 0.8
34 7 4 1.6 -0.5
35 7 5 0.2 -0.2
36 7 6 0.2 0.0
37 7 7 0.3 0.0
38 8 0 0.2 0.0
39 8 1 -0.7 0.5
40 8 2 -0.2 -0.2
41 8 3 0.1 0.3
42 8 4 -1.1 0.3
43 8 5 0.0 0.4
44 8 6 0.0 -0.5
45 8 7 -0.5 -0.3
46 8 8 -0.6 0.6
@@ -0,0 +1,67
1 igrf95
2 10 6371.2 1995.0
3 1 0 -29682. 0.0
4 1 1 -1789. 5318.
5 2 0 -2197. 0.0
6 2 1 3074. -2356.
7 2 2 1685. -425.
8 3 0 1329. 0.0
9 3 1 -2268. -263.
10 3 2 1249. 302.
11 3 3 769. -406.
12 4 0 941. .0
13 4 1 782. 262.
14 4 2 291. -232.
15 4 3 -421. 98.
16 4 4 116. -301.
17 5 0 -210. .0
18 5 1 352. 44.
19 5 2 237. 157.
20 5 3 -122. -152.
21 5 4 -167. -64.
22 5 5 -26. 99.
23 6 0 66. .0
24 6 1 64. -16.
25 6 2 65. 77.
26 6 3 -172. 67.
27 6 4 2. -57.
28 6 5 17. 4.
29 6 6 -94. 28.
30 7 0 78. -.0
31 7 1 -67. -77.
32 7 2 1. -25.
33 7 3 29. 3.
34 7 4 4. 22.
35 7 5 8. 16.
36 7 6 10. -23.
37 7 7 -2. -3.
38 8 0 24. .0
39 8 1 4. 12.
40 8 2 -1. -20.
41 8 3 -9. 7.
42 8 4 -14. -21.
43 8 5 4. 12.
44 8 6 5. 10.
45 8 7 0. -17.
46 8 8 -7. -10.
47 9 0 4. .0
48 9 1 9. -19.
49 9 2 1. 15.
50 9 3 -12. 11.
51 9 4 9. -7.
52 9 5 -4. -7.
53 9 6 -2. 9.
54 9 7 7. 7.
55 9 8 0. -8.
56 9 9 -6. 1.
57 10 0 -3. .0
58 10 1 -4. 2.
59 10 2 2. 1.
60 10 3 -5. 3.
61 10 4 -2. 6.
62 10 5 4. -4.
63 10 6 3. 0.
64 10 7 1. -2.
65 10 8 3. 3.
66 10 9 3. -1.
67 10 10 0. -6.
@@ -0,0 +1,46
1 igrf95s
2 8 6371.2 2000.0
3 1 0 17.6 0.
4 1 1 13.0 -18.3
5 2 0 -13.2 0.
6 2 1 3.7 -15.0
7 2 2 -0.8 -8.8
8 3 0 1.5 0.
9 3 1 -6.4 4.1
10 3 2 -0.2 2.2
11 3 3 -8.1 -12.1
12 4 0 0.8 0.
13 4 1 0.9 1.8
14 4 2 -6.9 1.2
15 4 3 0.5 2.7
16 4 4 -4.6 -1.0
17 5 0 0.8 0.
18 5 1 0.1 0.2
19 5 2 -1.5 1.2
20 5 3 -2.0 0.3
21 5 4 -0.1 1.8
22 5 5 2.3 0.9
23 6 0 0.5 0.
24 6 1 -0.4 0.3
25 6 2 0.6 -1.6
26 6 3 1.9 -0.2
27 6 4 -0.2 -0.9
28 6 5 -0.2 1.0
29 6 6 .0 2.2
30 7 0 -0.2 0.
31 7 1 -0.8 0.8
32 7 2 -0.6 0.2
33 7 3 0.6 0.6
34 7 4 1.2 -0.4
35 7 5 0.1 0.0
36 7 6 0.2 -0.3
37 7 7 -0.6 0.
38 8 0 0.3 0.
39 8 1 -0.2 0.4
40 8 2 0.1 -0.2
41 8 3 0.4 0.2
42 8 4 -1.1 0.7
43 8 5 0.3 0.0
44 8 6 0.2 -1.2
45 8 7 -0.9 -0.7
46 8 8 -0.3 -0.6
@@ -0,0 +1,10
1 {
2 if($1 < 10)
3 {
4 printf(" %d %d %8.1f %8.1f\n",$2,$1,$3,$4);
5 }
6 else
7 {
8 printf(" 10 %d %8.1f %8.1f\n",$1/100,$2,$3);
9 }
10 } No newline at end of file
@@ -0,0 +1,10
1 {
2 if($1 < 10)
3 {
4 printf(" %d %d %8.1f %8.1f\n",$2,$1,$5,$6);
5 }
6 else
7 {
8 printf(" 10 %d %8.1f %8.1f\n",$1/100,$4,$5);
9 }
10 } No newline at end of file
@@ -0,0 +1,164
1 c parameter(nn=20,kk=4)
2 c real ta(nn+kk),bcoef(nn)
3
4 c k=kk
5 c n=nn
6
7 c do i=1,n+k
8 c ta(i)=float(i)
9 c end do
10
11 c do i=1,n
12 c bcoef(i)=float(i)
13 c end do
14
15 c do i=3,n+1
16 c write(*,*) ta(i)+0.5, bvalue (ta, bcoef, n, k, ta(i)+0.5, 0 )
17 c end do
18
19 c stop
20 c end
21
22
23 real function bvalue ( t, bcoef, n, k, x, jderiv )
24 c from * a practical guide to splines * by c. de boor
25 calls interv
26 c
27 calculates value at x of jderiv-th derivative of spline from b-repr.
28 c the spline is taken to be continuous from the right, EXCEPT at the
29 c rightmost knot, where it is taken to be continuous from the left.
30 c
31 c****** i n p u t ******
32 c t, bcoef, n, k......forms the b-representation of the spline f to
33 c be evaluated. specifically,
34 c t.....knot sequence, of length n+k, assumed nondecreasing.
35 c bcoef.....b-coefficient sequence, of length n .
36 c n.....length of bcoef and dimension of spline(k,t),
37 c a s s u m e d positive .
38 c k.....order of the spline .
39 c
40 c w a r n i n g . . . the restriction k .le. kmax (=20) is imposed
41 c arbitrarily by the dimension statement for aj, dl, dr below,
42 c but is n o w h e r e c h e c k e d for.
43 c
44 c x.....the point at which to evaluate .
45 c jderiv.....integer giving the order of the derivative to be evaluated
46 c a s s u m e d to be zero or positive.
47 c
48 c****** o u t p u t ******
49 c bvalue.....the value of the (jderiv)-th derivative of f at x .
50 c
51 c****** m e t h o d ******
52 c The nontrivial knot interval (t(i),t(i+1)) containing x is lo-
53 c cated with the aid of interv . The k b-coeffs of f relevant for
54 c this interval are then obtained from bcoef (or taken to be zero if
55 c not explicitly available) and are then differenced jderiv times to
56 c obtain the b-coeffs of (d**jderiv)f relevant for that interval.
57 c Precisely, with j = jderiv, we have from x.(12) of the text that
58 c
59 c (d**j)f = sum ( bcoef(.,j)*b(.,k-j,t) )
60 c
61 c where
62 c / bcoef(.), , j .eq. 0
63 c /
64 c bcoef(.,j) = / bcoef(.,j-1) - bcoef(.-1,j-1)
65 c / ----------------------------- , j .gt. 0
66 c / (t(.+k-j) - t(.))/(k-j)
67 c
68 c Then, we use repeatedly the fact that
69 c
70 c sum ( a(.)*b(.,m,t)(x) ) = sum ( a(.,x)*b(.,m-1,t)(x) )
71 c with
72 c (x - t(.))*a(.) + (t(.+m-1) - x)*a(.-1)
73 c a(.,x) = ---------------------------------------
74 c (x - t(.)) + (t(.+m-1) - x)
75 c
76 c to write (d**j)f(x) eventually as a linear combination of b-splines
77 c of order 1 , and the coefficient for b(i,1,t)(x) must then be the
78 c desired number (d**j)f(x). (see x.(17)-(19) of text).
79 c
80 parameter (kmax = 20)
81 integer jderiv,k,n,i,ilo,imk,j,jc,jcmin,jcmax,jj,
82 c * kmax,
83 * kmj,km1
84 * ,mflag,nmi,jdrvp1
85 C real bcoef(n),t(1),x, aj(20),dl(20),dr(20),fkmj
86 real bcoef(n),x, aj(kmax),dl(kmax),dr(kmax),fkmj
87 dimension t(n+k)
88 c former fortran standard made it impossible to specify the length of t
89 c precisely without the introduction of otherwise superfluous addition-
90 c al arguments.
91 bvalue = 0.
92 if (jderiv .ge. k) go to 99
93 c
94 c *** Find i s.t. 1 .le. i .lt. n+k and t(i) .lt. t(i+1) and
95 c t(i) .le. x .lt. t(i+1) . If no such i can be found, x lies
96 c outside the support of the spline f , hence bvalue = 0.
97 c (The asymmetry in this choice of i makes f rightcontinuous, except
98 c at t(n+k) where it is leftcontinuous.)
99 call interv ( t, n+k, x, i, mflag )
100 if (mflag .ne. 0) go to 99
101 c *** if k = 1 (and jderiv = 0), bvalue = bcoef(i).
102 km1 = k - 1
103 if (km1 .gt. 0) go to 1
104 bvalue = bcoef(i)
105 go to 99
106 c
107 c *** store the k b-spline coefficients relevant for the knot interval
108 c (t(i),t(i+1)) in aj(1),...,aj(k) and compute dl(j) = x - t(i+1-j),
109 c dr(j) = t(i+j) - x, j=1,...,k-1 . set any of the aj not obtainable
110 c from input to zero. set any t.s not obtainable equal to t(1) or
111 c to t(n+k) appropriately.
112 1 jcmin = 1
113 imk = i - k
114 if (imk .ge. 0) go to 8
115 jcmin = 1 - imk
116 do 5 j=1,i
117 5 dl(j) = x - t(i+1-j)
118 do 6 j=i,km1
119 aj(k-j) = 0.
120 6 dl(j) = dl(i)
121 go to 10
122 8 do 9 j=1,km1
123 9 dl(j) = x - t(i+1-j)
124 c
125 10 jcmax = k
126 nmi = n - i
127 if (nmi .ge. 0) go to 18
128 jcmax = k + nmi
129 do 15 j=1,jcmax
130 15 dr(j) = t(i+j) - x
131 do 16 j=jcmax,km1
132 aj(j+1) = 0.
133 16 dr(j) = dr(jcmax)
134 go to 20
135 18 do 19 j=1,km1
136 19 dr(j) = t(i+j) - x
137 c
138 20 do 21 jc=jcmin,jcmax
139 21 aj(jc) = bcoef(imk + jc)
140 c
141 c *** difference the coefficients jderiv times.
142 if (jderiv .eq. 0) go to 30
143 do 23 j=1,jderiv
144 kmj = k-j
145 fkmj = float(kmj)
146 ilo = kmj
147 do 23 jj=1,kmj
148 aj(jj) = ((aj(jj+1) - aj(jj))/(dl(ilo) + dr(jj)))*fkmj
149 23 ilo = ilo - 1
150 c
151 c *** compute value at x in (t(i),t(i+1)) of jderiv-th derivative,
152 c given its relevant b-spline coeffs in aj(1),...,aj(k-jderiv).
153 30 if (jderiv .eq. km1) go to 39
154 jdrvp1 = jderiv + 1
155 do 33 j=jdrvp1,km1
156 kmj = k-j
157 ilo = kmj
158 do 33 jj=1,kmj
159 aj(jj) = (aj(jj+1)*dl(ilo) + aj(jj)*dr(jj))/(dl(ilo)+dr(jj))
160 33 ilo = ilo - 1
161 39 bvalue = aj(1)
162 c
163 99 return
164 end
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -0,0 +1,101
1 *DECK CACAI
2 SUBROUTINE CACAI (Z, FNU, KODE, MR, N, Y, NZ, RL, TOL, ELIM, ALIM)
3 C***BEGIN PROLOGUE CACAI
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CAIRY
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CACAI-A, ZACAI-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CACAI APPLIES THE ANALYTIC CONTINUATION FORMULA
12 C
13 C K(FNU,ZN*EXP(MP))=K(FNU,ZN)*EXP(-MP*FNU) - MP*I(FNU,ZN)
14 C MP=PI*MR*CMPLX(0.0,1.0)
15 C
16 C TO CONTINUE THE K FUNCTION FROM THE RIGHT HALF TO THE LEFT
17 C HALF Z PLANE FOR USE WITH CAIRY WHERE FNU=1/3 OR 2/3 AND N=1.
18 C CACAI IS THE SAME AS CACON WITH THE PARTS FOR LARGER ORDERS AND
19 C RECURRENCE REMOVED. A RECURSIVE CALL TO CACON CAN RESULT IF CACON
20 C IS CALLED FROM CAIRY.
21 C
22 C***SEE ALSO CAIRY
23 C***ROUTINES CALLED CASYI, CBKNU, CMLRI, CS1S2, CSERI, R1MACH
24 C***REVISION HISTORY (YYMMDD)
25 C 830501 DATE WRITTEN
26 C 910415 Prologue converted to Version 4.0 format. (BAB)
27 C***END PROLOGUE CACAI
28 COMPLEX CSGN, CSPN, C1, C2, Y, Z, ZN, CY
29 REAL ALIM, ARG, ASCLE, AZ, CPN, DFNU, ELIM, FMR, FNU, PI, RL,
30 * SGN, SPN, TOL, YY, R1MACH
31 INTEGER INU, IUF, KODE, MR, N, NN, NW, NZ
32 DIMENSION Y(N), CY(2)
33 DATA PI / 3.14159265358979324E0 /
34 C***FIRST EXECUTABLE STATEMENT CACAI
35 NZ = 0
36 ZN = -Z
37 AZ = ABS(Z)
38 NN = N
39 DFNU = FNU + (N-1)
40 IF (AZ.LE.2.0E0) GO TO 10
41 IF (AZ*AZ*0.25E0.GT.DFNU+1.0E0) GO TO 20
42 10 CONTINUE
43 C-----------------------------------------------------------------------
44 C POWER SERIES FOR THE I FUNCTION
45 C-----------------------------------------------------------------------
46 CALL CSERI(ZN, FNU, KODE, NN, Y, NW, TOL, ELIM, ALIM)
47 GO TO 40
48 20 CONTINUE
49 IF (AZ.LT.RL) GO TO 30
50 C-----------------------------------------------------------------------
51 C ASYMPTOTIC EXPANSION FOR LARGE Z FOR THE I FUNCTION
52 C-----------------------------------------------------------------------
53 CALL CASYI(ZN, FNU, KODE, NN, Y, NW, RL, TOL, ELIM, ALIM)
54 IF (NW.LT.0) GO TO 70
55 GO TO 40
56 30 CONTINUE
57 C-----------------------------------------------------------------------
58 C MILLER ALGORITHM NORMALIZED BY THE SERIES FOR THE I FUNCTION
59 C-----------------------------------------------------------------------
60 CALL CMLRI(ZN, FNU, KODE, NN, Y, NW, TOL)
61 IF(NW.LT.0) GO TO 70
62 40 CONTINUE
63 C-----------------------------------------------------------------------
64 C ANALYTIC CONTINUATION TO THE LEFT HALF PLANE FOR THE K FUNCTION
65 C-----------------------------------------------------------------------
66 CALL CBKNU(ZN, FNU, KODE, 1, CY, NW, TOL, ELIM, ALIM)
67 IF (NW.NE.0) GO TO 70
68 FMR = MR
69 SGN = -SIGN(PI,FMR)
70 CSGN = CMPLX(0.0E0,SGN)
71 IF (KODE.EQ.1) GO TO 50
72 YY = -AIMAG(ZN)
73 CPN = COS(YY)
74 SPN = SIN(YY)
75 CSGN = CSGN*CMPLX(CPN,SPN)
76 50 CONTINUE
77 C-----------------------------------------------------------------------
78 C CALCULATE CSPN=EXP(FNU*PI*I) TO MINIMIZE LOSSES OF SIGNIFICANCE
79 C WHEN FNU IS LARGE
80 C-----------------------------------------------------------------------
81 INU = FNU
82 ARG = (FNU-INU)*SGN
83 CPN = COS(ARG)
84 SPN = SIN(ARG)
85 CSPN = CMPLX(CPN,SPN)
86 IF (MOD(INU,2).EQ.1) CSPN = -CSPN
87 C1 = CY(1)
88 C2 = Y(1)
89 IF (KODE.EQ.1) GO TO 60
90 IUF = 0
91 ASCLE = 1.0E+3*R1MACH(1)/TOL
92 CALL CS1S2(ZN, C1, C2, NW, ASCLE, ALIM, IUF)
93 NZ = NZ + NW
94 60 CONTINUE
95 Y(1) = CSPN*C1 + CSGN*C2
96 RETURN
97 70 CONTINUE
98 NZ = -1
99 IF(NW.EQ.(-2)) NZ=-2
100 RETURN
101 END
@@ -0,0 +1,342
1 *DECK CAIRY
2 SUBROUTINE CAIRY (Z, ID, KODE, AI, NZ, IERR)
3 C***BEGIN PROLOGUE CAIRY
4 C***PURPOSE Compute the Airy function Ai(z) or its derivative dAi/dz
5 C for complex argument z. A scaling option is available
6 C to help avoid underflow and overflow.
7 C***LIBRARY SLATEC
8 C***CATEGORY C10D
9 C***TYPE COMPLEX (CAIRY-C, ZAIRY-C)
10 C***KEYWORDS AIRY FUNCTION, BESSEL FUNCTION OF ORDER ONE THIRD,
11 C BESSEL FUNCTION OF ORDER TWO THIRDS
12 C***AUTHOR Amos, D. E., (SNL)
13 C***DESCRIPTION
14 C
15 C On KODE=1, CAIRY computes the complex Airy function Ai(z)
16 C or its derivative dAi/dz on ID=0 or ID=1 respectively. On
17 C KODE=2, a scaling option exp(zeta)*Ai(z) or exp(zeta)*dAi/dz
18 C is provided to remove the exponential decay in -pi/3<arg(z)
19 C <pi/3 and the exponential growth in pi/3<abs(arg(z))<pi where
20 C zeta=(2/3)*z**(3/2).
21 C
22 C While the Airy functions Ai(z) and dAi/dz are analytic in
23 C the whole z-plane, the corresponding scaled functions defined
24 C for KODE=2 have a cut along the negative real axis.
25 C
26 C Input
27 C Z - Argument of type COMPLEX
28 C ID - Order of derivative, ID=0 or ID=1
29 C KODE - A parameter to indicate the scaling option
30 C KODE=1 returns
31 C AI=Ai(z) on ID=0
32 C AI=dAi/dz on ID=1
33 C at z=Z
34 C =2 returns
35 C AI=exp(zeta)*Ai(z) on ID=0
36 C AI=exp(zeta)*dAi/dz on ID=1
37 C at z=Z where zeta=(2/3)*z**(3/2)
38 C
39 C Output
40 C AI - Result of type COMPLEX
41 C NZ - Underflow indicator
42 C NZ=0 Normal return
43 C NZ=1 AI=0 due to underflow in
44 C -pi/3<arg(Z)<pi/3 on KODE=1
45 C IERR - Error flag
46 C IERR=0 Normal return - COMPUTATION COMPLETED
47 C IERR=1 Input error - NO COMPUTATION
48 C IERR=2 Overflow - NO COMPUTATION
49 C (Re(Z) too large with KODE=1)
50 C IERR=3 Precision warning - COMPUTATION COMPLETED
51 C (Result has less than half precision)
52 C IERR=4 Precision error - NO COMPUTATION
53 C (Result has no precision)
54 C IERR=5 Algorithmic error - NO COMPUTATION
55 C (Termination condition not met)
56 C
57 C *Long Description:
58 C
59 C Ai(z) and dAi/dz are computed from K Bessel functions by
60 C
61 C Ai(z) = c*sqrt(z)*K(1/3,zeta)
62 C dAi/dz = -c* z *K(2/3,zeta)
63 C c = 1/(pi*sqrt(3))
64 C zeta = (2/3)*z**(3/2)
65 C
66 C when abs(z)>1 and from power series when abs(z)<=1.
67 C
68 C In most complex variable computation, one must evaluate ele-
69 C mentary functions. When the magnitude of Z is large, losses
70 C of significance by argument reduction occur. Consequently, if
71 C the magnitude of ZETA=(2/3)*Z**(3/2) exceeds U1=SQRT(0.5/UR),
72 C then losses exceeding half precision are likely and an error
73 C flag IERR=3 is triggered where UR=R1MACH(4)=UNIT ROUNDOFF.
74 C Also, if the magnitude of ZETA is larger than U2=0.5/UR, then
75 C all significance is lost and IERR=4. In order to use the INT
76 C function, ZETA must be further restricted not to exceed
77 C U3=I1MACH(9)=LARGEST INTEGER. Thus, the magnitude of ZETA
78 C must be restricted by MIN(U2,U3). In IEEE arithmetic, U1,U2,
79 C and U3 are approximately 2.0E+3, 4.2E+6, 2.1E+9 in single
80 C precision and 4.7E+7, 2.3E+15, 2.1E+9 in double precision.
81 C This makes U2 limiting is single precision and U3 limiting
82 C in double precision. This means that the magnitude of Z
83 C cannot exceed approximately 3.4E+4 in single precision and
84 C 2.1E+6 in double precision. This also means that one can
85 C expect to retain, in the worst cases on 32-bit machines,
86 C no digits in single precision and only 6 digits in double
87 C precision.
88 C
89 C The approximate relative error in the magnitude of a complex
90 C Bessel function can be expressed as P*10**S where P=MAX(UNIT
91 C ROUNDOFF,1.0E-18) is the nominal precision and 10**S repre-
92 C sents the increase in error due to argument reduction in the
93 C elementary functions. Here, S=MAX(1,ABS(LOG10(ABS(Z))),
94 C ABS(LOG10(FNU))) approximately (i.e., S=MAX(1,ABS(EXPONENT OF
95 C ABS(Z),ABS(EXPONENT OF FNU)) ). However, the phase angle may
96 C have only absolute accuracy. This is most likely to occur
97 C when one component (in magnitude) is larger than the other by
98 C several orders of magnitude. If one component is 10**K larger
99 C than the other, then one can expect only MAX(ABS(LOG10(P))-K,
100 C 0) significant digits; or, stated another way, when K exceeds
101 C the exponent of P, no significant digits remain in the smaller
102 C component. However, the phase angle retains absolute accuracy
103 C because, in complex arithmetic with precision P, the smaller
104 C component will not (as a rule) decrease below P times the
105 C magnitude of the larger component. In these extreme cases,
106 C the principal phase angle is on the order of +P, -P, PI/2-P,
107 C or -PI/2+P.
108 C
109 C***REFERENCES 1. M. Abramowitz and I. A. Stegun, Handbook of Mathe-
110 C matical Functions, National Bureau of Standards
111 C Applied Mathematics Series 55, U. S. Department
112 C of Commerce, Tenth Printing (1972) or later.
113 C 2. D. E. Amos, Computation of Bessel Functions of
114 C Complex Argument and Large Order, Report SAND83-0643,
115 C Sandia National Laboratories, Albuquerque, NM, May
116 C 1983.
117 C 3. D. E. Amos, A Subroutine Package for Bessel Functions
118 C of a Complex Argument and Nonnegative Order, Report
119 C SAND85-1018, Sandia National Laboratory, Albuquerque,
120 C NM, May 1985.
121 C 4. D. E. Amos, A portable package for Bessel functions
122 C of a complex argument and nonnegative order, ACM
123 C Transactions on Mathematical Software, 12 (September
124 C 1986), pp. 265-273.
125 C
126 C***ROUTINES CALLED CACAI, CBKNU, I1MACH, R1MACH
127 C***REVISION HISTORY (YYMMDD)
128 C 830501 DATE WRITTEN
129 C 890801 REVISION DATE from Version 3.2
130 C 910415 Prologue converted to Version 4.0 format. (BAB)
131 C 920128 Category corrected. (WRB)
132 C 920811 Prologue revised. (DWL)
133 C***END PROLOGUE CAIRY
134 COMPLEX AI, CONE, CSQ, CY, S1, S2, TRM1, TRM2, Z, ZTA, Z3
135 REAL AA, AD, AK, ALIM, ATRM, AZ, AZ3, BK, CK, COEF, C1, C2, DIG,
136 * DK, D1, D2, ELIM, FID, FNU, RL, R1M5, SFAC, TOL, TTH, ZI, ZR,
137 * Z3I, Z3R, R1MACH, BB, ALAZ
138 INTEGER ID, IERR, IFLAG, K, KODE, K1, K2, MR, NN, NZ, I1MACH
139 DIMENSION CY(1)
140 DATA TTH, C1, C2, COEF /6.66666666666666667E-01,
141 * 3.55028053887817240E-01,2.58819403792806799E-01,
142 * 1.83776298473930683E-01/
143 DATA CONE / (1.0E0,0.0E0) /
144 C***FIRST EXECUTABLE STATEMENT CAIRY
145 IERR = 0
146 NZ=0
147 IF (ID.LT.0 .OR. ID.GT.1) IERR=1
148 IF (KODE.LT.1 .OR. KODE.GT.2) IERR=1
149 IF (IERR.NE.0) RETURN
150 AZ = ABS(Z)
151 TOL = MAX(R1MACH(4),1.0E-18)
152 FID = ID
153 IF (AZ.GT.1.0E0) GO TO 60
154 C-----------------------------------------------------------------------
155 C POWER SERIES FOR ABS(Z).LE.1.
156 C-----------------------------------------------------------------------
157 S1 = CONE
158 S2 = CONE
159 IF (AZ.LT.TOL) GO TO 160
160 AA = AZ*AZ
161 IF (AA.LT.TOL/AZ) GO TO 40
162 TRM1 = CONE
163 TRM2 = CONE
164 ATRM = 1.0E0
165 Z3 = Z*Z*Z
166 AZ3 = AZ*AA
167 AK = 2.0E0 + FID
168 BK = 3.0E0 - FID - FID
169 CK = 4.0E0 - FID
170 DK = 3.0E0 + FID + FID
171 D1 = AK*DK
172 D2 = BK*CK
173 AD = MIN(D1,D2)
174 AK = 24.0E0 + 9.0E0*FID
175 BK = 30.0E0 - 9.0E0*FID
176 Z3R = REAL(Z3)
177 Z3I = AIMAG(Z3)
178 DO 30 K=1,25
179 TRM1 = TRM1*CMPLX(Z3R/D1,Z3I/D1)
180 S1 = S1 + TRM1
181 TRM2 = TRM2*CMPLX(Z3R/D2,Z3I/D2)
182 S2 = S2 + TRM2
183 ATRM = ATRM*AZ3/AD
184 D1 = D1 + AK
185 D2 = D2 + BK
186 AD = MIN(D1,D2)
187 IF (ATRM.LT.TOL*AD) GO TO 40
188 AK = AK + 18.0E0
189 BK = BK + 18.0E0
190 30 CONTINUE
191 40 CONTINUE
192 IF (ID.EQ.1) GO TO 50
193 AI = S1*CMPLX(C1,0.0E0) - Z*S2*CMPLX(C2,0.0E0)
194 IF (KODE.EQ.1) RETURN
195 ZTA = Z*CSQRT(Z)*CMPLX(TTH,0.0E0)
196 AI = AI*CEXP(ZTA)
197 RETURN
198 50 CONTINUE
199 AI = -S2*CMPLX(C2,0.0E0)
200 IF (AZ.GT.TOL) AI = AI + Z*Z*S1*CMPLX(C1/(1.0E0+FID),0.0E0)
201 IF (KODE.EQ.1) RETURN
202 ZTA = Z*CSQRT(Z)*CMPLX(TTH,0.0E0)
203 AI = AI*CEXP(ZTA)
204 RETURN
205 C-----------------------------------------------------------------------
206 C CASE FOR ABS(Z).GT.1.0
207 C-----------------------------------------------------------------------
208 60 CONTINUE
209 FNU = (1.0E0+FID)/3.0E0
210 C-----------------------------------------------------------------------
211 C SET PARAMETERS RELATED TO MACHINE CONSTANTS.
212 C TOL IS THE APPROXIMATE UNIT ROUNDOFF LIMITED TO 1.0E-18.
213 C ELIM IS THE APPROXIMATE EXPONENTIAL OVER- AND UNDERFLOW LIMIT.
214 C EXP(-ELIM).LT.EXP(-ALIM)=EXP(-ELIM)/TOL AND
215 C EXP(ELIM).GT.EXP(ALIM)=EXP(ELIM)*TOL ARE INTERVALS NEAR
216 C UNDERFLOW AND OVERFLOW LIMITS WHERE SCALED ARITHMETIC IS DONE.
217 C RL IS THE LOWER BOUNDARY OF THE ASYMPTOTIC EXPANSION FOR LARGE Z.
218 C DIG = NUMBER OF BASE 10 DIGITS IN TOL = 10**(-DIG).
219 C-----------------------------------------------------------------------
220 K1 = I1MACH(12)
221 K2 = I1MACH(13)
222 R1M5 = R1MACH(5)
223 K = MIN(ABS(K1),ABS(K2))
224 ELIM = 2.303E0*(K*R1M5-3.0E0)
225 K1 = I1MACH(11) - 1
226 AA = R1M5*K1
227 DIG = MIN(AA,18.0E0)
228 AA = AA*2.303E0
229 ALIM = ELIM + MAX(-AA,-41.45E0)
230 RL = 1.2E0*DIG + 3.0E0
231 ALAZ=ALOG(AZ)
232 C-----------------------------------------------------------------------
233 C TEST FOR RANGE
234 C-----------------------------------------------------------------------
235 AA=0.5E0/TOL
236 BB=I1MACH(9)*0.5E0
237 AA=MIN(AA,BB)
238 AA=AA**TTH
239 IF (AZ.GT.AA) GO TO 260
240 AA=SQRT(AA)
241 IF (AZ.GT.AA) IERR=3
242 CSQ=CSQRT(Z)
243 ZTA=Z*CSQ*CMPLX(TTH,0.0E0)
244 C-----------------------------------------------------------------------
245 C RE(ZTA).LE.0 WHEN RE(Z).LT.0, ESPECIALLY WHEN IM(Z) IS SMALL
246 C-----------------------------------------------------------------------
247 IFLAG = 0
248 SFAC = 1.0E0
249 ZI = AIMAG(Z)
250 ZR = REAL(Z)
251 AK = AIMAG(ZTA)
252 IF (ZR.GE.0.0E0) GO TO 70
253 BK = REAL(ZTA)
254 CK = -ABS(BK)
255 ZTA = CMPLX(CK,AK)
256 70 CONTINUE
257 IF (ZI.NE.0.0E0) GO TO 80
258 IF (ZR.GT.0.0E0) GO TO 80
259 ZTA = CMPLX(0.0E0,AK)
260 80 CONTINUE
261 AA = REAL(ZTA)
262 IF (AA.GE.0.0E0 .AND. ZR.GT.0.0E0) GO TO 100
263 IF (KODE.EQ.2) GO TO 90
264 C-----------------------------------------------------------------------
265 C OVERFLOW TEST
266 C-----------------------------------------------------------------------
267 IF (AA.GT.(-ALIM)) GO TO 90
268 AA = -AA + 0.25E0*ALAZ
269 IFLAG = 1
270 SFAC = TOL
271 IF (AA.GT.ELIM) GO TO 240
272 90 CONTINUE
273 C-----------------------------------------------------------------------
274 C CBKNU AND CACAI RETURN EXP(ZTA)*K(FNU,ZTA) ON KODE=2
275 C-----------------------------------------------------------------------
276 MR = 1
277 IF (ZI.LT.0.0E0) MR = -1
278 CALL CACAI(ZTA, FNU, KODE, MR, 1, CY, NN, RL, TOL, ELIM, ALIM)
279 IF (NN.LT.0) GO TO 250
280 NZ = NZ + NN
281 GO TO 120
282 100 CONTINUE
283 IF (KODE.EQ.2) GO TO 110
284 C-----------------------------------------------------------------------
285 C UNDERFLOW TEST
286 C-----------------------------------------------------------------------
287 IF (AA.LT.ALIM) GO TO 110
288 AA = -AA - 0.25E0*ALAZ
289 IFLAG = 2
290 SFAC = 1.0E0/TOL
291 IF (AA.LT.(-ELIM)) GO TO 180
292 110 CONTINUE
293 CALL CBKNU(ZTA, FNU, KODE, 1, CY, NZ, TOL, ELIM, ALIM)
294 120 CONTINUE
295 S1 = CY(1)*CMPLX(COEF,0.0E0)
296 IF (IFLAG.NE.0) GO TO 140
297 IF (ID.EQ.1) GO TO 130
298 AI = CSQ*S1
299 RETURN
300 130 AI = -Z*S1
301 RETURN
302 140 CONTINUE
303 S1 = S1*CMPLX(SFAC,0.0E0)
304 IF (ID.EQ.1) GO TO 150
305 S1 = S1*CSQ
306 AI = S1*CMPLX(1.0E0/SFAC,0.0E0)
307 RETURN
308 150 CONTINUE
309 S1 = -S1*Z
310 AI = S1*CMPLX(1.0E0/SFAC,0.0E0)
311 RETURN
312 160 CONTINUE
313 AA = 1.0E+3*R1MACH(1)
314 S1 = CMPLX(0.0E0,0.0E0)
315 IF (ID.EQ.1) GO TO 170
316 IF (AZ.GT.AA) S1 = CMPLX(C2,0.0E0)*Z
317 AI = CMPLX(C1,0.0E0) - S1
318 RETURN
319 170 CONTINUE
320 AI = -CMPLX(C2,0.0E0)
321 AA = SQRT(AA)
322 IF (AZ.GT.AA) S1 = Z*Z*CMPLX(0.5E0,0.0E0)
323 AI = AI + S1*CMPLX(C1,0.0E0)
324 RETURN
325 180 CONTINUE
326 NZ = 1
327 AI = CMPLX(0.0E0,0.0E0)
328 RETURN
329 240 CONTINUE
330 NZ = 0
331 IERR=2
332 RETURN
333 250 CONTINUE
334 IF(NN.EQ.(-1)) GO TO 240
335 NZ=0
336 IERR=5
337 RETURN
338 260 CONTINUE
339 IERR=4
340 NZ=0
341 RETURN
342 END
@@ -0,0 +1,136
1 *DECK CASYI
2 SUBROUTINE CASYI (Z, FNU, KODE, N, Y, NZ, RL, TOL, ELIM, ALIM)
3 C***BEGIN PROLOGUE CASYI
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBESI and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CASYI-A, ZASYI-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CASYI COMPUTES THE I BESSEL FUNCTION FOR REAL(Z).GE.0.0 BY
12 C MEANS OF THE ASYMPTOTIC EXPANSION FOR LARGE ABS(Z) IN THE
13 C REGION ABS(Z).GT.MAX(RL,FNU*FNU/2). NZ=0 IS A NORMAL RETURN.
14 C NZ.LT.0 INDICATES AN OVERFLOW ON KODE=1.
15 C
16 C***SEE ALSO CBESI, CBESK
17 C***ROUTINES CALLED R1MACH
18 C***REVISION HISTORY (YYMMDD)
19 C 830501 DATE WRITTEN
20 C 910415 Prologue converted to Version 4.0 format. (BAB)
21 C***END PROLOGUE CASYI
22 COMPLEX AK1, CK, CONE, CS1, CS2, CZ, CZERO, DK, EZ, P1, RZ, S2,
23 * Y, Z
24 REAL AA, ACZ, AEZ, AK, ALIM, ARG, ARM, ATOL, AZ, BB, BK, DFNU,
25 * DNU2, ELIM, FDN, FNU, PI, RL, RTPI, RTR1, S, SGN, SQK, TOL, X,
26 * YY, R1MACH
27 INTEGER I, IB, IL, INU, J, JL, K, KODE, KODED, M, N, NN, NZ
28 DIMENSION Y(N)
29 DATA PI, RTPI /3.14159265358979324E0 , 0.159154943091895336E0 /
30 DATA CZERO, CONE / (0.0E0,0.0E0), (1.0E0,0.0E0) /
31 C***FIRST EXECUTABLE STATEMENT CASYI
32 NZ = 0
33 AZ = ABS(Z)
34 X = REAL(Z)
35 ARM = 1.0E+3*R1MACH(1)
36 RTR1 = SQRT(ARM)
37 IL = MIN(2,N)
38 DFNU = FNU + (N-IL)
39 C-----------------------------------------------------------------------
40 C OVERFLOW TEST
41 C-----------------------------------------------------------------------
42 AK1 = CMPLX(RTPI,0.0E0)/Z
43 AK1 = CSQRT(AK1)
44 CZ = Z
45 IF (KODE.EQ.2) CZ = Z - CMPLX(X,0.0E0)
46 ACZ = REAL(CZ)
47 IF (ABS(ACZ).GT.ELIM) GO TO 80
48 DNU2 = DFNU + DFNU
49 KODED = 1
50 IF ((ABS(ACZ).GT.ALIM) .AND. (N.GT.2)) GO TO 10
51 KODED = 0
52 AK1 = AK1*CEXP(CZ)
53 10 CONTINUE
54 FDN = 0.0E0
55 IF (DNU2.GT.RTR1) FDN = DNU2*DNU2
56 EZ = Z*CMPLX(8.0E0,0.0E0)
57 C-----------------------------------------------------------------------
58 C WHEN Z IS IMAGINARY, THE ERROR TEST MUST BE MADE RELATIVE TO THE
59 C FIRST RECIPROCAL POWER SINCE THIS IS THE LEADING TERM OF THE
60 C EXPANSION FOR THE IMAGINARY PART.
61 C-----------------------------------------------------------------------
62 AEZ = 8.0E0*AZ
63 S = TOL/AEZ
64 JL = RL+RL + 2
65 YY = AIMAG(Z)
66 P1 = CZERO
67 IF (YY.EQ.0.0E0) GO TO 20
68 C-----------------------------------------------------------------------
69 C CALCULATE EXP(PI*(0.5+FNU+N-IL)*I) TO MINIMIZE LOSSES OF
70 C SIGNIFICANCE WHEN FNU OR N IS LARGE
71 C-----------------------------------------------------------------------
72 INU = FNU
73 ARG = (FNU-INU)*PI
74 INU = INU + N - IL
75 AK = -SIN(ARG)
76 BK = COS(ARG)
77 IF (YY.LT.0.0E0) BK = -BK
78 P1 = CMPLX(AK,BK)
79 IF (MOD(INU,2).EQ.1) P1 = -P1
80 20 CONTINUE
81 DO 50 K=1,IL
82 SQK = FDN - 1.0E0
83 ATOL = S*ABS(SQK)
84 SGN = 1.0E0
85 CS1 = CONE
86 CS2 = CONE
87 CK = CONE
88 AK = 0.0E0
89 AA = 1.0E0
90 BB = AEZ
91 DK = EZ
92 DO 30 J=1,JL
93 CK = CK*CMPLX(SQK,0.0E0)/DK
94 CS2 = CS2 + CK
95 SGN = -SGN
96 CS1 = CS1 + CK*CMPLX(SGN,0.0E0)
97 DK = DK + EZ
98 AA = AA*ABS(SQK)/BB
99 BB = BB + AEZ
100 AK = AK + 8.0E0
101 SQK = SQK - AK
102 IF (AA.LE.ATOL) GO TO 40
103 30 CONTINUE
104 GO TO 90
105 40 CONTINUE
106 S2 = CS1
107 IF (X+X.LT.ELIM) S2 = S2 + P1*CS2*CEXP(-Z-Z)
108 FDN = FDN + 8.0E0*DFNU + 4.0E0
109 P1 = -P1
110 M = N - IL + K
111 Y(M) = S2*AK1
112 50 CONTINUE
113 IF (N.LE.2) RETURN
114 NN = N
115 K = NN - 2
116 AK = K
117 RZ = (CONE+CONE)/Z
118 IB = 3
119 DO 60 I=IB,NN
120 Y(K) = CMPLX(AK+FNU,0.0E0)*RZ*Y(K+1) + Y(K+2)
121 AK = AK - 1.0E0
122 K = K - 1
123 60 CONTINUE
124 IF (KODED.EQ.0) RETURN
125 CK = CEXP(CZ)
126 DO 70 I=1,NN
127 Y(I) = Y(I)*CK
128 70 CONTINUE
129 RETURN
130 80 CONTINUE
131 NZ = -1
132 RETURN
133 90 CONTINUE
134 NZ=-2
135 RETURN
136 END
@@ -0,0 +1,139
1 *> \brief \b CAXPY
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 * Definition:
9 * ===========
10 *
11 * SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY)
12 *
13 * .. Scalar Arguments ..
14 * COMPLEX CA
15 * INTEGER INCX,INCY,N
16 * ..
17 * .. Array Arguments ..
18 * COMPLEX CX(*),CY(*)
19 * ..
20 *
21 *
22 *> \par Purpose:
23 * =============
24 *>
25 *> \verbatim
26 *>
27 *> CAXPY constant times a vector plus a vector.
28 *> \endverbatim
29 *
30 * Arguments:
31 * ==========
32 *
33 *> \param[in] N
34 *> \verbatim
35 *> N is INTEGER
36 *> number of elements in input vector(s)
37 *> \endverbatim
38 *>
39 *> \param[in] CA
40 *> \verbatim
41 *> CA is COMPLEX
42 *> On entry, CA specifies the scalar alpha.
43 *> \endverbatim
44 *>
45 *> \param[in] CX
46 *> \verbatim
47 *> CX is COMPLEX array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
48 *> \endverbatim
49 *>
50 *> \param[in] INCX
51 *> \verbatim
52 *> INCX is INTEGER
53 *> storage spacing between elements of CX
54 *> \endverbatim
55 *>
56 *> \param[in,out] CY
57 *> \verbatim
58 *> CY is COMPLEX array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
59 *> \endverbatim
60 *>
61 *> \param[in] INCY
62 *> \verbatim
63 *> INCY is INTEGER
64 *> storage spacing between elements of CY
65 *> \endverbatim
66 *
67 * Authors:
68 * ========
69 *
70 *> \author Univ. of Tennessee
71 *> \author Univ. of California Berkeley
72 *> \author Univ. of Colorado Denver
73 *> \author NAG Ltd.
74 *
75 *> \date November 2017
76 *
77 *> \ingroup complex_blas_level1
78 *
79 *> \par Further Details:
80 * =====================
81 *>
82 *> \verbatim
83 *>
84 *> jack dongarra, linpack, 3/11/78.
85 *> modified 12/3/93, array(1) declarations changed to array(*)
86 *> \endverbatim
87 *>
88 * =====================================================================
89 SUBROUTINE CAXPY(N,CA,CX,INCX,CY,INCY)
90 *
91 * -- Reference BLAS level1 routine (version 3.8.0) --
92 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
93 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
94 * November 2017
95 *
96 * .. Scalar Arguments ..
97 COMPLEX CA
98 INTEGER INCX,INCY,N
99 * ..
100 * .. Array Arguments ..
101 COMPLEX CX(*),CY(*)
102 * ..
103 *
104 * =====================================================================
105 *
106 * .. Local Scalars ..
107 INTEGER I,IX,IY
108 * ..
109 * .. External Functions ..
110 REAL SCABS1
111 EXTERNAL SCABS1
112 * ..
113 IF (N.LE.0) RETURN
114 IF (SCABS1(CA).EQ.0.0E+0) RETURN
115 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
116 *
117 * code for both increments equal to 1
118 *
119 DO I = 1,N
120 CY(I) = CY(I) + CA*CX(I)
121 END DO
122 ELSE
123 *
124 * code for unequal increments or equal increments
125 * not equal to 1
126 *
127 IX = 1
128 IY = 1
129 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
130 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
131 DO I = 1,N
132 CY(IY) = CY(IY) + CA*CX(IX)
133 IX = IX + INCX
134 IY = IY + INCY
135 END DO
136 END IF
137 *
138 RETURN
139 END
@@ -0,0 +1,261
1 *DECK CBESI
2 SUBROUTINE CBESI (Z, FNU, KODE, N, CY, NZ, IERR)
3 C***BEGIN PROLOGUE CBESI
4 C***PURPOSE Compute a sequence of the Bessel functions I(a,z) for
5 C complex argument z and real nonnegative orders a=b,b+1,
6 C b+2,... where b>0. A scaling option is available to
7 C help avoid overflow.
8 C***LIBRARY SLATEC
9 C***CATEGORY C10B4
10 C***TYPE COMPLEX (CBESI-C, ZBESI-C)
11 C***KEYWORDS BESSEL FUNCTIONS OF COMPLEX ARGUMENT, I BESSEL FUNCTIONS,
12 C MODIFIED BESSEL FUNCTIONS
13 C***AUTHOR Amos, D. E., (SNL)
14 C***DESCRIPTION
15 C
16 C On KODE=1, CBESI computes an N-member sequence of complex
17 C Bessel functions CY(L)=I(FNU+L-1,Z) for real nonnegative
18 C orders FNU+L-1, L=1,...,N and complex Z in the cut plane
19 C -pi<arg(Z)<=pi. On KODE=2, CBESI returns the scaled functions
20 C
21 C CY(L) = exp(-abs(X))*I(FNU+L-1,Z), L=1,...,N and X=Re(Z)
22 C
23 C which removes the exponential growth in both the left and
24 C right half-planes as Z goes to infinity.
25 C
26 C Input
27 C Z - Argument of type COMPLEX
28 C FNU - Initial order of type REAL, FNU>=0
29 C KODE - A parameter to indicate the scaling option
30 C KODE=1 returns
31 C CY(L)=I(FNU+L-1,Z), L=1,...,N
32 C =2 returns
33 C CY(L)=exp(-abs(X))*I(FNU+L-1,Z), L=1,...,N
34 C where X=Re(Z)
35 C N - Number of terms in the sequence, N>=1
36 C
37 C Output
38 C CY - Result vector of type COMPLEX
39 C NZ - Number of underflows set to zero
40 C NZ=0 Normal return
41 C NZ>0 CY(L)=0, L=N-NZ+1,...,N
42 C IERR - Error flag
43 C IERR=0 Normal return - COMPUTATION COMPLETED
44 C IERR=1 Input error - NO COMPUTATION
45 C IERR=2 Overflow - NO COMPUTATION
46 C (Re(Z) too large on KODE=1)
47 C IERR=3 Precision warning - COMPUTATION COMPLETED
48 C (Result has half precision or less
49 C because abs(Z) or FNU+N-1 is large)
50 C IERR=4 Precision error - NO COMPUTATION
51 C (Result has no precision because
52 C abs(Z) or FNU+N-1 is too large)
53 C IERR=5 Algorithmic error - NO COMPUTATION
54 C (Termination condition not met)
55 C
56 C *Long Description:
57 C
58 C The computation of I(a,z) is carried out by the power series
59 C for small abs(z), the asymptotic expansion for large abs(z),
60 C the Miller algorithm normalized by the Wronskian and a
61 C Neumann series for intermediate magnitudes of z, and the
62 C uniform asymptotic expansions for I(a,z) and J(a,z) for
63 C large orders a. Backward recurrence is used to generate
64 C sequences or reduce orders when necessary.
65 C
66 C The calculations above are done in the right half plane and
67 C continued into the left half plane by the formula
68 C
69 C I(a,z*exp(t)) = exp(t*a)*I(a,z), Re(z)>0
70 C t = i*pi or -i*pi
71 C
72 C For negative orders, the formula
73 C
74 C I(-a,z) = I(a,z) + (2/pi)*sin(pi*a)*K(a,z)
75 C
76 C can be used. However, for large orders close to integers the
77 C the function changes radically. When a is a large positive
78 C integer, the magnitude of I(-a,z)=I(a,z) is a large
79 C negative power of ten. But when a is not an integer,
80 C K(a,z) dominates in magnitude with a large positive power of
81 C ten and the most that the second term can be reduced is by
82 C unit roundoff from the coefficient. Thus, wide changes can
83 C occur within unit roundoff of a large integer for a. Here,
84 C large means a>abs(z).
85 C
86 C In most complex variable computation, one must evaluate ele-
87 C mentary functions. When the magnitude of Z or FNU+N-1 is
88 C large, losses of significance by argument reduction occur.
89 C Consequently, if either one exceeds U1=SQRT(0.5/UR), then
90 C losses exceeding half precision are likely and an error flag
91 C IERR=3 is triggered where UR=R1MACH(4)=UNIT ROUNDOFF. Also,
92 C if either is larger than U2=0.5/UR, then all significance is
93 C lost and IERR=4. In order to use the INT function, arguments
94 C must be further restricted not to exceed the largest machine
95 C integer, U3=I1MACH(9). Thus, the magnitude of Z and FNU+N-1
96 C is restricted by MIN(U2,U3). In IEEE arithmetic, U1,U2, and
97 C U3 approximate 2.0E+3, 4.2E+6, 2.1E+9 in single precision
98 C and 4.7E+7, 2.3E+15 and 2.1E+9 in double precision. This
99 C makes U2 limiting in single precision and U3 limiting in
100 C double precision. This means that one can expect to retain,
101 C in the worst cases on IEEE machines, no digits in single pre-
102 C cision and only 6 digits in double precision. Similar con-
103 C siderations hold for other machines.
104 C
105 C The approximate relative error in the magnitude of a complex
106 C Bessel function can be expressed as P*10**S where P=MAX(UNIT
107 C ROUNDOFF,1.0E-18) is the nominal precision and 10**S repre-
108 C sents the increase in error due to argument reduction in the
109 C elementary functions. Here, S=MAX(1,ABS(LOG10(ABS(Z))),
110 C ABS(LOG10(FNU))) approximately (i.e., S=MAX(1,ABS(EXPONENT OF
111 C ABS(Z),ABS(EXPONENT OF FNU)) ). However, the phase angle may
112 C have only absolute accuracy. This is most likely to occur
113 C when one component (in magnitude) is larger than the other by
114 C several orders of magnitude. If one component is 10**K larger
115 C than the other, then one can expect only MAX(ABS(LOG10(P))-K,
116 C 0) significant digits; or, stated another way, when K exceeds
117 C the exponent of P, no significant digits remain in the smaller
118 C component. However, the phase angle retains absolute accuracy
119 C because, in complex arithmetic with precision P, the smaller
120 C component will not (as a rule) decrease below P times the
121 C magnitude of the larger component. In these extreme cases,
122 C the principal phase angle is on the order of +P, -P, PI/2-P,
123 C or -PI/2+P.
124 C
125 C***REFERENCES 1. M. Abramowitz and I. A. Stegun, Handbook of Mathe-
126 C matical Functions, National Bureau of Standards
127 C Applied Mathematics Series 55, U. S. Department
128 C of Commerce, Tenth Printing (1972) or later.
129 C 2. D. E. Amos, Computation of Bessel Functions of
130 C Complex Argument, Report SAND83-0086, Sandia National
131 C Laboratories, Albuquerque, NM, May 1983.
132 C 3. D. E. Amos, Computation of Bessel Functions of
133 C Complex Argument and Large Order, Report SAND83-0643,
134 C Sandia National Laboratories, Albuquerque, NM, May
135 C 1983.
136 C 4. D. E. Amos, A Subroutine Package for Bessel Functions
137 C of a Complex Argument and Nonnegative Order, Report
138 C SAND85-1018, Sandia National Laboratory, Albuquerque,
139 C NM, May 1985.
140 C 5. D. E. Amos, A portable package for Bessel functions
141 C of a complex argument and nonnegative order, ACM
142 C Transactions on Mathematical Software, 12 (September
143 C 1986), pp. 265-273.
144 C
145 C***ROUTINES CALLED CBINU, I1MACH, R1MACH
146 C***REVISION HISTORY (YYMMDD)
147 C 830501 DATE WRITTEN
148 C 890801 REVISION DATE from Version 3.2
149 C 910415 Prologue converted to Version 4.0 format. (BAB)
150 C 920128 Category corrected. (WRB)
151 C 920811 Prologue revised. (DWL)
152 C***END PROLOGUE CBESI
153 COMPLEX CONE, CSGN, CY, Z, ZN
154 REAL AA, ALIM, ARG, DIG, ELIM, FNU, FNUL, PI, RL, R1M5, S1, S2,
155 * TOL, XX, YY, R1MACH, AZ, FN, BB, ASCLE, RTOL, ATOL
156 INTEGER I, IERR, INU, K, KODE, K1, K2, N, NN, NZ, I1MACH
157 DIMENSION CY(N)
158 DATA PI /3.14159265358979324E0/
159 DATA CONE / (1.0E0,0.0E0) /
160 C
161 C***FIRST EXECUTABLE STATEMENT CBESI
162 IERR = 0
163 NZ=0
164 IF (FNU.LT.0.0E0) IERR=1
165 IF (KODE.LT.1 .OR. KODE.GT.2) IERR=1
166 IF (N.LT.1) IERR=1
167 IF (IERR.NE.0) RETURN
168 XX = REAL(Z)
169 YY = AIMAG(Z)
170 C-----------------------------------------------------------------------
171 C SET PARAMETERS RELATED TO MACHINE CONSTANTS.
172 C TOL IS THE APPROXIMATE UNIT ROUNDOFF LIMITED TO 1.0E-18.
173 C ELIM IS THE APPROXIMATE EXPONENTIAL OVER- AND UNDERFLOW LIMIT.
174 C EXP(-ELIM).LT.EXP(-ALIM)=EXP(-ELIM)/TOL AND
175 C EXP(ELIM).GT.EXP(ALIM)=EXP(ELIM)*TOL ARE INTERVALS NEAR
176 C UNDERFLOW AND OVERFLOW LIMITS WHERE SCALED ARITHMETIC IS DONE.
177 C RL IS THE LOWER BOUNDARY OF THE ASYMPTOTIC EXPANSION FOR LARGE Z.
178 C DIG = NUMBER OF BASE 10 DIGITS IN TOL = 10**(-DIG).
179 C FNUL IS THE LOWER BOUNDARY OF THE ASYMPTOTIC SERIES FOR LARGE FNU.
180 C-----------------------------------------------------------------------
181 TOL = MAX(R1MACH(4),1.0E-18)
182 K1 = I1MACH(12)
183 K2 = I1MACH(13)
184 R1M5 = R1MACH(5)
185 K = MIN(ABS(K1),ABS(K2))
186 ELIM = 2.303E0*(K*R1M5-3.0E0)
187 K1 = I1MACH(11) - 1
188 AA = R1M5*K1
189 DIG = MIN(AA,18.0E0)
190 AA = AA*2.303E0
191 ALIM = ELIM + MAX(-AA,-41.45E0)
192 RL = 1.2E0*DIG + 3.0E0
193 FNUL = 10.0E0 + 6.0E0*(DIG-3.0E0)
194 AZ = ABS(Z)
195 C-----------------------------------------------------------------------
196 C TEST FOR RANGE
197 C-----------------------------------------------------------------------
198 AA = 0.5E0/TOL
199 BB=I1MACH(9)*0.5E0
200 AA=MIN(AA,BB)
201 IF(AZ.GT.AA) GO TO 140
202 FN=FNU+(N-1)
203 IF(FN.GT.AA) GO TO 140
204 AA=SQRT(AA)
205 IF(AZ.GT.AA) IERR=3
206 IF(FN.GT.AA) IERR=3
207 ZN = Z
208 CSGN = CONE
209 IF (XX.GE.0.0E0) GO TO 40
210 ZN = -Z
211 C-----------------------------------------------------------------------
212 C CALCULATE CSGN=EXP(FNU*PI*I) TO MINIMIZE LOSSES OF SIGNIFICANCE
213 C WHEN FNU IS LARGE
214 C-----------------------------------------------------------------------
215 INU = FNU
216 ARG = (FNU-INU)*PI
217 IF (YY.LT.0.0E0) ARG = -ARG
218 S1 = COS(ARG)
219 S2 = SIN(ARG)
220 CSGN = CMPLX(S1,S2)
221 IF (MOD(INU,2).EQ.1) CSGN = -CSGN
222 40 CONTINUE
223 CALL CBINU(ZN, FNU, KODE, N, CY, NZ, RL, FNUL, TOL, ELIM, ALIM)
224 IF (NZ.LT.0) GO TO 120
225 IF (XX.GE.0.0E0) RETURN
226 C-----------------------------------------------------------------------
227 C ANALYTIC CONTINUATION TO THE LEFT HALF PLANE
228 C-----------------------------------------------------------------------
229 NN = N - NZ
230 IF (NN.EQ.0) RETURN
231 RTOL = 1.0E0/TOL
232 ASCLE = R1MACH(1)*RTOL*1.0E+3
233 DO 50 I=1,NN
234 C CY(I) = CY(I)*CSGN
235 ZN=CY(I)
236 AA=REAL(ZN)
237 BB=AIMAG(ZN)
238 ATOL=1.0E0
239 IF (MAX(ABS(AA),ABS(BB)).GT.ASCLE) GO TO 55
240 ZN = ZN*CMPLX(RTOL,0.0E0)
241 ATOL = TOL
242 55 CONTINUE
243 ZN = ZN*CSGN
244 CY(I) = ZN*CMPLX(ATOL,0.0E0)
245 CSGN = -CSGN
246 50 CONTINUE
247 RETURN
248 120 CONTINUE
249 IF(NZ.EQ.(-2)) GO TO 130
250 NZ = 0
251 IERR=2
252 RETURN
253 130 CONTINUE
254 NZ=0
255 IERR=5
256 RETURN
257 140 CONTINUE
258 NZ=0
259 IERR=4
260 RETURN
261 END
@@ -0,0 +1,115
1 *DECK CBINU
2 SUBROUTINE CBINU (Z, FNU, KODE, N, CY, NZ, RL, FNUL, TOL, ELIM,
3 + ALIM)
4 C***BEGIN PROLOGUE CBINU
5 C***SUBSIDIARY
6 C***PURPOSE Subsidiary to CAIRY, CBESH, CBESI, CBESJ, CBESK and CBIRY
7 C***LIBRARY SLATEC
8 C***TYPE ALL (CBINU-A, ZBINU-A)
9 C***AUTHOR Amos, D. E., (SNL)
10 C***DESCRIPTION
11 C
12 C CBINU COMPUTES THE I FUNCTION IN THE RIGHT HALF Z PLANE
13 C
14 C***SEE ALSO CAIRY, CBESH, CBESI, CBESJ, CBESK, CBIRY
15 C***ROUTINES CALLED CASYI, CBUNI, CMLRI, CSERI, CUOIK, CWRSK
16 C***REVISION HISTORY (YYMMDD)
17 C 830501 DATE WRITTEN
18 C 910415 Prologue converted to Version 4.0 format. (BAB)
19 C***END PROLOGUE CBINU
20 COMPLEX CW, CY, CZERO, Z
21 REAL ALIM, AZ, DFNU, ELIM, FNU, FNUL, RL, TOL
22 INTEGER I, INW, KODE, N, NLAST, NN, NUI, NW, NZ
23 DIMENSION CY(N), CW(2)
24 DATA CZERO / (0.0E0,0.0E0) /
25 C***FIRST EXECUTABLE STATEMENT CBINU
26 NZ = 0
27 AZ = ABS(Z)
28 NN = N
29 DFNU = FNU + (N-1)
30 IF (AZ.LE.2.0E0) GO TO 10
31 IF (AZ*AZ*0.25E0.GT.DFNU+1.0E0) GO TO 20
32 10 CONTINUE
33 C-----------------------------------------------------------------------
34 C POWER SERIES
35 C-----------------------------------------------------------------------
36 CALL CSERI(Z, FNU, KODE, NN, CY, NW, TOL, ELIM, ALIM)
37 INW = ABS(NW)
38 NZ = NZ + INW
39 NN = NN - INW
40 IF (NN.EQ.0) RETURN
41 IF (NW.GE.0) GO TO 120
42 DFNU = FNU + (NN-1)
43 20 CONTINUE
44 IF (AZ.LT.RL) GO TO 40
45 IF (DFNU.LE.1.0E0) GO TO 30
46 IF (AZ+AZ.LT.DFNU*DFNU) GO TO 50
47 C-----------------------------------------------------------------------
48 C ASYMPTOTIC EXPANSION FOR LARGE Z
49 C-----------------------------------------------------------------------
50 30 CONTINUE
51 CALL CASYI(Z, FNU, KODE, NN, CY, NW, RL, TOL, ELIM, ALIM)
52 IF (NW.LT.0) GO TO 130
53 GO TO 120
54 40 CONTINUE
55 IF (DFNU.LE.1.0E0) GO TO 70
56 50 CONTINUE
57 C-----------------------------------------------------------------------
58 C OVERFLOW AND UNDERFLOW TEST ON I SEQUENCE FOR MILLER ALGORITHM
59 C-----------------------------------------------------------------------
60 CALL CUOIK(Z, FNU, KODE, 1, NN, CY, NW, TOL, ELIM, ALIM)
61 IF (NW.LT.0) GO TO 130
62 NZ = NZ + NW
63 NN = NN - NW
64 IF (NN.EQ.0) RETURN
65 DFNU = FNU+(NN-1)
66 IF (DFNU.GT.FNUL) GO TO 110
67 IF (AZ.GT.FNUL) GO TO 110
68 60 CONTINUE
69 IF (AZ.GT.RL) GO TO 80
70 70 CONTINUE
71 C-----------------------------------------------------------------------
72 C MILLER ALGORITHM NORMALIZED BY THE SERIES
73 C-----------------------------------------------------------------------
74 CALL CMLRI(Z, FNU, KODE, NN, CY, NW, TOL)
75 IF(NW.LT.0) GO TO 130
76 GO TO 120
77 80 CONTINUE
78 C-----------------------------------------------------------------------
79 C MILLER ALGORITHM NORMALIZED BY THE WRONSKIAN
80 C-----------------------------------------------------------------------
81 C-----------------------------------------------------------------------
82 C OVERFLOW TEST ON K FUNCTIONS USED IN WRONSKIAN
83 C-----------------------------------------------------------------------
84 CALL CUOIK(Z, FNU, KODE, 2, 2, CW, NW, TOL, ELIM, ALIM)
85 IF (NW.GE.0) GO TO 100
86 NZ = NN
87 DO 90 I=1,NN
88 CY(I) = CZERO
89 90 CONTINUE
90 RETURN
91 100 CONTINUE
92 IF (NW.GT.0) GO TO 130
93 CALL CWRSK(Z, FNU, KODE, NN, CY, NW, CW, TOL, ELIM, ALIM)
94 IF (NW.LT.0) GO TO 130
95 GO TO 120
96 110 CONTINUE
97 C-----------------------------------------------------------------------
98 C INCREMENT FNU+NN-1 UP TO FNUL, COMPUTE AND RECUR BACKWARD
99 C-----------------------------------------------------------------------
100 NUI = FNUL-DFNU + 1
101 NUI = MAX(NUI,0)
102 CALL CBUNI(Z, FNU, KODE, NN, CY, NW, NUI, NLAST, FNUL, TOL, ELIM,
103 * ALIM)
104 IF (NW.LT.0) GO TO 130
105 NZ = NZ + NW
106 IF (NLAST.EQ.0) GO TO 120
107 NN = NLAST
108 GO TO 60
109 120 CONTINUE
110 RETURN
111 130 CONTINUE
112 NZ = -1
113 IF(NW.EQ.(-2)) NZ=-2
114 RETURN
115 END
@@ -0,0 +1,466
1 *DECK CBKNU
2 SUBROUTINE CBKNU (Z, FNU, KODE, N, Y, NZ, TOL, ELIM, ALIM)
3 C***BEGIN PROLOGUE CBKNU
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CAIRY, CBESH, CBESI and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CBKNU-A, ZBKNU-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CBKNU COMPUTES THE K BESSEL FUNCTION IN THE RIGHT HALF Z PLANE
12 C
13 C***SEE ALSO CAIRY, CBESH, CBESI, CBESK
14 C***ROUTINES CALLED CKSCL, CSHCH, CUCHK, GAMLN, I1MACH, R1MACH
15 C***REVISION HISTORY (YYMMDD)
16 C 830501 DATE WRITTEN
17 C 910415 Prologue converted to Version 4.0 format. (BAB)
18 C***END PROLOGUE CBKNU
19 C
20 COMPLEX CCH, CK, COEF, CONE, CRSC, CS, CSCL, CSH, CSR, CSS, CTWO,
21 * CZ, CZERO, F, FMU, P, PT, P1, P2, Q, RZ, SMU, ST, S1, S2, Y, Z,
22 * ZD, CELM, CY
23 REAL AA, AK, ALIM, ASCLE, A1, A2, BB, BK, BRY, CAZ, CC, DNU,
24 * DNU2, ELIM, ETEST, FC, FHS, FK, FKS, FNU, FPI, G1, G2, HPI, PI,
25 * P2I, P2M, P2R, RK, RTHPI, R1, S, SPI, TM, TOL, TTH, T1, T2, XX,
26 * YY, GAMLN, R1MACH, HELIM, ELM, XD, YD, ALAS, AS
27 INTEGER I, IDUM, IFLAG, INU, K, KFLAG, KK, KMAX, KODE, KODED, N,
28 * NZ, I1MACH, NW, J, IC, INUB
29 DIMENSION BRY(3), CC(8), CSS(3), CSR(3), Y(N), CY(2)
30 C
31 DATA KMAX / 30 /
32 DATA R1 / 2.0E0 /
33 DATA CZERO,CONE,CTWO /(0.0E0,0.0E0),(1.0E0,0.0E0),(2.0E0,0.0E0)/
34 C
35 DATA PI, RTHPI, SPI ,HPI, FPI, TTH /
36 1 3.14159265358979324E0, 1.25331413731550025E0,
37 2 1.90985931710274403E0, 1.57079632679489662E0,
38 3 1.89769999331517738E0, 6.66666666666666666E-01/
39 C
40 DATA CC(1), CC(2), CC(3), CC(4), CC(5), CC(6), CC(7), CC(8)/
41 1 5.77215664901532861E-01, -4.20026350340952355E-02,
42 2 -4.21977345555443367E-02, 7.21894324666309954E-03,
43 3 -2.15241674114950973E-04, -2.01348547807882387E-05,
44 4 1.13302723198169588E-06, 6.11609510448141582E-09/
45 C
46 C***FIRST EXECUTABLE STATEMENT CBKNU
47 XX = REAL(Z)
48 YY = AIMAG(Z)
49 CAZ = ABS(Z)
50 CSCL = CMPLX(1.0E0/TOL,0.0E0)
51 CRSC = CMPLX(TOL,0.0E0)
52 CSS(1) = CSCL
53 CSS(2) = CONE
54 CSS(3) = CRSC
55 CSR(1) = CRSC
56 CSR(2) = CONE
57 CSR(3) = CSCL
58 BRY(1) = 1.0E+3*R1MACH(1)/TOL
59 BRY(2) = 1.0E0/BRY(1)
60 BRY(3) = R1MACH(2)
61 NZ = 0
62 IFLAG = 0
63 KODED = KODE
64 RZ = CTWO/Z
65 INU = FNU+0.5E0
66 DNU = FNU - INU
67 IF (ABS(DNU).EQ.0.5E0) GO TO 110
68 DNU2 = 0.0E0
69 IF (ABS(DNU).GT.TOL) DNU2 = DNU*DNU
70 IF (CAZ.GT.R1) GO TO 110
71 C-----------------------------------------------------------------------
72 C SERIES FOR ABS(Z).LE.R1
73 C-----------------------------------------------------------------------
74 FC = 1.0E0
75 SMU = CLOG(RZ)
76 FMU = SMU*CMPLX(DNU,0.0E0)
77 CALL CSHCH(FMU, CSH, CCH)
78 IF (DNU.EQ.0.0E0) GO TO 10
79 FC = DNU*PI
80 FC = FC/SIN(FC)
81 SMU = CSH*CMPLX(1.0E0/DNU,0.0E0)
82 10 CONTINUE
83 A2 = 1.0E0 + DNU
84 C-----------------------------------------------------------------------
85 C GAM(1-Z)*GAM(1+Z)=PI*Z/SIN(PI*Z), T1=1/GAM(1-DNU), T2=1/GAM(1+DNU)
86 C-----------------------------------------------------------------------
87 T2 = EXP(-GAMLN(A2,IDUM))
88 T1 = 1.0E0/(T2*FC)
89 IF (ABS(DNU).GT.0.1E0) GO TO 40
90 C-----------------------------------------------------------------------
91 C SERIES FOR F0 TO RESOLVE INDETERMINACY FOR SMALL ABS(DNU)
92 C-----------------------------------------------------------------------
93 AK = 1.0E0
94 S = CC(1)
95 DO 20 K=2,8
96 AK = AK*DNU2
97 TM = CC(K)*AK
98 S = S + TM
99 IF (ABS(TM).LT.TOL) GO TO 30
100 20 CONTINUE
101 30 G1 = -S
102 GO TO 50
103 40 CONTINUE
104 G1 = (T1-T2)/(DNU+DNU)
105 50 CONTINUE
106 G2 = 0.5E0*(T1+T2)*FC
107 G1 = G1*FC
108 F = CMPLX(G1,0.0E0)*CCH + SMU*CMPLX(G2,0.0E0)
109 PT = CEXP(FMU)
110 P = CMPLX(0.5E0/T2,0.0E0)*PT
111 Q = CMPLX(0.5E0/T1,0.0E0)/PT
112 S1 = F
113 S2 = P
114 AK = 1.0E0
115 A1 = 1.0E0
116 CK = CONE
117 BK = 1.0E0 - DNU2
118 IF (INU.GT.0 .OR. N.GT.1) GO TO 80
119 C-----------------------------------------------------------------------
120 C GENERATE K(FNU,Z), 0.0D0 .LE. FNU .LT. 0.5D0 AND N=1
121 C-----------------------------------------------------------------------
122 IF (CAZ.LT.TOL) GO TO 70
123 CZ = Z*Z*CMPLX(0.25E0,0.0E0)
124 T1 = 0.25E0*CAZ*CAZ
125 60 CONTINUE
126 F = (F*CMPLX(AK,0.0E0)+P+Q)*CMPLX(1.0E0/BK,0.0E0)
127 P = P*CMPLX(1.0E0/(AK-DNU),0.0E0)
128 Q = Q*CMPLX(1.0E0/(AK+DNU),0.0E0)
129 RK = 1.0E0/AK
130 CK = CK*CZ*CMPLX(RK,0.0)
131 S1 = S1 + CK*F
132 A1 = A1*T1*RK
133 BK = BK + AK + AK + 1.0E0
134 AK = AK + 1.0E0
135 IF (A1.GT.TOL) GO TO 60
136 70 CONTINUE
137 Y(1) = S1
138 IF (KODED.EQ.1) RETURN
139 Y(1) = S1*CEXP(Z)
140 RETURN
141 C-----------------------------------------------------------------------
142 C GENERATE K(DNU,Z) AND K(DNU+1,Z) FOR FORWARD RECURRENCE
143 C-----------------------------------------------------------------------
144 80 CONTINUE
145 IF (CAZ.LT.TOL) GO TO 100
146 CZ = Z*Z*CMPLX(0.25E0,0.0E0)
147 T1 = 0.25E0*CAZ*CAZ
148 90 CONTINUE
149 F = (F*CMPLX(AK,0.0E0)+P+Q)*CMPLX(1.0E0/BK,0.0E0)
150 P = P*CMPLX(1.0E0/(AK-DNU),0.0E0)
151 Q = Q*CMPLX(1.0E0/(AK+DNU),0.0E0)
152 RK = 1.0E0/AK
153 CK = CK*CZ*CMPLX(RK,0.0E0)
154 S1 = S1 + CK*F
155 S2 = S2 + CK*(P-F*CMPLX(AK,0.0E0))
156 A1 = A1*T1*RK
157 BK = BK + AK + AK + 1.0E0
158 AK = AK + 1.0E0
159 IF (A1.GT.TOL) GO TO 90
160 100 CONTINUE
161 KFLAG = 2
162 BK = REAL(SMU)
163 A1 = FNU + 1.0E0
164 AK = A1*ABS(BK)
165 IF (AK.GT.ALIM) KFLAG = 3
166 P2 = S2*CSS(KFLAG)
167 S2 = P2*RZ
168 S1 = S1*CSS(KFLAG)
169 IF (KODED.EQ.1) GO TO 210
170 F = CEXP(Z)
171 S1 = S1*F
172 S2 = S2*F
173 GO TO 210
174 C-----------------------------------------------------------------------
175 C IFLAG=0 MEANS NO UNDERFLOW OCCURRED
176 C IFLAG=1 MEANS AN UNDERFLOW OCCURRED- COMPUTATION PROCEEDS WITH
177 C KODED=2 AND A TEST FOR ON SCALE VALUES IS MADE DURING FORWARD
178 C RECURSION
179 C-----------------------------------------------------------------------
180 110 CONTINUE
181 COEF = CMPLX(RTHPI,0.0E0)/CSQRT(Z)
182 KFLAG = 2
183 IF (KODED.EQ.2) GO TO 120
184 IF (XX.GT.ALIM) GO TO 290
185 C BLANK LINE
186 A1 = EXP(-XX)*REAL(CSS(KFLAG))
187 PT = CMPLX(A1,0.0E0)*CMPLX(COS(YY),-SIN(YY))
188 COEF = COEF*PT
189 120 CONTINUE
190 IF (ABS(DNU).EQ.0.5E0) GO TO 300
191 C-----------------------------------------------------------------------
192 C MILLER ALGORITHM FOR ABS(Z).GT.R1
193 C-----------------------------------------------------------------------
194 AK = COS(PI*DNU)
195 AK = ABS(AK)
196 IF (AK.EQ.0.0E0) GO TO 300
197 FHS = ABS(0.25E0-DNU2)
198 IF (FHS.EQ.0.0E0) GO TO 300
199 C-----------------------------------------------------------------------
200 C COMPUTE R2=F(E). IF ABS(Z).GE.R2, USE FORWARD RECURRENCE TO
201 C DETERMINE THE BACKWARD INDEX K. R2=F(E) IS A STRAIGHT LINE ON
202 C 12.LE.E.LE.60. E IS COMPUTED FROM 2**(-E)=B**(1-I1MACH(11))=
203 C TOL WHERE B IS THE BASE OF THE ARITHMETIC.
204 C-----------------------------------------------------------------------
205 T1 = (I1MACH(11)-1)*R1MACH(5)*3.321928094E0
206 T1 = MAX(T1,12.0E0)
207 T1 = MIN(T1,60.0E0)
208 T2 = TTH*T1 - 6.0E0
209 IF (XX.NE.0.0E0) GO TO 130
210 T1 = HPI
211 GO TO 140
212 130 CONTINUE
213 T1 = ATAN(YY/XX)
214 T1 = ABS(T1)
215 140 CONTINUE
216 IF (T2.GT.CAZ) GO TO 170
217 C-----------------------------------------------------------------------
218 C FORWARD RECURRENCE LOOP WHEN ABS(Z).GE.R2
219 C-----------------------------------------------------------------------
220 ETEST = AK/(PI*CAZ*TOL)
221 FK = 1.0E0
222 IF (ETEST.LT.1.0E0) GO TO 180
223 FKS = 2.0E0
224 RK = CAZ + CAZ + 2.0E0
225 A1 = 0.0E0
226 A2 = 1.0E0
227 DO 150 I=1,KMAX
228 AK = FHS/FKS
229 BK = RK/(FK+1.0E0)
230 TM = A2
231 A2 = BK*A2 - AK*A1
232 A1 = TM
233 RK = RK + 2.0E0
234 FKS = FKS + FK + FK + 2.0E0
235 FHS = FHS + FK + FK
236 FK = FK + 1.0E0
237 TM = ABS(A2)*FK
238 IF (ETEST.LT.TM) GO TO 160
239 150 CONTINUE
240 GO TO 310
241 160 CONTINUE
242 FK = FK + SPI*T1*SQRT(T2/CAZ)
243 FHS = ABS(0.25E0-DNU2)
244 GO TO 180
245 170 CONTINUE
246 C-----------------------------------------------------------------------
247 C COMPUTE BACKWARD INDEX K FOR ABS(Z).LT.R2
248 C-----------------------------------------------------------------------
249 A2 = SQRT(CAZ)
250 AK = FPI*AK/(TOL*SQRT(A2))
251 AA = 3.0E0*T1/(1.0E0+CAZ)
252 BB = 14.7E0*T1/(28.0E0+CAZ)
253 AK = (ALOG(AK)+CAZ*COS(AA)/(1.0E0+0.008E0*CAZ))/COS(BB)
254 FK = 0.12125E0*AK*AK/CAZ + 1.5E0
255 180 CONTINUE
256 K = FK
257 C-----------------------------------------------------------------------
258 C BACKWARD RECURRENCE LOOP FOR MILLER ALGORITHM
259 C-----------------------------------------------------------------------
260 FK = K
261 FKS = FK*FK
262 P1 = CZERO
263 P2 = CMPLX(TOL,0.0E0)
264 CS = P2
265 DO 190 I=1,K
266 A1 = FKS - FK
267 A2 = (FKS+FK)/(A1+FHS)
268 RK = 2.0E0/(FK+1.0E0)
269 T1 = (FK+XX)*RK
270 T2 = YY*RK
271 PT = P2
272 P2 = (P2*CMPLX(T1,T2)-P1)*CMPLX(A2,0.0E0)
273 P1 = PT
274 CS = CS + P2
275 FKS = A1 - FK + 1.0E0
276 FK = FK - 1.0E0
277 190 CONTINUE
278 C-----------------------------------------------------------------------
279 C COMPUTE (P2/CS)=(P2/ABS(CS))*(CONJG(CS)/ABS(CS)) FOR BETTER
280 C SCALING
281 C-----------------------------------------------------------------------
282 TM = ABS(CS)
283 PT = CMPLX(1.0E0/TM,0.0E0)
284 S1 = PT*P2
285 CS = CONJG(CS)*PT
286 S1 = COEF*S1*CS
287 IF (INU.GT.0 .OR. N.GT.1) GO TO 200
288 ZD = Z
289 IF(IFLAG.EQ.1) GO TO 270
290 GO TO 240
291 200 CONTINUE
292 C-----------------------------------------------------------------------
293 C COMPUTE P1/P2=(P1/ABS(P2)*CONJG(P2)/ABS(P2) FOR SCALING
294 C-----------------------------------------------------------------------
295 TM = ABS(P2)
296 PT = CMPLX(1.0E0/TM,0.0E0)
297 P1 = PT*P1
298 P2 = CONJG(P2)*PT
299 PT = P1*P2
300 S2 = S1*(CONE+(CMPLX(DNU+0.5E0,0.0E0)-PT)/Z)
301 C-----------------------------------------------------------------------
302 C FORWARD RECURSION ON THE THREE TERM RECURSION RELATION WITH
303 C SCALING NEAR EXPONENT EXTREMES ON KFLAG=1 OR KFLAG=3
304 C-----------------------------------------------------------------------
305 210 CONTINUE
306 CK = CMPLX(DNU+1.0E0,0.0E0)*RZ
307 IF (N.EQ.1) INU = INU - 1
308 IF (INU.GT.0) GO TO 220
309 IF (N.EQ.1) S1=S2
310 ZD = Z
311 IF(IFLAG.EQ.1) GO TO 270
312 GO TO 240
313 220 CONTINUE
314 INUB = 1
315 IF (IFLAG.EQ.1) GO TO 261
316 225 CONTINUE
317 P1 = CSR(KFLAG)
318 ASCLE = BRY(KFLAG)
319 DO 230 I=INUB,INU
320 ST = S2
321 S2 = CK*S2 + S1
322 S1 = ST
323 CK = CK + RZ
324 IF (KFLAG.GE.3) GO TO 230
325 P2 = S2*P1
326 P2R = REAL(P2)
327 P2I = AIMAG(P2)
328 P2R = ABS(P2R)
329 P2I = ABS(P2I)
330 P2M = MAX(P2R,P2I)
331 IF (P2M.LE.ASCLE) GO TO 230
332 KFLAG = KFLAG + 1
333 ASCLE = BRY(KFLAG)
334 S1 = S1*P1
335 S2 = P2
336 S1 = S1*CSS(KFLAG)
337 S2 = S2*CSS(KFLAG)
338 P1 = CSR(KFLAG)
339 230 CONTINUE
340 IF (N.EQ.1) S1 = S2
341 240 CONTINUE
342 Y(1) = S1*CSR(KFLAG)
343 IF (N.EQ.1) RETURN
344 Y(2) = S2*CSR(KFLAG)
345 IF (N.EQ.2) RETURN
346 KK = 2
347 250 CONTINUE
348 KK = KK + 1
349 IF (KK.GT.N) RETURN
350 P1 = CSR(KFLAG)
351 ASCLE = BRY(KFLAG)
352 DO 260 I=KK,N
353 P2 = S2
354 S2 = CK*S2 + S1
355 S1 = P2
356 CK = CK + RZ
357 P2 = S2*P1
358 Y(I) = P2
359 IF (KFLAG.GE.3) GO TO 260
360 P2R = REAL(P2)
361 P2I = AIMAG(P2)
362 P2R = ABS(P2R)
363 P2I = ABS(P2I)
364 P2M = MAX(P2R,P2I)
365 IF (P2M.LE.ASCLE) GO TO 260
366 KFLAG = KFLAG + 1
367 ASCLE = BRY(KFLAG)
368 S1 = S1*P1
369 S2 = P2
370 S1 = S1*CSS(KFLAG)
371 S2 = S2*CSS(KFLAG)
372 P1 = CSR(KFLAG)
373 260 CONTINUE
374 RETURN
375 C-----------------------------------------------------------------------
376 C IFLAG=1 CASES, FORWARD RECURRENCE ON SCALED VALUES ON UNDERFLOW
377 C-----------------------------------------------------------------------
378 261 CONTINUE
379 HELIM = 0.5E0*ELIM
380 ELM = EXP(-ELIM)
381 CELM = CMPLX(ELM,0.0)
382 ASCLE = BRY(1)
383 ZD = Z
384 XD = XX
385 YD = YY
386 IC = -1
387 J = 2
388 DO 262 I=1,INU
389 ST = S2
390 S2 = CK*S2+S1
391 S1 = ST
392 CK = CK+RZ
393 AS = ABS(S2)
394 ALAS = ALOG(AS)
395 P2R = -XD+ALAS
396 IF(P2R.LT.(-ELIM)) GO TO 263
397 P2 = -ZD+CLOG(S2)
398 P2R = REAL(P2)
399 P2I = AIMAG(P2)
400 P2M = EXP(P2R)/TOL
401 P1 = CMPLX(P2M,0.0E0)*CMPLX(COS(P2I),SIN(P2I))
402 CALL CUCHK(P1,NW,ASCLE,TOL)
403 IF(NW.NE.0) GO TO 263
404 J=3-J
405 CY(J) = P1
406 IF(IC.EQ.(I-1)) GO TO 264
407 IC = I
408 GO TO 262
409 263 CONTINUE
410 IF(ALAS.LT.HELIM) GO TO 262
411 XD = XD-ELIM
412 S1 = S1*CELM
413 S2 = S2*CELM
414 ZD = CMPLX(XD,YD)
415 262 CONTINUE
416 IF(N.EQ.1) S1 = S2
417 GO TO 270
418 264 CONTINUE
419 KFLAG = 1
420 INUB = I+1
421 S2 = CY(J)
422 J = 3 - J
423 S1 = CY(J)
424 IF(INUB.LE.INU) GO TO 225
425 IF(N.EQ.1) S1 = S2
426 GO TO 240
427 270 CONTINUE
428 Y(1) = S1
429 IF (N.EQ.1) GO TO 280
430 Y(2) = S2
431 280 CONTINUE
432 ASCLE = BRY(1)
433 CALL CKSCL(ZD, FNU, N, Y, NZ, RZ, ASCLE, TOL, ELIM)
434 INU = N - NZ
435 IF (INU.LE.0) RETURN
436 KK = NZ + 1
437 S1 = Y(KK)
438 Y(KK) = S1*CSR(1)
439 IF (INU.EQ.1) RETURN
440 KK = NZ + 2
441 S2 = Y(KK)
442 Y(KK) = S2*CSR(1)
443 IF (INU.EQ.2) RETURN
444 T2 = FNU + (KK-1)
445 CK = CMPLX(T2,0.0E0)*RZ
446 KFLAG = 1
447 GO TO 250
448 290 CONTINUE
449 C-----------------------------------------------------------------------
450 C SCALE BY EXP(Z), IFLAG = 1 CASES
451 C-----------------------------------------------------------------------
452 KODED = 2
453 IFLAG = 1
454 KFLAG = 2
455 GO TO 120
456 C-----------------------------------------------------------------------
457 C FNU=HALF ODD INTEGER CASE, DNU=-0.5
458 C-----------------------------------------------------------------------
459 300 CONTINUE
460 S1 = COEF
461 S2 = COEF
462 GO TO 210
463 310 CONTINUE
464 NZ=-2
465 RETURN
466 END
@@ -0,0 +1,169
1 *DECK CBUNI
2 SUBROUTINE CBUNI (Z, FNU, KODE, N, Y, NZ, NUI, NLAST, FNUL, TOL,
3 + ELIM, ALIM)
4 C***BEGIN PROLOGUE CBUNI
5 C***SUBSIDIARY
6 C***PURPOSE Subsidiary to CBESI and CBESK
7 C***LIBRARY SLATEC
8 C***TYPE ALL (CBUNI-A, ZBUNI-A)
9 C***AUTHOR Amos, D. E., (SNL)
10 C***DESCRIPTION
11 C
12 C CBUNI COMPUTES THE I BESSEL FUNCTION FOR LARGE ABS(Z).GT.
13 C FNUL AND FNU+N-1.LT.FNUL. THE ORDER IS INCREASED FROM
14 C FNU+N-1 GREATER THAN FNUL BY ADDING NUI AND COMPUTING
15 C ACCORDING TO THE UNIFORM ASYMPTOTIC EXPANSION FOR I(FNU,Z)
16 C ON IFORM=1 AND THE EXPANSION FOR J(FNU,Z) ON IFORM=2
17 C
18 C***SEE ALSO CBESI, CBESK
19 C***ROUTINES CALLED CUNI1, CUNI2, R1MACH
20 C***REVISION HISTORY (YYMMDD)
21 C 830501 DATE WRITTEN
22 C 910415 Prologue converted to Version 4.0 format. (BAB)
23 C***END PROLOGUE CBUNI
24 COMPLEX CSCL, CSCR, CY, RZ, ST, S1, S2, Y, Z
25 REAL ALIM, AX, AY, DFNU, ELIM, FNU, FNUI, FNUL, GNU, TOL, XX, YY,
26 * ASCLE, BRY, STR, STI, STM, R1MACH
27 INTEGER I, IFLAG, IFORM, K, KODE, N, NL, NLAST, NUI, NW, NZ
28 DIMENSION Y(N), CY(2), BRY(3)
29 C***FIRST EXECUTABLE STATEMENT CBUNI
30 NZ = 0
31 XX = REAL(Z)
32 YY = AIMAG(Z)
33 AX = ABS(XX)*1.7321E0
34 AY = ABS(YY)
35 IFORM = 1
36 IF (AY.GT.AX) IFORM = 2
37 IF (NUI.EQ.0) GO TO 60
38 FNUI = NUI
39 DFNU = FNU + (N-1)
40 GNU = DFNU + FNUI
41 IF (IFORM.EQ.2) GO TO 10
42 C-----------------------------------------------------------------------
43 C ASYMPTOTIC EXPANSION FOR I(FNU,Z) FOR LARGE FNU APPLIED IN
44 C -PI/3.LE.ARG(Z).LE.PI/3
45 C-----------------------------------------------------------------------
46 CALL CUNI1(Z, GNU, KODE, 2, CY, NW, NLAST, FNUL, TOL, ELIM, ALIM)
47 GO TO 20
48 10 CONTINUE
49 C-----------------------------------------------------------------------
50 C ASYMPTOTIC EXPANSION FOR J(FNU,Z*EXP(M*HPI)) FOR LARGE FNU
51 C APPLIED IN PI/3.LT.ABS(ARG(Z)).LE.PI/2 WHERE M=+I OR -I
52 C AND HPI=PI/2
53 C-----------------------------------------------------------------------
54 CALL CUNI2(Z, GNU, KODE, 2, CY, NW, NLAST, FNUL, TOL, ELIM, ALIM)
55 20 CONTINUE
56 IF (NW.LT.0) GO TO 50
57 IF (NW.NE.0) GO TO 90
58 AY = ABS(CY(1))
59 C----------------------------------------------------------------------
60 C SCALE BACKWARD RECURRENCE, BRY(3) IS DEFINED BUT NEVER USED
61 C----------------------------------------------------------------------
62 BRY(1) = 1.0E+3*R1MACH(1)/TOL
63 BRY(2) = 1.0E0/BRY(1)
64 BRY(3) = BRY(2)
65 IFLAG = 2
66 ASCLE = BRY(2)
67 AX = 1.0E0
68 CSCL = CMPLX(AX,0.0E0)
69 IF (AY.GT.BRY(1)) GO TO 21
70 IFLAG = 1
71 ASCLE = BRY(1)
72 AX = 1.0E0/TOL
73 CSCL = CMPLX(AX,0.0E0)
74 GO TO 25
75 21 CONTINUE
76 IF (AY.LT.BRY(2)) GO TO 25
77 IFLAG = 3
78 ASCLE = BRY(3)
79 AX = TOL
80 CSCL = CMPLX(AX,0.0E0)
81 25 CONTINUE
82 AY = 1.0E0/AX
83 CSCR = CMPLX(AY,0.0E0)
84 S1 = CY(2)*CSCL
85 S2 = CY(1)*CSCL
86 RZ = CMPLX(2.0E0,0.0E0)/Z
87 DO 30 I=1,NUI
88 ST = S2
89 S2 = CMPLX(DFNU+FNUI,0.0E0)*RZ*S2 + S1
90 S1 = ST
91 FNUI = FNUI - 1.0E0
92 IF (IFLAG.GE.3) GO TO 30
93 ST = S2*CSCR
94 STR = REAL(ST)
95 STI = AIMAG(ST)
96 STR = ABS(STR)
97 STI = ABS(STI)
98 STM = MAX(STR,STI)
99 IF (STM.LE.ASCLE) GO TO 30
100 IFLAG = IFLAG+1
101 ASCLE = BRY(IFLAG)
102 S1 = S1*CSCR
103 S2 = ST
104 AX = AX*TOL
105 AY = 1.0E0/AX
106 CSCL = CMPLX(AX,0.0E0)
107 CSCR = CMPLX(AY,0.0E0)
108 S1 = S1*CSCL
109 S2 = S2*CSCL
110 30 CONTINUE
111 Y(N) = S2*CSCR
112 IF (N.EQ.1) RETURN
113 NL = N - 1
114 FNUI = NL
115 K = NL
116 DO 40 I=1,NL
117 ST = S2
118 S2 = CMPLX(FNU+FNUI,0.0E0)*RZ*S2 + S1
119 S1 = ST
120 ST = S2*CSCR
121 Y(K) = ST
122 FNUI = FNUI - 1.0E0
123 K = K - 1
124 IF (IFLAG.GE.3) GO TO 40
125 STR = REAL(ST)
126 STI = AIMAG(ST)
127 STR = ABS(STR)
128 STI = ABS(STI)
129 STM = MAX(STR,STI)
130 IF (STM.LE.ASCLE) GO TO 40
131 IFLAG = IFLAG+1
132 ASCLE = BRY(IFLAG)
133 S1 = S1*CSCR
134 S2 = ST
135 AX = AX*TOL
136 AY = 1.0E0/AX
137 CSCL = CMPLX(AX,0.0E0)
138 CSCR = CMPLX(AY,0.0E0)
139 S1 = S1*CSCL
140 S2 = S2*CSCL
141 40 CONTINUE
142 RETURN
143 50 CONTINUE
144 NZ = -1
145 IF(NW.EQ.(-2)) NZ=-2
146 RETURN
147 60 CONTINUE
148 IF (IFORM.EQ.2) GO TO 70
149 C-----------------------------------------------------------------------
150 C ASYMPTOTIC EXPANSION FOR I(FNU,Z) FOR LARGE FNU APPLIED IN
151 C -PI/3.LE.ARG(Z).LE.PI/3
152 C-----------------------------------------------------------------------
153 CALL CUNI1(Z, FNU, KODE, N, Y, NW, NLAST, FNUL, TOL, ELIM, ALIM)
154 GO TO 80
155 70 CONTINUE
156 C-----------------------------------------------------------------------
157 C ASYMPTOTIC EXPANSION FOR J(FNU,Z*EXP(M*HPI)) FOR LARGE FNU
158 C APPLIED IN PI/3.LT.ABS(ARG(Z)).LE.PI/2 WHERE M=+I OR -I
159 C AND HPI=PI/2
160 C-----------------------------------------------------------------------
161 CALL CUNI2(Z, FNU, KODE, N, Y, NW, NLAST, FNUL, TOL, ELIM, ALIM)
162 80 CONTINUE
163 IF (NW.LT.0) GO TO 50
164 NZ = NW
165 RETURN
166 90 CONTINUE
167 NLAST = N
168 RETURN
169 END
@@ -0,0 +1,131
1 *> \brief \b CDOTU
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 * Definition:
9 * ===========
10 *
11 * COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY)
12 *
13 * .. Scalar Arguments ..
14 * INTEGER INCX,INCY,N
15 * ..
16 * .. Array Arguments ..
17 * COMPLEX CX(*),CY(*)
18 * ..
19 *
20 *
21 *> \par Purpose:
22 * =============
23 *>
24 *> \verbatim
25 *>
26 *> CDOTU forms the dot product of two complex vectors
27 *> CDOTU = X^T * Y
28 *>
29 *> \endverbatim
30 *
31 * Arguments:
32 * ==========
33 *
34 *> \param[in] N
35 *> \verbatim
36 *> N is INTEGER
37 *> number of elements in input vector(s)
38 *> \endverbatim
39 *>
40 *> \param[in] CX
41 *> \verbatim
42 *> CX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) )
43 *> \endverbatim
44 *>
45 *> \param[in] INCX
46 *> \verbatim
47 *> INCX is INTEGER
48 *> storage spacing between elements of CX
49 *> \endverbatim
50 *>
51 *> \param[in] CY
52 *> \verbatim
53 *> CY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) )
54 *> \endverbatim
55 *>
56 *> \param[in] INCY
57 *> \verbatim
58 *> INCY is INTEGER
59 *> storage spacing between elements of CY
60 *> \endverbatim
61 *
62 * Authors:
63 * ========
64 *
65 *> \author Univ. of Tennessee
66 *> \author Univ. of California Berkeley
67 *> \author Univ. of Colorado Denver
68 *> \author NAG Ltd.
69 *
70 *> \date November 2017
71 *
72 *> \ingroup complex_blas_level1
73 *
74 *> \par Further Details:
75 * =====================
76 *>
77 *> \verbatim
78 *>
79 *> jack dongarra, linpack, 3/11/78.
80 *> modified 12/3/93, array(1) declarations changed to array(*)
81 *> \endverbatim
82 *>
83 * =====================================================================
84 COMPLEX FUNCTION CDOTU(N,CX,INCX,CY,INCY)
85 *
86 * -- Reference BLAS level1 routine (version 3.8.0) --
87 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
88 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
89 * November 2017
90 *
91 * .. Scalar Arguments ..
92 INTEGER INCX,INCY,N
93 * ..
94 * .. Array Arguments ..
95 COMPLEX CX(*),CY(*)
96 * ..
97 *
98 * =====================================================================
99 *
100 * .. Local Scalars ..
101 COMPLEX CTEMP
102 INTEGER I,IX,IY
103 * ..
104 CTEMP = (0.0,0.0)
105 CDOTU = (0.0,0.0)
106 IF (N.LE.0) RETURN
107 IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN
108 *
109 * code for both increments equal to 1
110 *
111 DO I = 1,N
112 CTEMP = CTEMP + CX(I)*CY(I)
113 END DO
114 ELSE
115 *
116 * code for unequal increments or equal increments
117 * not equal to 1
118 *
119 IX = 1
120 IY = 1
121 IF (INCX.LT.0) IX = (-N+1)*INCX + 1
122 IF (INCY.LT.0) IY = (-N+1)*INCY + 1
123 DO I = 1,N
124 CTEMP = CTEMP + CX(IX)*CY(IY)
125 IX = IX + INCX
126 IY = IY + INCY
127 END DO
128 END IF
129 CDOTU = CTEMP
130 RETURN
131 END
@@ -0,0 +1,112
1 *DECK CKSCL
2 SUBROUTINE CKSCL (ZR, FNU, N, Y, NZ, RZ, ASCLE, TOL, ELIM)
3 C***BEGIN PROLOGUE CKSCL
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBKNU, CUNK1 and CUNK2
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CKSCL-A, ZKSCL-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C SET K FUNCTIONS TO ZERO ON UNDERFLOW, CONTINUE RECURRENCE
12 C ON SCALED FUNCTIONS UNTIL TWO MEMBERS COME ON SCALE, THEN
13 C RETURN WITH MIN(NZ+2,N) VALUES SCALED BY 1/TOL.
14 C
15 C***SEE ALSO CBKNU, CUNK1, CUNK2
16 C***ROUTINES CALLED CUCHK
17 C***REVISION HISTORY (YYMMDD)
18 C ?????? DATE WRITTEN
19 C 910415 Prologue converted to Version 4.0 format. (BAB)
20 C***END PROLOGUE CKSCL
21 COMPLEX CK, CS, CY, CZERO, RZ, S1, S2, Y, ZR, ZD, CELM
22 REAL AA, ASCLE, ACS, AS, CSI, CSR, ELIM, FN, FNU, TOL, XX, ZRI,
23 * ELM, ALAS, HELIM
24 INTEGER I, IC, K, KK, N, NN, NW, NZ
25 DIMENSION Y(N), CY(2)
26 DATA CZERO / (0.0E0,0.0E0) /
27 C***FIRST EXECUTABLE STATEMENT CUCHK
28 NZ = 0
29 IC = 0
30 XX = REAL(ZR)
31 NN = MIN(2,N)
32 DO 10 I=1,NN
33 S1 = Y(I)
34 CY(I) = S1
35 AS = ABS(S1)
36 ACS = -XX + ALOG(AS)
37 NZ = NZ + 1
38 Y(I) = CZERO
39 IF (ACS.LT.(-ELIM)) GO TO 10
40 CS = -ZR + CLOG(S1)
41 CSR = REAL(CS)
42 CSI = AIMAG(CS)
43 AA = EXP(CSR)/TOL
44 CS = CMPLX(AA,0.0E0)*CMPLX(COS(CSI),SIN(CSI))
45 CALL CUCHK(CS, NW, ASCLE, TOL)
46 IF (NW.NE.0) GO TO 10
47 Y(I) = CS
48 NZ = NZ - 1
49 IC = I
50 10 CONTINUE
51 IF (N.EQ.1) RETURN
52 IF (IC.GT.1) GO TO 20
53 Y(1) = CZERO
54 NZ = 2
55 20 CONTINUE
56 IF (N.EQ.2) RETURN
57 IF (NZ.EQ.0) RETURN
58 FN = FNU + 1.0E0
59 CK = CMPLX(FN,0.0E0)*RZ
60 S1 = CY(1)
61 S2 = CY(2)
62 HELIM = 0.5E0*ELIM
63 ELM = EXP(-ELIM)
64 CELM = CMPLX(ELM,0.0E0)
65 ZRI =AIMAG(ZR)
66 ZD = ZR
67 C
68 C FIND TWO CONSECUTIVE Y VALUES ON SCALE. SCALE RECURRENCE IF
69 C S2 GETS LARGER THAN EXP(ELIM/2)
70 C
71 DO 30 I=3,N
72 KK = I
73 CS = S2
74 S2 = CK*S2 + S1
75 S1 = CS
76 CK = CK + RZ
77 AS = ABS(S2)
78 ALAS = ALOG(AS)
79 ACS = -XX + ALAS
80 NZ = NZ + 1
81 Y(I) = CZERO
82 IF (ACS.LT.(-ELIM)) GO TO 25
83 CS = -ZD + CLOG(S2)
84 CSR = REAL(CS)
85 CSI = AIMAG(CS)
86 AA = EXP(CSR)/TOL
87 CS = CMPLX(AA,0.0E0)*CMPLX(COS(CSI),SIN(CSI))
88 CALL CUCHK(CS, NW, ASCLE, TOL)
89 IF (NW.NE.0) GO TO 25
90 Y(I) = CS
91 NZ = NZ - 1
92 IF (IC.EQ.(KK-1)) GO TO 40
93 IC = KK
94 GO TO 30
95 25 CONTINUE
96 IF(ALAS.LT.HELIM) GO TO 30
97 XX = XX-ELIM
98 S1 = S1*CELM
99 S2 = S2*CELM
100 ZD = CMPLX(XX,ZRI)
101 30 CONTINUE
102 NZ = N
103 IF(IC.EQ.N) NZ=N-1
104 GO TO 45
105 40 CONTINUE
106 NZ = KK - 2
107 45 CONTINUE
108 DO 50 K=1,NZ
109 Y(K) = CZERO
110 50 CONTINUE
111 RETURN
112 END
@@ -0,0 +1,166
1 *DECK CMLRI
2 SUBROUTINE CMLRI (Z, FNU, KODE, N, Y, NZ, TOL)
3 C***BEGIN PROLOGUE CMLRI
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBESI and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CMLRI-A, ZMLRI-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CMLRI COMPUTES THE I BESSEL FUNCTION FOR RE(Z).GE.0.0 BY THE
12 C MILLER ALGORITHM NORMALIZED BY A NEUMANN SERIES.
13 C
14 C***SEE ALSO CBESI, CBESK
15 C***ROUTINES CALLED GAMLN, R1MACH
16 C***REVISION HISTORY (YYMMDD)
17 C 830501 DATE WRITTEN
18 C 910415 Prologue converted to Version 4.0 format. (BAB)
19 C***END PROLOGUE CMLRI
20 COMPLEX CK, CNORM, CONE, CTWO, CZERO, PT, P1, P2, RZ, SUM, Y, Z
21 REAL ACK, AK, AP, AT, AZ, BK, FKAP, FKK, FLAM, FNF, FNU, RHO,
22 * RHO2, SCLE, TFNF, TOL, TST, X, GAMLN, R1MACH
23 INTEGER I, IAZ, IDUM, IFNU, INU, ITIME, K, KK, KM, KODE, M, N, NZ
24 DIMENSION Y(N)
25 DATA CZERO,CONE,CTWO /(0.0E0,0.0E0),(1.0E0,0.0E0),(2.0E0,0.0E0)/
26 SCLE = 1.0E+3*R1MACH(1)/TOL
27 C***FIRST EXECUTABLE STATEMENT CMLRI
28 NZ=0
29 AZ = ABS(Z)
30 X = REAL(Z)
31 IAZ = AZ
32 IFNU = FNU
33 INU = IFNU + N - 1
34 AT = IAZ + 1.0E0
35 CK = CMPLX(AT,0.0E0)/Z
36 RZ = CTWO/Z
37 P1 = CZERO
38 P2 = CONE
39 ACK = (AT+1.0E0)/AZ
40 RHO = ACK + SQRT(ACK*ACK-1.0E0)
41 RHO2 = RHO*RHO
42 TST = (RHO2+RHO2)/((RHO2-1.0E0)*(RHO-1.0E0))
43 TST = TST/TOL
44 C-----------------------------------------------------------------------
45 C COMPUTE RELATIVE TRUNCATION ERROR INDEX FOR SERIES
46 C-----------------------------------------------------------------------
47 AK = AT
48 DO 10 I=1,80
49 PT = P2
50 P2 = P1 - CK*P2
51 P1 = PT
52 CK = CK + RZ
53 AP = ABS(P2)
54 IF (AP.GT.TST*AK*AK) GO TO 20
55 AK = AK + 1.0E0
56 10 CONTINUE
57 GO TO 110
58 20 CONTINUE
59 I = I + 1
60 K = 0
61 IF (INU.LT.IAZ) GO TO 40
62 C-----------------------------------------------------------------------
63 C COMPUTE RELATIVE TRUNCATION ERROR FOR RATIOS
64 C-----------------------------------------------------------------------
65 P1 = CZERO
66 P2 = CONE
67 AT = INU + 1.0E0
68 CK = CMPLX(AT,0.0E0)/Z
69 ACK = AT/AZ
70 TST = SQRT(ACK/TOL)
71 ITIME = 1
72 DO 30 K=1,80
73 PT = P2
74 P2 = P1 - CK*P2
75 P1 = PT
76 CK = CK + RZ
77 AP = ABS(P2)
78 IF (AP.LT.TST) GO TO 30
79 IF (ITIME.EQ.2) GO TO 40
80 ACK = ABS(CK)
81 FLAM = ACK + SQRT(ACK*ACK-1.0E0)
82 FKAP = AP/ABS(P1)
83 RHO = MIN(FLAM,FKAP)
84 TST = TST*SQRT(RHO/(RHO*RHO-1.0E0))
85 ITIME = 2
86 30 CONTINUE
87 GO TO 110
88 40 CONTINUE
89 C-----------------------------------------------------------------------
90 C BACKWARD RECURRENCE AND SUM NORMALIZING RELATION
91 C-----------------------------------------------------------------------
92 K = K + 1
93 KK = MAX(I+IAZ,K+INU)
94 FKK = KK
95 P1 = CZERO
96 C-----------------------------------------------------------------------
97 C SCALE P2 AND SUM BY SCLE
98 C-----------------------------------------------------------------------
99 P2 = CMPLX(SCLE,0.0E0)
100 FNF = FNU - IFNU
101 TFNF = FNF + FNF
102 BK = GAMLN(FKK+TFNF+1.0E0,IDUM) - GAMLN(FKK+1.0E0,IDUM)
103 * -GAMLN(TFNF+1.0E0,IDUM)
104 BK = EXP(BK)
105 SUM = CZERO
106 KM = KK - INU
107 DO 50 I=1,KM
108 PT = P2
109 P2 = P1 + CMPLX(FKK+FNF,0.0E0)*RZ*P2
110 P1 = PT
111 AK = 1.0E0 - TFNF/(FKK+TFNF)
112 ACK = BK*AK
113 SUM = SUM + CMPLX(ACK+BK,0.0E0)*P1
114 BK = ACK
115 FKK = FKK - 1.0E0
116 50 CONTINUE
117 Y(N) = P2
118 IF (N.EQ.1) GO TO 70
119 DO 60 I=2,N
120 PT = P2
121 P2 = P1 + CMPLX(FKK+FNF,0.0E0)*RZ*P2
122 P1 = PT
123 AK = 1.0E0 - TFNF/(FKK+TFNF)
124 ACK = BK*AK
125 SUM = SUM + CMPLX(ACK+BK,0.0E0)*P1
126 BK = ACK
127 FKK = FKK - 1.0E0
128 M = N - I + 1
129 Y(M) = P2
130 60 CONTINUE
131 70 CONTINUE
132 IF (IFNU.LE.0) GO TO 90
133 DO 80 I=1,IFNU
134 PT = P2
135 P2 = P1 + CMPLX(FKK+FNF,0.0E0)*RZ*P2
136 P1 = PT
137 AK = 1.0E0 - TFNF/(FKK+TFNF)
138 ACK = BK*AK
139 SUM = SUM + CMPLX(ACK+BK,0.0E0)*P1
140 BK = ACK
141 FKK = FKK - 1.0E0
142 80 CONTINUE
143 90 CONTINUE
144 PT = Z
145 IF (KODE.EQ.2) PT = PT - CMPLX(X,0.0E0)
146 P1 = -CMPLX(FNF,0.0E0)*CLOG(RZ) + PT
147 AP = GAMLN(1.0E0+FNF,IDUM)
148 PT = P1 - CMPLX(AP,0.0E0)
149 C-----------------------------------------------------------------------
150 C THE DIVISION CEXP(PT)/(SUM+P2) IS ALTERED TO AVOID OVERFLOW
151 C IN THE DENOMINATOR BY SQUARING LARGE QUANTITIES
152 C-----------------------------------------------------------------------
153 P2 = P2 + SUM
154 AP = ABS(P2)
155 P1 = CMPLX(1.0E0/AP,0.0E0)
156 CK = CEXP(PT)*P1
157 PT = CONJG(P2)*P1
158 CNORM = CK*PT
159 DO 100 I=1,N
160 Y(I) = Y(I)*CNORM
161 100 CONTINUE
162 RETURN
163 110 CONTINUE
164 NZ=-2
165 RETURN
166 END
@@ -0,0 +1,134
1 #include <math.h>
2
3 typedef struct FCOMPLEX {float r,i;} fcomplex;
4
5 float Cmod(a)
6 fcomplex a;
7 { float c;
8 c=a.r*a.r+a.i*a.i;
9 return c;
10 }
11
12 fcomplex Cadd(a,b)
13 fcomplex a,b;
14 { fcomplex c;
15 c.r=a.r+b.r;
16 c.i=a.i+b.i;
17 return c;
18 }
19
20 fcomplex Csub(a,b)
21 fcomplex a,b;
22 { fcomplex c;
23 c.r=a.r-b.r;
24 c.i=a.i-b.i;
25 return c;
26 }
27
28 fcomplex Cmul(a,b)
29 fcomplex a,b;
30 { fcomplex c;
31 c.r=a.r*b.r-a.i*b.i;
32 c.i=a.i*b.r+a.r*b.i;
33 return c;
34 }
35
36 fcomplex Complex(re,im)
37 float re,im;
38 { fcomplex c;
39 c.r=re;
40 c.i=im;
41 return c;
42 }
43
44 fcomplex Conjg(z)
45 fcomplex z;
46 { fcomplex c;
47 c.r=z.r;
48 c.i = -z.i;
49 return c;
50 }
51
52 fcomplex Cdiv(a,b)
53 fcomplex a,b;
54 { fcomplex c;
55 float r,den;
56 if (fabs(b.r) >= fabs(b.i)) {
57 r=b.i/b.r;
58 den=b.r+r*b.i;
59 c.r=(a.r+r*a.i)/den;
60 c.i=(a.i-r*a.r)/den;
61 } else {
62 r=b.r/b.i;
63 den=b.i+r*b.r;
64 c.r=(a.r*r+a.i)/den;
65 c.i=(a.i*r-a.r)/den;
66 }
67 return c;
68 }
69
70 float Cabs(z)
71 fcomplex z;
72 { float x,y,ans,temp;
73 x=fabs(z.r);
74 y=fabs(z.i);
75 if (x == 0.0)
76 ans=y;
77 else if (y == 0.0)
78 ans=x;
79 else if (x > y) {
80 temp=y/x;
81 ans=x*sqrt(1.0+temp*temp);
82 } else {
83 temp=x/y;
84 ans=y*sqrt(1.0+temp*temp);
85 }
86 return ans;
87 }
88
89 fcomplex Csqrt(z)
90 fcomplex z;
91 { fcomplex c;
92 float x,y,w,r;
93 if ((z.r == 0.0) && (z.i == 0.0)) {
94 c.r=0.0;
95 c.i=0.0;
96 return c;
97 } else {
98 x=fabs(z.r);
99 y=fabs(z.i);
100 if (x >= y) {
101 r=y/x;
102 w=sqrt(x)*sqrt(0.5*(1.0+sqrt(1.0+r*r)));
103 } else {
104 r=x/y;
105 w=sqrt(y)*sqrt(0.5*(r+sqrt(1.0+r*r)));
106 }
107 if (z.r >= 0.0) {
108 c.r=w;
109 c.i=z.i/(2.0*w);
110 } else {
111 c.i=(z.i >= 0) ? w : -w;
112 c.r=z.i/(2.0*c.i);
113 }
114 return c;
115 }
116 }
117
118 fcomplex RCmul(x,a)
119 float x;
120 fcomplex a;
121 { fcomplex c;
122 c.r=x*a.r;
123 c.i=x*a.i;
124 return c;
125 }
126
127 fcomplex RCdiv(a,x)
128 float x;
129 fcomplex a;
130 { fcomplex c;
131 c.r=a.r/x;
132 c.i=a.i/x;
133 return c;
134 }
@@ -0,0 +1,13
1 typedef struct FCOMPLEX {float r,i;} fcomplex;
2
3 extern float Cmod();
4 extern fcomplex Cadd();
5 extern fcomplex Csub();
6 extern fcomplex Cmul();
7 extern fcomplex Complex();
8 extern fcomplex Conjg();
9 extern fcomplex Cdiv();
10 extern float Cabs();
11 extern fcomplex Csqrt();
12 extern fcomplex RCmul();
13 extern fcomplex RCdiv();
@@ -0,0 +1,111
1 *DECK CRATI
2 SUBROUTINE CRATI (Z, FNU, N, CY, TOL)
3 C***BEGIN PROLOGUE CRATI
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBESH, CBESI and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CRATI-A, ZRATI-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CRATI COMPUTES RATIOS OF I BESSEL FUNCTIONS BY BACKWARD
12 C RECURRENCE. THE STARTING INDEX IS DETERMINED BY FORWARD
13 C RECURRENCE AS DESCRIBED IN J. RES. OF NAT. BUR. OF STANDARDS-B,
14 C MATHEMATICAL SCIENCES, VOL 77B, P111-114, SEPTEMBER, 1973,
15 C BESSEL FUNCTIONS I AND J OF COMPLEX ARGUMENT AND INTEGER ORDER,
16 C BY D. J. SOOKNE.
17 C
18 C***SEE ALSO CBESH, CBESI, CBESK
19 C***ROUTINES CALLED (NONE)
20 C***REVISION HISTORY (YYMMDD)
21 C 830501 DATE WRITTEN
22 C 910415 Prologue converted to Version 4.0 format. (BAB)
23 C***END PROLOGUE CRATI
24 COMPLEX CDFNU, CONE, CY, CZERO, PT, P1, P2, RZ, T1, Z
25 REAL AK, AMAGZ, AP1, AP2, ARG, AZ, DFNU, FDNU, FLAM, FNU, FNUP,
26 * RAP1, RHO, TEST, TEST1, TOL
27 INTEGER I, ID, IDNU, INU, ITIME, K, KK, MAGZ, N
28 DIMENSION CY(N)
29 DATA CZERO, CONE / (0.0E0,0.0E0), (1.0E0,0.0E0) /
30 C***FIRST EXECUTABLE STATEMENT CRATI
31 AZ = ABS(Z)
32 INU = FNU
33 IDNU = INU + N - 1
34 FDNU = IDNU
35 MAGZ = AZ
36 AMAGZ = MAGZ+1
37 FNUP = MAX(AMAGZ,FDNU)
38 ID = IDNU - MAGZ - 1
39 ITIME = 1
40 K = 1
41 RZ = (CONE+CONE)/Z
42 T1 = CMPLX(FNUP,0.0E0)*RZ
43 P2 = -T1
44 P1 = CONE
45 T1 = T1 + RZ
46 IF (ID.GT.0) ID = 0
47 AP2 = ABS(P2)
48 AP1 = ABS(P1)
49 C-----------------------------------------------------------------------
50 C THE OVERFLOW TEST ON K(FNU+I-1,Z) BEFORE THE CALL TO CBKNX
51 C GUARANTEES THAT P2 IS ON SCALE. SCALE TEST1 AND ALL SUBSEQUENT
52 C P2 VALUES BY AP1 TO ENSURE THAT AN OVERFLOW DOES NOT OCCUR
53 C PREMATURELY.
54 C-----------------------------------------------------------------------
55 ARG = (AP2+AP2)/(AP1*TOL)
56 TEST1 = SQRT(ARG)
57 TEST = TEST1
58 RAP1 = 1.0E0/AP1
59 P1 = P1*CMPLX(RAP1,0.0E0)
60 P2 = P2*CMPLX(RAP1,0.0E0)
61 AP2 = AP2*RAP1
62 10 CONTINUE
63 K = K + 1
64 AP1 = AP2
65 PT = P2
66 P2 = P1 - T1*P2
67 P1 = PT
68 T1 = T1 + RZ
69 AP2 = ABS(P2)
70 IF (AP1.LE.TEST) GO TO 10
71 IF (ITIME.EQ.2) GO TO 20
72 AK = ABS(T1)*0.5E0
73 FLAM = AK + SQRT(AK*AK-1.0E0)
74 RHO = MIN(AP2/AP1,FLAM)
75 TEST = TEST1*SQRT(RHO/(RHO*RHO-1.0E0))
76 ITIME = 2
77 GO TO 10
78 20 CONTINUE
79 KK = K + 1 - ID
80 AK = KK
81 DFNU = FNU + (N-1)
82 CDFNU = CMPLX(DFNU,0.0E0)
83 T1 = CMPLX(AK,0.0E0)
84 P1 = CMPLX(1.0E0/AP2,0.0E0)
85 P2 = CZERO
86 DO 30 I=1,KK
87 PT = P1
88 P1 = RZ*(CDFNU+T1)*P1 + P2
89 P2 = PT
90 T1 = T1 - CONE
91 30 CONTINUE
92 IF (REAL(P1).NE.0.0E0 .OR. AIMAG(P1).NE.0.0E0) GO TO 40
93 P1 = CMPLX(TOL,TOL)
94 40 CONTINUE
95 CY(N) = P2/P1
96 IF (N.EQ.1) RETURN
97 K = N - 1
98 AK = K
99 T1 = CMPLX(AK,0.0E0)
100 CDFNU = CMPLX(FNU,0.0E0)*RZ
101 DO 60 I=2,N
102 PT = CDFNU + T1*RZ + CY(K+1)
103 IF (REAL(PT).NE.0.0E0 .OR. AIMAG(PT).NE.0.0E0) GO TO 50
104 PT = CMPLX(TOL,TOL)
105 50 CONTINUE
106 CY(K) = CONE/PT
107 T1 = T1 - CONE
108 K = K - 1
109 60 CONTINUE
110 RETURN
111 END
@@ -0,0 +1,55
1 *DECK CS1S2
2 SUBROUTINE CS1S2 (ZR, S1, S2, NZ, ASCLE, ALIM, IUF)
3 C***BEGIN PROLOGUE CS1S2
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CAIRY and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CS1S2-A, ZS1S2-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CS1S2 TESTS FOR A POSSIBLE UNDERFLOW RESULTING FROM THE
12 C ADDITION OF THE I AND K FUNCTIONS IN THE ANALYTIC CON-
13 C TINUATION FORMULA WHERE S1=K FUNCTION AND S2=I FUNCTION.
14 C ON KODE=1 THE I AND K FUNCTIONS ARE DIFFERENT ORDERS OF
15 C MAGNITUDE, BUT FOR KODE=2 THEY CAN BE OF THE SAME ORDER
16 C OF MAGNITUDE AND THE MAXIMUM MUST BE AT LEAST ONE
17 C PRECISION ABOVE THE UNDERFLOW LIMIT.
18 C
19 C***SEE ALSO CAIRY, CBESK
20 C***ROUTINES CALLED (NONE)
21 C***REVISION HISTORY (YYMMDD)
22 C 830501 DATE WRITTEN
23 C 910415 Prologue converted to Version 4.0 format. (BAB)
24 C***END PROLOGUE CS1S2
25 COMPLEX CZERO, C1, S1, S1D, S2, ZR
26 REAL AA, ALIM, ALN, ASCLE, AS1, AS2, XX
27 INTEGER IUF, NZ
28 DATA CZERO / (0.0E0,0.0E0) /
29 C***FIRST EXECUTABLE STATEMENT CS1S2
30 NZ = 0
31 AS1 = ABS(S1)
32 AS2 = ABS(S2)
33 AA = REAL(S1)
34 ALN = AIMAG(S1)
35 IF (AA.EQ.0.0E0 .AND. ALN.EQ.0.0E0) GO TO 10
36 IF (AS1.EQ.0.0E0) GO TO 10
37 XX = REAL(ZR)
38 ALN = -XX - XX + ALOG(AS1)
39 S1D = S1
40 S1 = CZERO
41 AS1 = 0.0E0
42 IF (ALN.LT.(-ALIM)) GO TO 10
43 C1 = CLOG(S1D) - ZR - ZR
44 S1 = CEXP(C1)
45 AS1 = ABS(S1)
46 IUF = IUF + 1
47 10 CONTINUE
48 AA = MAX(AS1,AS2)
49 IF (AA.GT.ASCLE) RETURN
50 S1 = CZERO
51 S2 = CZERO
52 NZ = 1
53 IUF = 0
54 RETURN
55 END
@@ -0,0 +1,164
1 *DECK CSERI
2 SUBROUTINE CSERI (Z, FNU, KODE, N, Y, NZ, TOL, ELIM, ALIM)
3 C***BEGIN PROLOGUE CSERI
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBESI and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CSERI-A, ZSERI-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CSERI COMPUTES THE I BESSEL FUNCTION FOR REAL(Z).GE.0.0 BY
12 C MEANS OF THE POWER SERIES FOR LARGE ABS(Z) IN THE
13 C REGION ABS(Z).LE.2*SQRT(FNU+1). NZ=0 IS A NORMAL RETURN.
14 C NZ.GT.0 MEANS THAT THE LAST NZ COMPONENTS WERE SET TO ZERO
15 C DUE TO UNDERFLOW. NZ.LT.0 MEANS UNDERFLOW OCCURRED, BUT THE
16 C CONDITION ABS(Z).LE.2*SQRT(FNU+1) WAS VIOLATED AND THE
17 C COMPUTATION MUST BE COMPLETED IN ANOTHER ROUTINE WITH N=N-ABS(NZ).
18 C
19 C***SEE ALSO CBESI, CBESK
20 C***ROUTINES CALLED CUCHK, GAMLN, R1MACH
21 C***REVISION HISTORY (YYMMDD)
22 C 830501 DATE WRITTEN
23 C 910415 Prologue converted to Version 4.0 format. (BAB)
24 C***END PROLOGUE CSERI
25 COMPLEX AK1, CK, COEF, CONE, CRSC, CZ, CZERO, HZ, RZ, S1, S2, W,
26 * Y, Z
27 REAL AA, ACZ, AK, ALIM, ARM, ASCLE, ATOL, AZ, DFNU, ELIM, FNU,
28 * FNUP, RAK1, RS, RTR1, S, SS, TOL, X, GAMLN, R1MACH
29 INTEGER I, IB, IDUM, IFLAG, IL, K, KODE, L, M, N, NN, NW, NZ
30 DIMENSION Y(N), W(2)
31 DATA CZERO, CONE / (0.0E0,0.0E0), (1.0E0,0.0E0) /
32 C***FIRST EXECUTABLE STATEMENT CSERI
33 NZ = 0
34 AZ = ABS(Z)
35 IF (AZ.EQ.0.0E0) GO TO 150
36 X = REAL(Z)
37 ARM = 1.0E+3*R1MACH(1)
38 RTR1 = SQRT(ARM)
39 CRSC = CMPLX(1.0E0,0.0E0)
40 IFLAG = 0
41 IF (AZ.LT.ARM) GO TO 140
42 HZ = Z*CMPLX(0.5E0,0.0E0)
43 CZ = CZERO
44 IF (AZ.GT.RTR1) CZ = HZ*HZ
45 ACZ = ABS(CZ)
46 NN = N
47 CK = CLOG(HZ)
48 10 CONTINUE
49 DFNU = FNU + (NN-1)
50 FNUP = DFNU + 1.0E0
51 C-----------------------------------------------------------------------
52 C UNDERFLOW TEST
53 C-----------------------------------------------------------------------
54 AK1 = CK*CMPLX(DFNU,0.0E0)
55 AK = GAMLN(FNUP,IDUM)
56 AK1 = AK1 - CMPLX(AK,0.0E0)
57 IF (KODE.EQ.2) AK1 = AK1 - CMPLX(X,0.0E0)
58 RAK1 = REAL(AK1)
59 IF (RAK1.GT.(-ELIM)) GO TO 30
60 20 CONTINUE
61 NZ = NZ + 1
62 Y(NN) = CZERO
63 IF (ACZ.GT.DFNU) GO TO 170
64 NN = NN - 1
65 IF (NN.EQ.0) RETURN
66 GO TO 10
67 30 CONTINUE
68 IF (RAK1.GT.(-ALIM)) GO TO 40
69 IFLAG = 1
70 SS = 1.0E0/TOL
71 CRSC = CMPLX(TOL,0.0E0)
72 ASCLE = ARM*SS
73 40 CONTINUE
74 AK = AIMAG(AK1)
75 AA = EXP(RAK1)
76 IF (IFLAG.EQ.1) AA = AA*SS
77 COEF = CMPLX(AA,0.0E0)*CMPLX(COS(AK),SIN(AK))
78 ATOL = TOL*ACZ/FNUP
79 IL = MIN(2,NN)
80 DO 80 I=1,IL
81 DFNU = FNU + (NN-I)
82 FNUP = DFNU + 1.0E0
83 S1 = CONE
84 IF (ACZ.LT.TOL*FNUP) GO TO 60
85 AK1 = CONE
86 AK = FNUP + 2.0E0
87 S = FNUP
88 AA = 2.0E0
89 50 CONTINUE
90 RS = 1.0E0/S
91 AK1 = AK1*CZ*CMPLX(RS,0.0E0)
92 S1 = S1 + AK1
93 S = S + AK
94 AK = AK + 2.0E0
95 AA = AA*ACZ*RS
96 IF (AA.GT.ATOL) GO TO 50
97 60 CONTINUE
98 M = NN - I + 1
99 S2 = S1*COEF
100 W(I) = S2
101 IF (IFLAG.EQ.0) GO TO 70
102 CALL CUCHK(S2, NW, ASCLE, TOL)
103 IF (NW.NE.0) GO TO 20
104 70 CONTINUE
105 Y(M) = S2*CRSC
106 IF (I.NE.IL) COEF = COEF*CMPLX(DFNU,0.0E0)/HZ
107 80 CONTINUE
108 IF (NN.LE.2) RETURN
109 K = NN - 2
110 AK = K
111 RZ = (CONE+CONE)/Z
112 IF (IFLAG.EQ.1) GO TO 110
113 IB = 3
114 90 CONTINUE
115 DO 100 I=IB,NN
116 Y(K) = CMPLX(AK+FNU,0.0E0)*RZ*Y(K+1) + Y(K+2)
117 AK = AK - 1.0E0
118 K = K - 1
119 100 CONTINUE
120 RETURN
121 C-----------------------------------------------------------------------
122 C RECUR BACKWARD WITH SCALED VALUES
123 C-----------------------------------------------------------------------
124 110 CONTINUE
125 C-----------------------------------------------------------------------
126 C EXP(-ALIM)=EXP(-ELIM)/TOL=APPROX. ONE PRECISION ABOVE THE
127 C UNDERFLOW LIMIT = ASCLE = R1MACH(1)*CSCL*1.0E+3
128 C-----------------------------------------------------------------------
129 S1 = W(1)
130 S2 = W(2)
131 DO 120 L=3,NN
132 CK = S2
133 S2 = S1 + CMPLX(AK+FNU,0.0E0)*RZ*S2
134 S1 = CK
135 CK = S2*CRSC
136 Y(K) = CK
137 AK = AK - 1.0E0
138 K = K - 1
139 IF (ABS(CK).GT.ASCLE) GO TO 130
140 120 CONTINUE
141 RETURN
142 130 CONTINUE
143 IB = L + 1
144 IF (IB.GT.NN) RETURN
145 GO TO 90
146 140 CONTINUE
147 NZ = N
148 IF (FNU.EQ.0.0E0) NZ = NZ - 1
149 150 CONTINUE
150 Y(1) = CZERO
151 IF (FNU.EQ.0.0E0) Y(1) = CONE
152 IF (N.EQ.1) RETURN
153 DO 160 I=2,N
154 Y(I) = CZERO
155 160 CONTINUE
156 RETURN
157 C-----------------------------------------------------------------------
158 C RETURN WITH NZ.LT.0 IF ABS(Z*Z/4).GT.FNU+N-NZ-1 COMPLETE
159 C THE CALCULATION IN CBINU WITH N=N-ABS(NZ)
160 C-----------------------------------------------------------------------
161 170 CONTINUE
162 NZ = -NZ
163 RETURN
164 END
@@ -0,0 +1,36
1 *DECK CSHCH
2 SUBROUTINE CSHCH (Z, CSH, CCH)
3 C***BEGIN PROLOGUE CSHCH
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBESH and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CSHCH-A, ZSHCH-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CSHCH COMPUTES THE COMPLEX HYPERBOLIC FUNCTIONS CSH=SINH(X+I*Y)
12 C AND CCH=COSH(X+I*Y), WHERE I**2=-1.
13 C
14 C***SEE ALSO CBESH, CBESK
15 C***ROUTINES CALLED (NONE)
16 C***REVISION HISTORY (YYMMDD)
17 C 830501 DATE WRITTEN
18 C 910415 Prologue converted to Version 4.0 format. (BAB)
19 C***END PROLOGUE CSHCH
20 COMPLEX CCH, CSH, Z
21 REAL CCHI, CCHR, CH, CN, CSHI, CSHR, SH, SN, X, Y
22 C***FIRST EXECUTABLE STATEMENT CSHCH
23 X = REAL(Z)
24 Y = AIMAG(Z)
25 SH = SINH(X)
26 CH = COSH(X)
27 SN = SIN(Y)
28 CN = COS(Y)
29 CSHR = SH*CN
30 CSHI = CH*SN
31 CSH = CMPLX(CSHR,CSHI)
32 CCHR = CH*CN
33 CCHI = SH*SN
34 CCH = CMPLX(CCHR,CCHI)
35 RETURN
36 END
@@ -0,0 +1,171
1 subroutine csisl(a,lda,n,kpvt,b)
2 integer lda,n,kpvt(1)
3 complex a(lda,1),b(1)
4 c
5 c csisl solves the complex symmetric system
6 c a * x = b
7 c using the factors computed by csifa.
8 c
9 c on entry
10 c
11 c a complex(lda,n)
12 c the output from csifa.
13 c
14 c lda integer
15 c the leading dimension of the array a .
16 c
17 c n integer
18 c the order of the matrix a .
19 c
20 c kpvt integer(n)
21 c the pivot vector from csifa.
22 c
23 c b complex(n)
24 c the right hand side vector.
25 c
26 c on return
27 c
28 c b the solution vector x .
29 c
30 c error condition
31 c
32 c a division by zero may occur if csico has set rcond .eq. 0.0
33 c or csifa has set info .ne. 0 .
34 c
35 c to compute inverse(a) * c where c is a matrix
36 c with p columns
37 c call csifa(a,lda,n,kpvt,info)
38 c if (info .ne. 0) go to ...
39 c do 10 j = 1, p
40 c call csisl(a,lda,n,kpvt,c(1,j))
41 c 10 continue
42 c
43 c linpack. this version dated 08/14/78 .
44 c james bunch, univ. calif. san diego, argonne nat. lab.
45 c
46 c subroutines and functions
47 c
48 c blas caxpy,cdotu
49 c fortran iabs
50 c
51 c internal variables.
52 c
53 complex ak,akm1,bk,bkm1,cdotu,denom,temp
54 integer k,kp
55 c
56 c loop backward applying the transformations and
57 c d inverse to b.
58 c
59 k = n
60 10 if (k .eq. 0) go to 80
61 if (kpvt(k) .lt. 0) go to 40
62 c
63 c 1 x 1 pivot block.
64 c
65 if (k .eq. 1) go to 30
66 kp = kpvt(k)
67 if (kp .eq. k) go to 20
68 c
69 c interchange.
70 c
71 temp = b(k)
72 b(k) = b(kp)
73 b(kp) = temp
74 20 continue
75 c
76 c apply the transformation.
77 c
78 call caxpy(k-1,b(k),a(1,k),1,b(1),1)
79 30 continue
80 c
81 c apply d inverse.
82 c
83 b(k) = b(k)/a(k,k)
84 k = k - 1
85 go to 70
86 40 continue
87 c
88 c 2 x 2 pivot block.
89 c
90 if (k .eq. 2) go to 60
91 kp = iabs(kpvt(k))
92 if (kp .eq. k - 1) go to 50
93 c
94 c interchange.
95 c
96 temp = b(k-1)
97 b(k-1) = b(kp)
98 b(kp) = temp
99 50 continue
100 c
101 c apply the transformation.
102 c
103 call caxpy(k-2,b(k),a(1,k),1,b(1),1)
104 call caxpy(k-2,b(k-1),a(1,k-1),1,b(1),1)
105 60 continue
106 c
107 c apply d inverse.
108 c
109 ak = a(k,k)/a(k-1,k)
110 akm1 = a(k-1,k-1)/a(k-1,k)
111 bk = b(k)/a(k-1,k)
112 bkm1 = b(k-1)/a(k-1,k)
113 denom = ak*akm1 - 1.0e0
114 b(k) = (akm1*bk - bkm1)/denom
115 b(k-1) = (ak*bkm1 - bk)/denom
116 k = k - 2
117 70 continue
118 go to 10
119 80 continue
120 c
121 c loop forward applying the transformations.
122 c
123 k = 1
124 90 if (k .gt. n) go to 160
125 if (kpvt(k) .lt. 0) go to 120
126 c
127 c 1 x 1 pivot block.
128 c
129 if (k .eq. 1) go to 110
130 c
131 c apply the transformation.
132 c
133 b(k) = b(k) + cdotu(k-1,a(1,k),1,b(1),1)
134 kp = kpvt(k)
135 if (kp .eq. k) go to 100
136 c
137 c interchange.
138 c
139 temp = b(k)
140 b(k) = b(kp)
141 b(kp) = temp
142 100 continue
143 110 continue
144 k = k + 1
145 go to 150
146 120 continue
147 c
148 c 2 x 2 pivot block.
149 c
150 if (k .eq. 1) go to 140
151 c
152 c apply the transformation.
153 c
154 b(k) = b(k) + cdotu(k-1,a(1,k),1,b(1),1)
155 b(k+1) = b(k+1) + cdotu(k-1,a(1,k+1),1,b(1),1)
156 kp = iabs(kpvt(k))
157 if (kp .eq. k) go to 130
158 c
159 c interchange.
160 c
161 temp = b(k)
162 b(k) = b(kp)
163 b(kp) = temp
164 130 continue
165 140 continue
166 k = k + 2
167 150 continue
168 go to 90
169 160 continue
170 return
171 end
@@ -0,0 +1,42
1 *DECK CUCHK
2 SUBROUTINE CUCHK (Y, NZ, ASCLE, TOL)
3 C***BEGIN PROLOGUE CUCHK
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to SERI, CUOIK, CUNK1, CUNK2, CUNI1, CUNI2 and
6 C CKSCL
7 C***LIBRARY SLATEC
8 C***TYPE ALL (CUCHK-A, ZUCHK-A)
9 C***AUTHOR Amos, D. E., (SNL)
10 C***DESCRIPTION
11 C
12 C Y ENTERS AS A SCALED QUANTITY WHOSE MAGNITUDE IS GREATER THAN
13 C EXP(-ALIM)=ASCLE=1.0E+3*R1MACH(1)/TOL. THE TEST IS MADE TO SEE
14 C IF THE MAGNITUDE OF THE REAL OR IMAGINARY PART WOULD UNDER FLOW
15 C WHEN Y IS SCALED (BY TOL) TO ITS PROPER VALUE. Y IS ACCEPTED
16 C IF THE UNDERFLOW IS AT LEAST ONE PRECISION BELOW THE MAGNITUDE
17 C OF THE LARGEST COMPONENT; OTHERWISE THE PHASE ANGLE DOES NOT HAVE
18 C ABSOLUTE ACCURACY AND AN UNDERFLOW IS ASSUMED.
19 C
20 C***SEE ALSO CKSCL, CUNI1, CUNI2, CUNK1, CUNK2, CUOIK, SERI
21 C***ROUTINES CALLED (NONE)
22 C***REVISION HISTORY (YYMMDD)
23 C ?????? DATE WRITTEN
24 C 910415 Prologue converted to Version 4.0 format. (BAB)
25 C***END PROLOGUE CUCHK
26 C
27 COMPLEX Y
28 REAL ASCLE, SS, ST, TOL, YR, YI
29 INTEGER NZ
30 C***FIRST EXECUTABLE STATEMENT CUCHK
31 NZ = 0
32 YR = REAL(Y)
33 YI = AIMAG(Y)
34 YR = ABS(YR)
35 YI = ABS(YI)
36 ST = MIN(YR,YI)
37 IF (ST.GT.ASCLE) RETURN
38 SS = MAX(YR,YI)
39 ST=ST/TOL
40 IF (SS.LT.ST) NZ = 1
41 RETURN
42 END
This diff has been collapsed as it changes many lines, (658 lines changed) Show them Hide them
@@ -0,0 +1,658
1 *DECK CUNHJ
2 SUBROUTINE CUNHJ (Z, FNU, IPMTR, TOL, PHI, ARG, ZETA1, ZETA2,
3 + ASUM, BSUM)
4 C***BEGIN PROLOGUE CUNHJ
5 C***SUBSIDIARY
6 C***PURPOSE Subsidiary to CBESI and CBESK
7 C***LIBRARY SLATEC
8 C***TYPE ALL (CUNHJ-A, ZUNHJ-A)
9 C***AUTHOR Amos, D. E., (SNL)
10 C***DESCRIPTION
11 C
12 C REFERENCES
13 C HANDBOOK OF MATHEMATICAL FUNCTIONS BY M. ABRAMOWITZ AND I.A.
14 C STEGUN, AMS55, NATIONAL BUREAU OF STANDARDS, 1965, CHAPTER 9.
15 C
16 C ASYMPTOTICS AND SPECIAL FUNCTIONS BY F.W.J. OLVER, ACADEMIC
17 C PRESS, N.Y., 1974, PAGE 420
18 C
19 C ABSTRACT
20 C CUNHJ COMPUTES PARAMETERS FOR BESSEL FUNCTIONS C(FNU,Z) =
21 C J(FNU,Z), Y(FNU,Z) OR H(I,FNU,Z) I=1,2 FOR LARGE ORDERS FNU
22 C BY MEANS OF THE UNIFORM ASYMPTOTIC EXPANSION
23 C
24 C C(FNU,Z)=C1*PHI*( ASUM*AIRY(ARG) + C2*BSUM*DAIRY(ARG) )
25 C
26 C FOR PROPER CHOICES OF C1, C2, AIRY AND DAIRY WHERE AIRY IS
27 C AN AIRY FUNCTION AND DAIRY IS ITS DERIVATIVE.
28 C
29 C (2/3)*FNU*ZETA**1.5 = ZETA1-ZETA2,
30 C
31 C ZETA1=0.5*FNU*CLOG((1+W)/(1-W)), ZETA2=FNU*W FOR SCALING
32 C PURPOSES IN AIRY FUNCTIONS FROM CAIRY OR CBIRY.
33 C
34 C MCONJ=SIGN OF AIMAG(Z), BUT IS AMBIGUOUS WHEN Z IS REAL AND
35 C MUST BE SPECIFIED. IPMTR=0 RETURNS ALL PARAMETERS. IPMTR=
36 C 1 COMPUTES ALL EXCEPT ASUM AND BSUM.
37 C
38 C***SEE ALSO CBESI, CBESK
39 C***ROUTINES CALLED R1MACH
40 C***REVISION HISTORY (YYMMDD)
41 C 830501 DATE WRITTEN
42 C 910415 Prologue converted to Version 4.0 format. (BAB)
43 C***END PROLOGUE CUNHJ
44 COMPLEX ARG, ASUM, BSUM, CFNU, CONE, CR, CZERO, DR, P, PHI,
45 * PRZTH, PTFN, RFN13, RTZTA, RZTH, SUMA, SUMB, TFN, T2, UP, W, W2,
46 * Z, ZA, ZB, ZC, ZETA, ZETA1, ZETA2, ZTH
47 REAL ALFA, ANG, AP, AR, ATOL, AW2, AZTH, BETA, BR, BTOL, C, EX1,
48 * EX2, FNU, FN13, FN23, GAMA, HPI, PI, PP, RFNU, RFNU2, THPI, TOL,
49 * WI, WR, ZCI, ZCR, ZETAI, ZETAR, ZTHI, ZTHR, ASUMR, ASUMI, BSUMR,
50 * BSUMI, TEST, TSTR, TSTI, AC, R1MACH
51 INTEGER IAS, IBS, IPMTR, IS, J, JR, JU, K, KMAX, KP1, KS, L, LR,
52 * LRP1, L1, L2, M
53 DIMENSION AR(14), BR(14), C(105), ALFA(180), BETA(210), GAMA(30),
54 * AP(30), P(30), UP(14), CR(14), DR(14)
55 DATA AR(1), AR(2), AR(3), AR(4), AR(5), AR(6), AR(7), AR(8),
56 1 AR(9), AR(10), AR(11), AR(12), AR(13), AR(14)/
57 2 1.00000000000000000E+00, 1.04166666666666667E-01,
58 3 8.35503472222222222E-02, 1.28226574556327160E-01,
59 4 2.91849026464140464E-01, 8.81627267443757652E-01,
60 5 3.32140828186276754E+00, 1.49957629868625547E+01,
61 6 7.89230130115865181E+01, 4.74451538868264323E+02,
62 7 3.20749009089066193E+03, 2.40865496408740049E+04,
63 8 1.98923119169509794E+05, 1.79190200777534383E+06/
64 DATA BR(1), BR(2), BR(3), BR(4), BR(5), BR(6), BR(7), BR(8),
65 1 BR(9), BR(10), BR(11), BR(12), BR(13), BR(14)/
66 2 1.00000000000000000E+00, -1.45833333333333333E-01,
67 3 -9.87413194444444444E-02, -1.43312053915895062E-01,
68 4 -3.17227202678413548E-01, -9.42429147957120249E-01,
69 5 -3.51120304082635426E+00, -1.57272636203680451E+01,
70 6 -8.22814390971859444E+01, -4.92355370523670524E+02,
71 7 -3.31621856854797251E+03, -2.48276742452085896E+04,
72 8 -2.04526587315129788E+05, -1.83844491706820990E+06/
73 DATA C(1), C(2), C(3), C(4), C(5), C(6), C(7), C(8), C(9), C(10),
74 1 C(11), C(12), C(13), C(14), C(15), C(16), C(17), C(18),
75 2 C(19), C(20), C(21), C(22), C(23), C(24)/
76 3 1.00000000000000000E+00, -2.08333333333333333E-01,
77 4 1.25000000000000000E-01, 3.34201388888888889E-01,
78 5 -4.01041666666666667E-01, 7.03125000000000000E-02,
79 6 -1.02581259645061728E+00, 1.84646267361111111E+00,
80 7 -8.91210937500000000E-01, 7.32421875000000000E-02,
81 8 4.66958442342624743E+00, -1.12070026162229938E+01,
82 9 8.78912353515625000E+00, -2.36408691406250000E+00,
83 A 1.12152099609375000E-01, -2.82120725582002449E+01,
84 B 8.46362176746007346E+01, -9.18182415432400174E+01,
85 C 4.25349987453884549E+01, -7.36879435947963170E+00,
86 D 2.27108001708984375E-01, 2.12570130039217123E+02,
87 E -7.65252468141181642E+02, 1.05999045252799988E+03/
88 DATA C(25), C(26), C(27), C(28), C(29), C(30), C(31), C(32),
89 1 C(33), C(34), C(35), C(36), C(37), C(38), C(39), C(40),
90 2 C(41), C(42), C(43), C(44), C(45), C(46), C(47), C(48)/
91 3 -6.99579627376132541E+02, 2.18190511744211590E+02,
92 4 -2.64914304869515555E+01, 5.72501420974731445E-01,
93 5 -1.91945766231840700E+03, 8.06172218173730938E+03,
94 6 -1.35865500064341374E+04, 1.16553933368645332E+04,
95 7 -5.30564697861340311E+03, 1.20090291321635246E+03,
96 8 -1.08090919788394656E+02, 1.72772750258445740E+00,
97 9 2.02042913309661486E+04, -9.69805983886375135E+04,
98 A 1.92547001232531532E+05, -2.03400177280415534E+05,
99 B 1.22200464983017460E+05, -4.11926549688975513E+04,
100 C 7.10951430248936372E+03, -4.93915304773088012E+02,
101 D 6.07404200127348304E+00, -2.42919187900551333E+05,
102 E 1.31176361466297720E+06, -2.99801591853810675E+06/
103 DATA C(49), C(50), C(51), C(52), C(53), C(54), C(55), C(56),
104 1 C(57), C(58), C(59), C(60), C(61), C(62), C(63), C(64),
105 2 C(65), C(66), C(67), C(68), C(69), C(70), C(71), C(72)/
106 3 3.76327129765640400E+06, -2.81356322658653411E+06,
107 4 1.26836527332162478E+06, -3.31645172484563578E+05,
108 5 4.52187689813627263E+04, -2.49983048181120962E+03,
109 6 2.43805296995560639E+01, 3.28446985307203782E+06,
110 7 -1.97068191184322269E+07, 5.09526024926646422E+07,
111 8 -7.41051482115326577E+07, 6.63445122747290267E+07,
112 9 -3.75671766607633513E+07, 1.32887671664218183E+07,
113 A -2.78561812808645469E+06, 3.08186404612662398E+05,
114 B -1.38860897537170405E+04, 1.10017140269246738E+02,
115 C -4.93292536645099620E+07, 3.25573074185765749E+08,
116 D -9.39462359681578403E+08, 1.55359689957058006E+09,
117 E -1.62108055210833708E+09, 1.10684281682301447E+09/
118 DATA C(73), C(74), C(75), C(76), C(77), C(78), C(79), C(80),
119 1 C(81), C(82), C(83), C(84), C(85), C(86), C(87), C(88),
120 2 C(89), C(90), C(91), C(92), C(93), C(94), C(95), C(96)/
121 3 -4.95889784275030309E+08, 1.42062907797533095E+08,
122 4 -2.44740627257387285E+07, 2.24376817792244943E+06,
123 5 -8.40054336030240853E+04, 5.51335896122020586E+02,
124 6 8.14789096118312115E+08, -5.86648149205184723E+09,
125 7 1.86882075092958249E+10, -3.46320433881587779E+10,
126 8 4.12801855797539740E+10, -3.30265997498007231E+10,
127 9 1.79542137311556001E+10, -6.56329379261928433E+09,
128 A 1.55927986487925751E+09, -2.25105661889415278E+08,
129 B 1.73951075539781645E+07, -5.49842327572288687E+05,
130 C 3.03809051092238427E+03, -1.46792612476956167E+10,
131 D 1.14498237732025810E+11, -3.99096175224466498E+11,
132 E 8.19218669548577329E+11, -1.09837515608122331E+12/
133 DATA C(97), C(98), C(99), C(100), C(101), C(102), C(103), C(104),
134 1 C(105)/
135 2 1.00815810686538209E+12, -6.45364869245376503E+11,
136 3 2.87900649906150589E+11, -8.78670721780232657E+10,
137 4 1.76347306068349694E+10, -2.16716498322379509E+09,
138 5 1.43157876718888981E+08, -3.87183344257261262E+06,
139 6 1.82577554742931747E+04/
140 DATA ALFA(1), ALFA(2), ALFA(3), ALFA(4), ALFA(5), ALFA(6),
141 1 ALFA(7), ALFA(8), ALFA(9), ALFA(10), ALFA(11), ALFA(12),
142 2 ALFA(13), ALFA(14), ALFA(15), ALFA(16), ALFA(17), ALFA(18),
143 3 ALFA(19), ALFA(20), ALFA(21), ALFA(22)/
144 4 -4.44444444444444444E-03, -9.22077922077922078E-04,
145 5 -8.84892884892884893E-05, 1.65927687832449737E-04,
146 6 2.46691372741792910E-04, 2.65995589346254780E-04,
147 7 2.61824297061500945E-04, 2.48730437344655609E-04,
148 8 2.32721040083232098E-04, 2.16362485712365082E-04,
149 9 2.00738858762752355E-04, 1.86267636637545172E-04,
150 A 1.73060775917876493E-04, 1.61091705929015752E-04,
151 B 1.50274774160908134E-04, 1.40503497391269794E-04,
152 C 1.31668816545922806E-04, 1.23667445598253261E-04,
153 D 1.16405271474737902E-04, 1.09798298372713369E-04,
154 E 1.03772410422992823E-04, 9.82626078369363448E-05/
155 DATA ALFA(23), ALFA(24), ALFA(25), ALFA(26), ALFA(27), ALFA(28),
156 1 ALFA(29), ALFA(30), ALFA(31), ALFA(32), ALFA(33), ALFA(34),
157 2 ALFA(35), ALFA(36), ALFA(37), ALFA(38), ALFA(39), ALFA(40),
158 3 ALFA(41), ALFA(42), ALFA(43), ALFA(44)/
159 4 9.32120517249503256E-05, 8.85710852478711718E-05,
160 5 8.42963105715700223E-05, 8.03497548407791151E-05,
161 6 7.66981345359207388E-05, 7.33122157481777809E-05,
162 7 7.01662625163141333E-05, 6.72375633790160292E-05,
163 8 6.93735541354588974E-04, 2.32241745182921654E-04,
164 9 -1.41986273556691197E-05, -1.16444931672048640E-04,
165 A -1.50803558053048762E-04, -1.55121924918096223E-04,
166 B -1.46809756646465549E-04, -1.33815503867491367E-04,
167 C -1.19744975684254051E-04, -1.06184319207974020E-04,
168 D -9.37699549891194492E-05, -8.26923045588193274E-05,
169 E -7.29374348155221211E-05, -6.44042357721016283E-05/
170 DATA ALFA(45), ALFA(46), ALFA(47), ALFA(48), ALFA(49), ALFA(50),
171 1 ALFA(51), ALFA(52), ALFA(53), ALFA(54), ALFA(55), ALFA(56),
172 2 ALFA(57), ALFA(58), ALFA(59), ALFA(60), ALFA(61), ALFA(62),
173 3 ALFA(63), ALFA(64), ALFA(65), ALFA(66)/
174 4 -5.69611566009369048E-05, -5.04731044303561628E-05,
175 5 -4.48134868008882786E-05, -3.98688727717598864E-05,
176 6 -3.55400532972042498E-05, -3.17414256609022480E-05,
177 7 -2.83996793904174811E-05, -2.54522720634870566E-05,
178 8 -2.28459297164724555E-05, -2.05352753106480604E-05,
179 9 -1.84816217627666085E-05, -1.66519330021393806E-05,
180 A -1.50179412980119482E-05, -1.35554031379040526E-05,
181 B -1.22434746473858131E-05, -1.10641884811308169E-05,
182 C -3.54211971457743841E-04, -1.56161263945159416E-04,
183 D 3.04465503594936410E-05, 1.30198655773242693E-04,
184 E 1.67471106699712269E-04, 1.70222587683592569E-04/
185 DATA ALFA(67), ALFA(68), ALFA(69), ALFA(70), ALFA(71), ALFA(72),
186 1 ALFA(73), ALFA(74), ALFA(75), ALFA(76), ALFA(77), ALFA(78),
187 2 ALFA(79), ALFA(80), ALFA(81), ALFA(82), ALFA(83), ALFA(84),
188 3 ALFA(85), ALFA(86), ALFA(87), ALFA(88)/
189 4 1.56501427608594704E-04, 1.36339170977445120E-04,
190 5 1.14886692029825128E-04, 9.45869093034688111E-05,
191 6 7.64498419250898258E-05, 6.07570334965197354E-05,
192 7 4.74394299290508799E-05, 3.62757512005344297E-05,
193 8 2.69939714979224901E-05, 1.93210938247939253E-05,
194 9 1.30056674793963203E-05, 7.82620866744496661E-06,
195 A 3.59257485819351583E-06, 1.44040049814251817E-07,
196 B -2.65396769697939116E-06, -4.91346867098485910E-06,
197 C -6.72739296091248287E-06, -8.17269379678657923E-06,
198 D -9.31304715093561232E-06, -1.02011418798016441E-05,
199 E -1.08805962510592880E-05, -1.13875481509603555E-05/
200 DATA ALFA(89), ALFA(90), ALFA(91), ALFA(92), ALFA(93), ALFA(94),
201 1 ALFA(95), ALFA(96), ALFA(97), ALFA(98), ALFA(99), ALFA(100),
202 2 ALFA(101), ALFA(102), ALFA(103), ALFA(104), ALFA(105),
203 3 ALFA(106), ALFA(107), ALFA(108), ALFA(109), ALFA(110)/
204 4 -1.17519675674556414E-05, -1.19987364870944141E-05,
205 5 3.78194199201772914E-04, 2.02471952761816167E-04,
206 6 -6.37938506318862408E-05, -2.38598230603005903E-04,
207 7 -3.10916256027361568E-04, -3.13680115247576316E-04,
208 8 -2.78950273791323387E-04, -2.28564082619141374E-04,
209 9 -1.75245280340846749E-04, -1.25544063060690348E-04,
210 A -8.22982872820208365E-05, -4.62860730588116458E-05,
211 B -1.72334302366962267E-05, 5.60690482304602267E-06,
212 C 2.31395443148286800E-05, 3.62642745856793957E-05,
213 D 4.58006124490188752E-05, 5.24595294959114050E-05,
214 E 5.68396208545815266E-05, 5.94349820393104052E-05/
215 DATA ALFA(111), ALFA(112), ALFA(113), ALFA(114), ALFA(115),
216 1 ALFA(116), ALFA(117), ALFA(118), ALFA(119), ALFA(120),
217 2 ALFA(121), ALFA(122), ALFA(123), ALFA(124), ALFA(125),
218 3 ALFA(126), ALFA(127), ALFA(128), ALFA(129), ALFA(130)/
219 4 6.06478527578421742E-05, 6.08023907788436497E-05,
220 5 6.01577894539460388E-05, 5.89199657344698500E-05,
221 6 5.72515823777593053E-05, 5.52804375585852577E-05,
222 7 5.31063773802880170E-05, 5.08069302012325706E-05,
223 8 4.84418647620094842E-05, 4.60568581607475370E-05,
224 9 -6.91141397288294174E-04, -4.29976633058871912E-04,
225 A 1.83067735980039018E-04, 6.60088147542014144E-04,
226 B 8.75964969951185931E-04, 8.77335235958235514E-04,
227 C 7.49369585378990637E-04, 5.63832329756980918E-04,
228 D 3.68059319971443156E-04, 1.88464535514455599E-04/
229 DATA ALFA(131), ALFA(132), ALFA(133), ALFA(134), ALFA(135),
230 1 ALFA(136), ALFA(137), ALFA(138), ALFA(139), ALFA(140),
231 2 ALFA(141), ALFA(142), ALFA(143), ALFA(144), ALFA(145),
232 3 ALFA(146), ALFA(147), ALFA(148), ALFA(149), ALFA(150)/
233 4 3.70663057664904149E-05, -8.28520220232137023E-05,
234 5 -1.72751952869172998E-04, -2.36314873605872983E-04,
235 6 -2.77966150694906658E-04, -3.02079514155456919E-04,
236 7 -3.12594712643820127E-04, -3.12872558758067163E-04,
237 8 -3.05678038466324377E-04, -2.93226470614557331E-04,
238 9 -2.77255655582934777E-04, -2.59103928467031709E-04,
239 A -2.39784014396480342E-04, -2.20048260045422848E-04,
240 B -2.00443911094971498E-04, -1.81358692210970687E-04,
241 C -1.63057674478657464E-04, -1.45712672175205844E-04,
242 D -1.29425421983924587E-04, -1.14245691942445952E-04/
243 DATA ALFA(151), ALFA(152), ALFA(153), ALFA(154), ALFA(155),
244 1 ALFA(156), ALFA(157), ALFA(158), ALFA(159), ALFA(160),
245 2 ALFA(161), ALFA(162), ALFA(163), ALFA(164), ALFA(165),
246 3 ALFA(166), ALFA(167), ALFA(168), ALFA(169), ALFA(170)/
247 4 1.92821964248775885E-03, 1.35592576302022234E-03,
248 5 -7.17858090421302995E-04, -2.58084802575270346E-03,
249 6 -3.49271130826168475E-03, -3.46986299340960628E-03,
250 7 -2.82285233351310182E-03, -1.88103076404891354E-03,
251 8 -8.89531718383947600E-04, 3.87912102631035228E-06,
252 9 7.28688540119691412E-04, 1.26566373053457758E-03,
253 A 1.62518158372674427E-03, 1.83203153216373172E-03,
254 B 1.91588388990527909E-03, 1.90588846755546138E-03,
255 C 1.82798982421825727E-03, 1.70389506421121530E-03,
256 D 1.55097127171097686E-03, 1.38261421852276159E-03/
257 DATA ALFA(171), ALFA(172), ALFA(173), ALFA(174), ALFA(175),
258 1 ALFA(176), ALFA(177), ALFA(178), ALFA(179), ALFA(180)/
259 2 1.20881424230064774E-03, 1.03676532638344962E-03,
260 3 8.71437918068619115E-04, 7.16080155297701002E-04,
261 4 5.72637002558129372E-04, 4.42089819465802277E-04,
262 5 3.24724948503090564E-04, 2.20342042730246599E-04,
263 6 1.28412898401353882E-04, 4.82005924552095464E-05/
264 DATA BETA(1), BETA(2), BETA(3), BETA(4), BETA(5), BETA(6),
265 1 BETA(7), BETA(8), BETA(9), BETA(10), BETA(11), BETA(12),
266 2 BETA(13), BETA(14), BETA(15), BETA(16), BETA(17), BETA(18),
267 3 BETA(19), BETA(20), BETA(21), BETA(22)/
268 4 1.79988721413553309E-02, 5.59964911064388073E-03,
269 5 2.88501402231132779E-03, 1.80096606761053941E-03,
270 6 1.24753110589199202E-03, 9.22878876572938311E-04,
271 7 7.14430421727287357E-04, 5.71787281789704872E-04,
272 8 4.69431007606481533E-04, 3.93232835462916638E-04,
273 9 3.34818889318297664E-04, 2.88952148495751517E-04,
274 A 2.52211615549573284E-04, 2.22280580798883327E-04,
275 B 1.97541838033062524E-04, 1.76836855019718004E-04,
276 C 1.59316899661821081E-04, 1.44347930197333986E-04,
277 D 1.31448068119965379E-04, 1.20245444949302884E-04,
278 E 1.10449144504599392E-04, 1.01828770740567258E-04/
279 DATA BETA(23), BETA(24), BETA(25), BETA(26), BETA(27), BETA(28),
280 1 BETA(29), BETA(30), BETA(31), BETA(32), BETA(33), BETA(34),
281 2 BETA(35), BETA(36), BETA(37), BETA(38), BETA(39), BETA(40),
282 3 BETA(41), BETA(42), BETA(43), BETA(44)/
283 4 9.41998224204237509E-05, 8.74130545753834437E-05,
284 5 8.13466262162801467E-05, 7.59002269646219339E-05,
285 6 7.09906300634153481E-05, 6.65482874842468183E-05,
286 7 6.25146958969275078E-05, 5.88403394426251749E-05,
287 8 -1.49282953213429172E-03, -8.78204709546389328E-04,
288 9 -5.02916549572034614E-04, -2.94822138512746025E-04,
289 A -1.75463996970782828E-04, -1.04008550460816434E-04,
290 B -5.96141953046457895E-05, -3.12038929076098340E-05,
291 C -1.26089735980230047E-05, -2.42892608575730389E-07,
292 D 8.05996165414273571E-06, 1.36507009262147391E-05,
293 E 1.73964125472926261E-05, 1.98672978842133780E-05/
294 DATA BETA(45), BETA(46), BETA(47), BETA(48), BETA(49), BETA(50),
295 1 BETA(51), BETA(52), BETA(53), BETA(54), BETA(55), BETA(56),
296 2 BETA(57), BETA(58), BETA(59), BETA(60), BETA(61), BETA(62),
297 3 BETA(63), BETA(64), BETA(65), BETA(66)/
298 4 2.14463263790822639E-05, 2.23954659232456514E-05,
299 5 2.28967783814712629E-05, 2.30785389811177817E-05,
300 6 2.30321976080909144E-05, 2.28236073720348722E-05,
301 7 2.25005881105292418E-05, 2.20981015361991429E-05,
302 8 2.16418427448103905E-05, 2.11507649256220843E-05,
303 9 2.06388749782170737E-05, 2.01165241997081666E-05,
304 A 1.95913450141179244E-05, 1.90689367910436740E-05,
305 B 1.85533719641636667E-05, 1.80475722259674218E-05,
306 C 5.52213076721292790E-04, 4.47932581552384646E-04,
307 D 2.79520653992020589E-04, 1.52468156198446602E-04,
308 E 6.93271105657043598E-05, 1.76258683069991397E-05/
309 DATA BETA(67), BETA(68), BETA(69), BETA(70), BETA(71), BETA(72),
310 1 BETA(73), BETA(74), BETA(75), BETA(76), BETA(77), BETA(78),
311 2 BETA(79), BETA(80), BETA(81), BETA(82), BETA(83), BETA(84),
312 3 BETA(85), BETA(86), BETA(87), BETA(88)/
313 4 -1.35744996343269136E-05, -3.17972413350427135E-05,
314 5 -4.18861861696693365E-05, -4.69004889379141029E-05,
315 6 -4.87665447413787352E-05, -4.87010031186735069E-05,
316 7 -4.74755620890086638E-05, -4.55813058138628452E-05,
317 8 -4.33309644511266036E-05, -4.09230193157750364E-05,
318 9 -3.84822638603221274E-05, -3.60857167535410501E-05,
319 A -3.37793306123367417E-05, -3.15888560772109621E-05,
320 B -2.95269561750807315E-05, -2.75978914828335759E-05,
321 C -2.58006174666883713E-05, -2.41308356761280200E-05,
322 D -2.25823509518346033E-05, -2.11479656768912971E-05,
323 E -1.98200638885294927E-05, -1.85909870801065077E-05/
324 DATA BETA(89), BETA(90), BETA(91), BETA(92), BETA(93), BETA(94),
325 1 BETA(95), BETA(96), BETA(97), BETA(98), BETA(99), BETA(100),
326 2 BETA(101), BETA(102), BETA(103), BETA(104), BETA(105),
327 3 BETA(106), BETA(107), BETA(108), BETA(109), BETA(110)/
328 4 -1.74532699844210224E-05, -1.63997823854497997E-05,
329 5 -4.74617796559959808E-04, -4.77864567147321487E-04,
330 6 -3.20390228067037603E-04, -1.61105016119962282E-04,
331 7 -4.25778101285435204E-05, 3.44571294294967503E-05,
332 8 7.97092684075674924E-05, 1.03138236708272200E-04,
333 9 1.12466775262204158E-04, 1.13103642108481389E-04,
334 A 1.08651634848774268E-04, 1.01437951597661973E-04,
335 B 9.29298396593363896E-05, 8.40293133016089978E-05,
336 C 7.52727991349134062E-05, 6.69632521975730872E-05,
337 D 5.92564547323194704E-05, 5.22169308826975567E-05,
338 E 4.58539485165360646E-05, 4.01445513891486808E-05/
339 DATA BETA(111), BETA(112), BETA(113), BETA(114), BETA(115),
340 1 BETA(116), BETA(117), BETA(118), BETA(119), BETA(120),
341 2 BETA(121), BETA(122), BETA(123), BETA(124), BETA(125),
342 3 BETA(126), BETA(127), BETA(128), BETA(129), BETA(130)/
343 4 3.50481730031328081E-05, 3.05157995034346659E-05,
344 5 2.64956119950516039E-05, 2.29363633690998152E-05,
345 6 1.97893056664021636E-05, 1.70091984636412623E-05,
346 7 1.45547428261524004E-05, 1.23886640995878413E-05,
347 8 1.04775876076583236E-05, 8.79179954978479373E-06,
348 9 7.36465810572578444E-04, 8.72790805146193976E-04,
349 A 6.22614862573135066E-04, 2.85998154194304147E-04,
350 B 3.84737672879366102E-06, -1.87906003636971558E-04,
351 C -2.97603646594554535E-04, -3.45998126832656348E-04,
352 D -3.53382470916037712E-04, -3.35715635775048757E-04/
353 DATA BETA(131), BETA(132), BETA(133), BETA(134), BETA(135),
354 1 BETA(136), BETA(137), BETA(138), BETA(139), BETA(140),
355 2 BETA(141), BETA(142), BETA(143), BETA(144), BETA(145),
356 3 BETA(146), BETA(147), BETA(148), BETA(149), BETA(150)/
357 4 -3.04321124789039809E-04, -2.66722723047612821E-04,
358 5 -2.27654214122819527E-04, -1.89922611854562356E-04,
359 6 -1.55058918599093870E-04, -1.23778240761873630E-04,
360 7 -9.62926147717644187E-05, -7.25178327714425337E-05,
361 8 -5.22070028895633801E-05, -3.50347750511900522E-05,
362 9 -2.06489761035551757E-05, -8.70106096849767054E-06,
363 A 1.13698686675100290E-06, 9.16426474122778849E-06,
364 B 1.56477785428872620E-05, 2.08223629482466847E-05,
365 C 2.48923381004595156E-05, 2.80340509574146325E-05,
366 D 3.03987774629861915E-05, 3.21156731406700616E-05/
367 DATA BETA(151), BETA(152), BETA(153), BETA(154), BETA(155),
368 1 BETA(156), BETA(157), BETA(158), BETA(159), BETA(160),
369 2 BETA(161), BETA(162), BETA(163), BETA(164), BETA(165),
370 3 BETA(166), BETA(167), BETA(168), BETA(169), BETA(170)/
371 4 -1.80182191963885708E-03, -2.43402962938042533E-03,
372 5 -1.83422663549856802E-03, -7.62204596354009765E-04,
373 6 2.39079475256927218E-04, 9.49266117176881141E-04,
374 7 1.34467449701540359E-03, 1.48457495259449178E-03,
375 8 1.44732339830617591E-03, 1.30268261285657186E-03,
376 9 1.10351597375642682E-03, 8.86047440419791759E-04,
377 A 6.73073208165665473E-04, 4.77603872856582378E-04,
378 B 3.05991926358789362E-04, 1.60315694594721630E-04,
379 C 4.00749555270613286E-05, -5.66607461635251611E-05,
380 D -1.32506186772982638E-04, -1.90296187989614057E-04/
381 DATA BETA(171), BETA(172), BETA(173), BETA(174), BETA(175),
382 1 BETA(176), BETA(177), BETA(178), BETA(179), BETA(180),
383 2 BETA(181), BETA(182), BETA(183), BETA(184), BETA(185),
384 3 BETA(186), BETA(187), BETA(188), BETA(189), BETA(190)/
385 4 -2.32811450376937408E-04, -2.62628811464668841E-04,
386 5 -2.82050469867598672E-04, -2.93081563192861167E-04,
387 6 -2.97435962176316616E-04, -2.96557334239348078E-04,
388 7 -2.91647363312090861E-04, -2.83696203837734166E-04,
389 8 -2.73512317095673346E-04, -2.61750155806768580E-04,
390 9 6.38585891212050914E-03, 9.62374215806377941E-03,
391 A 7.61878061207001043E-03, 2.83219055545628054E-03,
392 B -2.09841352012720090E-03, -5.73826764216626498E-03,
393 C -7.70804244495414620E-03, -8.21011692264844401E-03,
394 D -7.65824520346905413E-03, -6.47209729391045177E-03/
395 DATA BETA(191), BETA(192), BETA(193), BETA(194), BETA(195),
396 1 BETA(196), BETA(197), BETA(198), BETA(199), BETA(200),
397 2 BETA(201), BETA(202), BETA(203), BETA(204), BETA(205),
398 3 BETA(206), BETA(207), BETA(208), BETA(209), BETA(210)/
399 4 -4.99132412004966473E-03, -3.45612289713133280E-03,
400 5 -2.01785580014170775E-03, -7.59430686781961401E-04,
401 6 2.84173631523859138E-04, 1.10891667586337403E-03,
402 7 1.72901493872728771E-03, 2.16812590802684701E-03,
403 8 2.45357710494539735E-03, 2.61281821058334862E-03,
404 9 2.67141039656276912E-03, 2.65203073395980430E-03,
405 A 2.57411652877287315E-03, 2.45389126236094427E-03,
406 B 2.30460058071795494E-03, 2.13684837686712662E-03,
407 C 1.95896528478870911E-03, 1.77737008679454412E-03,
408 D 1.59690280765839059E-03, 1.42111975664438546E-03/
409 DATA GAMA(1), GAMA(2), GAMA(3), GAMA(4), GAMA(5), GAMA(6),
410 1 GAMA(7), GAMA(8), GAMA(9), GAMA(10), GAMA(11), GAMA(12),
411 2 GAMA(13), GAMA(14), GAMA(15), GAMA(16), GAMA(17), GAMA(18),
412 3 GAMA(19), GAMA(20), GAMA(21), GAMA(22)/
413 4 6.29960524947436582E-01, 2.51984209978974633E-01,
414 5 1.54790300415655846E-01, 1.10713062416159013E-01,
415 6 8.57309395527394825E-02, 6.97161316958684292E-02,
416 7 5.86085671893713576E-02, 5.04698873536310685E-02,
417 8 4.42600580689154809E-02, 3.93720661543509966E-02,
418 9 3.54283195924455368E-02, 3.21818857502098231E-02,
419 A 2.94646240791157679E-02, 2.71581677112934479E-02,
420 B 2.51768272973861779E-02, 2.34570755306078891E-02,
421 C 2.19508390134907203E-02, 2.06210828235646240E-02,
422 D 1.94388240897880846E-02, 1.83810633800683158E-02,
423 E 1.74293213231963172E-02, 1.65685837786612353E-02/
424 DATA GAMA(23), GAMA(24), GAMA(25), GAMA(26), GAMA(27), GAMA(28),
425 1 GAMA(29), GAMA(30)/
426 2 1.57865285987918445E-02, 1.50729501494095594E-02,
427 3 1.44193250839954639E-02, 1.38184805735341786E-02,
428 4 1.32643378994276568E-02, 1.27517121970498651E-02,
429 5 1.22761545318762767E-02, 1.18338262398482403E-02/
430 DATA EX1, EX2, HPI, PI, THPI /
431 1 3.33333333333333333E-01, 6.66666666666666667E-01,
432 2 1.57079632679489662E+00, 3.14159265358979324E+00,
433 3 4.71238898038468986E+00/
434 DATA CZERO, CONE / (0.0E0,0.0E0), (1.0E0,0.0E0) /
435 C***FIRST EXECUTABLE STATEMENT CUNHJ
436 RFNU = 1.0E0/FNU
437 C ZB = Z*CMPLX(RFNU,0.0E0)
438 C-----------------------------------------------------------------------
439 C OVERFLOW TEST (Z/FNU TOO SMALL)
440 C-----------------------------------------------------------------------
441 TSTR = REAL(Z)
442 TSTI = AIMAG(Z)
443 TEST = R1MACH(1)*1.0E+3
444 AC = FNU*TEST
445 IF (ABS(TSTR).GT.AC .OR. ABS(TSTI).GT.AC) GO TO 15
446 AC = 2.0E0*ABS(ALOG(TEST))+FNU
447 ZETA1 = CMPLX(AC,0.0E0)
448 ZETA2 = CMPLX(FNU,0.0E0)
449 PHI=CONE
450 ARG=CONE
451 RETURN
452 15 CONTINUE
453 ZB = Z*CMPLX(RFNU,0.0E0)
454 RFNU2 = RFNU*RFNU
455 C-----------------------------------------------------------------------
456 C COMPUTE IN THE FOURTH QUADRANT
457 C-----------------------------------------------------------------------
458 FN13 = FNU**EX1
459 FN23 = FN13*FN13
460 RFN13 = CMPLX(1.0E0/FN13,0.0E0)
461 W2 = CONE - ZB*ZB
462 AW2 = ABS(W2)
463 IF (AW2.GT.0.25E0) GO TO 130
464 C-----------------------------------------------------------------------
465 C POWER SERIES FOR ABS(W2).LE.0.25E0
466 C-----------------------------------------------------------------------
467 K = 1
468 P(1) = CONE
469 SUMA = CMPLX(GAMA(1),0.0E0)
470 AP(1) = 1.0E0
471 IF (AW2.LT.TOL) GO TO 20
472 DO 10 K=2,30
473 P(K) = P(K-1)*W2
474 SUMA = SUMA + P(K)*CMPLX(GAMA(K),0.0E0)
475 AP(K) = AP(K-1)*AW2
476 IF (AP(K).LT.TOL) GO TO 20
477 10 CONTINUE
478 K = 30
479 20 CONTINUE
480 KMAX = K
481 ZETA = W2*SUMA
482 ARG = ZETA*CMPLX(FN23,0.0E0)
483 ZA = CSQRT(SUMA)
484 ZETA2 = CSQRT(W2)*CMPLX(FNU,0.0E0)
485 ZETA1 = ZETA2*(CONE+ZETA*ZA*CMPLX(EX2,0.0E0))
486 ZA = ZA + ZA
487 PHI = CSQRT(ZA)*RFN13
488 IF (IPMTR.EQ.1) GO TO 120
489 C-----------------------------------------------------------------------
490 C SUM SERIES FOR ASUM AND BSUM
491 C-----------------------------------------------------------------------
492 SUMB = CZERO
493 DO 30 K=1,KMAX
494 SUMB = SUMB + P(K)*CMPLX(BETA(K),0.0E0)
495 30 CONTINUE
496 ASUM = CZERO
497 BSUM = SUMB
498 L1 = 0
499 L2 = 30
500 BTOL = TOL*ABS(BSUM)
501 ATOL = TOL
502 PP = 1.0E0
503 IAS = 0
504 IBS = 0
505 IF (RFNU2.LT.TOL) GO TO 110
506 DO 100 IS=2,7
507 ATOL = ATOL/RFNU2
508 PP = PP*RFNU2
509 IF (IAS.EQ.1) GO TO 60
510 SUMA = CZERO
511 DO 40 K=1,KMAX
512 M = L1 + K
513 SUMA = SUMA + P(K)*CMPLX(ALFA(M),0.0E0)
514 IF (AP(K).LT.ATOL) GO TO 50
515 40 CONTINUE
516 50 CONTINUE
517 ASUM = ASUM + SUMA*CMPLX(PP,0.0E0)
518 IF (PP.LT.TOL) IAS = 1
519 60 CONTINUE
520 IF (IBS.EQ.1) GO TO 90
521 SUMB = CZERO
522 DO 70 K=1,KMAX
523 M = L2 + K
524 SUMB = SUMB + P(K)*CMPLX(BETA(M),0.0E0)
525 IF (AP(K).LT.ATOL) GO TO 80
526 70 CONTINUE
527 80 CONTINUE
528 BSUM = BSUM + SUMB*CMPLX(PP,0.0E0)
529 IF (PP.LT.BTOL) IBS = 1
530 90 CONTINUE
531 IF (IAS.EQ.1 .AND. IBS.EQ.1) GO TO 110
532 L1 = L1 + 30
533 L2 = L2 + 30
534 100 CONTINUE
535 110 CONTINUE
536 ASUM = ASUM + CONE
537 PP = RFNU*REAL(RFN13)
538 BSUM = BSUM*CMPLX(PP,0.0E0)
539 120 CONTINUE
540 RETURN
541 C-----------------------------------------------------------------------
542 C ABS(W2).GT.0.25E0
543 C-----------------------------------------------------------------------
544 130 CONTINUE
545 W = CSQRT(W2)
546 WR = REAL(W)
547 WI = AIMAG(W)
548 IF (WR.LT.0.0E0) WR = 0.0E0
549 IF (WI.LT.0.0E0) WI = 0.0E0
550 W = CMPLX(WR,WI)
551 ZA = (CONE+W)/ZB
552 ZC = CLOG(ZA)
553 ZCR = REAL(ZC)
554 ZCI = AIMAG(ZC)
555 IF (ZCI.LT.0.0E0) ZCI = 0.0E0
556 IF (ZCI.GT.HPI) ZCI = HPI
557 IF (ZCR.LT.0.0E0) ZCR = 0.0E0
558 ZC = CMPLX(ZCR,ZCI)
559 ZTH = (ZC-W)*CMPLX(1.5E0,0.0E0)
560 CFNU = CMPLX(FNU,0.0E0)
561 ZETA1 = ZC*CFNU
562 ZETA2 = W*CFNU
563 AZTH = ABS(ZTH)
564 ZTHR = REAL(ZTH)
565 ZTHI = AIMAG(ZTH)
566 ANG = THPI
567 IF (ZTHR.GE.0.0E0 .AND. ZTHI.LT.0.0E0) GO TO 140
568 ANG = HPI
569 IF (ZTHR.EQ.0.0E0) GO TO 140
570 ANG = ATAN(ZTHI/ZTHR)
571 IF (ZTHR.LT.0.0E0) ANG = ANG + PI
572 140 CONTINUE
573 PP = AZTH**EX2
574 ANG = ANG*EX2
575 ZETAR = PP*COS(ANG)
576 ZETAI = PP*SIN(ANG)
577 IF (ZETAI.LT.0.0E0) ZETAI = 0.0E0
578 ZETA = CMPLX(ZETAR,ZETAI)
579 ARG = ZETA*CMPLX(FN23,0.0E0)
580 RTZTA = ZTH/ZETA
581 ZA = RTZTA/W
582 PHI = CSQRT(ZA+ZA)*RFN13
583 IF (IPMTR.EQ.1) GO TO 120
584 TFN = CMPLX(RFNU,0.0E0)/W
585 RZTH = CMPLX(RFNU,0.0E0)/ZTH
586 ZC = RZTH*CMPLX(AR(2),0.0E0)
587 T2 = CONE/W2
588 UP(2) = (T2*CMPLX(C(2),0.0E0)+CMPLX(C(3),0.0E0))*TFN
589 BSUM = UP(2) + ZC
590 ASUM = CZERO
591 IF (RFNU.LT.TOL) GO TO 220
592 PRZTH = RZTH
593 PTFN = TFN
594 UP(1) = CONE
595 PP = 1.0E0
596 BSUMR = REAL(BSUM)
597 BSUMI = AIMAG(BSUM)
598 BTOL = TOL*(ABS(BSUMR)+ABS(BSUMI))
599 KS = 0
600 KP1 = 2
601 L = 3
602 IAS = 0
603 IBS = 0
604 DO 210 LR=2,12,2
605 LRP1 = LR + 1
606 C-----------------------------------------------------------------------
607 C COMPUTE TWO ADDITIONAL CR, DR, AND UP FOR TWO MORE TERMS IN
608 C NEXT SUMA AND SUMB
609 C-----------------------------------------------------------------------
610 DO 160 K=LR,LRP1
611 KS = KS + 1
612 KP1 = KP1 + 1
613 L = L + 1
614 ZA = CMPLX(C(L),0.0E0)
615 DO 150 J=2,KP1
616 L = L + 1
617 ZA = ZA*T2 + CMPLX(C(L),0.0E0)
618 150 CONTINUE
619 PTFN = PTFN*TFN
620 UP(KP1) = PTFN*ZA
621 CR(KS) = PRZTH*CMPLX(BR(KS+1),0.0E0)
622 PRZTH = PRZTH*RZTH
623 DR(KS) = PRZTH*CMPLX(AR(KS+2),0.0E0)
624 160 CONTINUE
625 PP = PP*RFNU2
626 IF (IAS.EQ.1) GO TO 180
627 SUMA = UP(LRP1)
628 JU = LRP1
629 DO 170 JR=1,LR
630 JU = JU - 1
631 SUMA = SUMA + CR(JR)*UP(JU)
632 170 CONTINUE
633 ASUM = ASUM + SUMA
634 ASUMR = REAL(ASUM)
635 ASUMI = AIMAG(ASUM)
636 TEST = ABS(ASUMR) + ABS(ASUMI)
637 IF (PP.LT.TOL .AND. TEST.LT.TOL) IAS = 1
638 180 CONTINUE
639 IF (IBS.EQ.1) GO TO 200
640 SUMB = UP(LR+2) + UP(LRP1)*ZC
641 JU = LRP1
642 DO 190 JR=1,LR
643 JU = JU - 1
644 SUMB = SUMB + DR(JR)*UP(JU)
645 190 CONTINUE
646 BSUM = BSUM + SUMB
647 BSUMR = REAL(BSUM)
648 BSUMI = AIMAG(BSUM)
649 TEST = ABS(BSUMR) + ABS(BSUMI)
650 IF (PP.LT.BTOL .AND. TEST.LT.TOL) IBS = 1
651 200 CONTINUE
652 IF (IAS.EQ.1 .AND. IBS.EQ.1) GO TO 220
653 210 CONTINUE
654 220 CONTINUE
655 ASUM = ASUM + CONE
656 BSUM = -BSUM*RFN13/RTZTA
657 GO TO 120
658 END
@@ -0,0 +1,178
1 *DECK CUNI1
2 SUBROUTINE CUNI1 (Z, FNU, KODE, N, Y, NZ, NLAST, FNUL, TOL, ELIM,
3 + ALIM)
4 C***BEGIN PROLOGUE CUNI1
5 C***SUBSIDIARY
6 C***PURPOSE Subsidiary to CBESI and CBESK
7 C***LIBRARY SLATEC
8 C***TYPE ALL (CUNI1-A, ZUNI1-A)
9 C***AUTHOR Amos, D. E., (SNL)
10 C***DESCRIPTION
11 C
12 C CUNI1 COMPUTES I(FNU,Z) BY MEANS OF THE UNIFORM ASYMPTOTIC
13 C EXPANSION FOR I(FNU,Z) IN -PI/3.LE.ARG Z.LE.PI/3.
14 C
15 C FNUL IS THE SMALLEST ORDER PERMITTED FOR THE ASYMPTOTIC
16 C EXPANSION. NLAST=0 MEANS ALL OF THE Y VALUES WERE SET.
17 C NLAST.NE.0 IS THE NUMBER LEFT TO BE COMPUTED BY ANOTHER
18 C FORMULA FOR ORDERS FNU TO FNU+NLAST-1 BECAUSE FNU+NLAST-1.LT.FNUL.
19 C Y(I)=CZERO FOR I=NLAST+1,N
20 C
21 C***SEE ALSO CBESI, CBESK
22 C***ROUTINES CALLED CUCHK, CUNIK, CUOIK, R1MACH
23 C***REVISION HISTORY (YYMMDD)
24 C 830501 DATE WRITTEN
25 C 910415 Prologue converted to Version 4.0 format. (BAB)
26 C***END PROLOGUE CUNI1
27 COMPLEX CFN, CONE, CRSC, CSCL, CSR, CSS, CWRK, CZERO, C1, C2,
28 * PHI, RZ, SUM, S1, S2, Y, Z, ZETA1, ZETA2, CY
29 REAL ALIM, APHI, ASCLE, BRY, C2I, C2M, C2R, ELIM, FN, FNU, FNUL,
30 * RS1, TOL, YY, R1MACH
31 INTEGER I, IFLAG, INIT, K, KODE, M, N, ND, NLAST, NN, NUF, NW, NZ
32 DIMENSION BRY(3), Y(N), CWRK(16), CSS(3), CSR(3), CY(2)
33 DATA CZERO, CONE / (0.0E0,0.0E0), (1.0E0,0.0E0) /
34 C***FIRST EXECUTABLE STATEMENT CUNI1
35 NZ = 0
36 ND = N
37 NLAST = 0
38 C-----------------------------------------------------------------------
39 C COMPUTED VALUES WITH EXPONENTS BETWEEN ALIM AND ELIM IN MAG-
40 C NITUDE ARE SCALED TO KEEP INTERMEDIATE ARITHMETIC ON SCALE,
41 C EXP(ALIM)=EXP(ELIM)*TOL
42 C-----------------------------------------------------------------------
43 CSCL = CMPLX(1.0E0/TOL,0.0E0)
44 CRSC = CMPLX(TOL,0.0E0)
45 CSS(1) = CSCL
46 CSS(2) = CONE
47 CSS(3) = CRSC
48 CSR(1) = CRSC
49 CSR(2) = CONE
50 CSR(3) = CSCL
51 BRY(1) = 1.0E+3*R1MACH(1)/TOL
52 C-----------------------------------------------------------------------
53 C CHECK FOR UNDERFLOW AND OVERFLOW ON FIRST MEMBER
54 C-----------------------------------------------------------------------
55 FN = MAX(FNU,1.0E0)
56 INIT = 0
57 CALL CUNIK(Z, FN, 1, 1, TOL, INIT, PHI, ZETA1, ZETA2, SUM, CWRK)
58 IF (KODE.EQ.1) GO TO 10
59 CFN = CMPLX(FN,0.0E0)
60 S1 = -ZETA1 + CFN*(CFN/(Z+ZETA2))
61 GO TO 20
62 10 CONTINUE
63 S1 = -ZETA1 + ZETA2
64 20 CONTINUE
65 RS1 = REAL(S1)
66 IF (ABS(RS1).GT.ELIM) GO TO 130
67 30 CONTINUE
68 NN = MIN(2,ND)
69 DO 80 I=1,NN
70 FN = FNU + (ND-I)
71 INIT = 0
72 CALL CUNIK(Z, FN, 1, 0, TOL, INIT, PHI, ZETA1, ZETA2, SUM, CWRK)
73 IF (KODE.EQ.1) GO TO 40
74 CFN = CMPLX(FN,0.0E0)
75 YY = AIMAG(Z)
76 S1 = -ZETA1 + CFN*(CFN/(Z+ZETA2)) + CMPLX(0.0E0,YY)
77 GO TO 50
78 40 CONTINUE
79 S1 = -ZETA1 + ZETA2
80 50 CONTINUE
81 C-----------------------------------------------------------------------
82 C TEST FOR UNDERFLOW AND OVERFLOW
83 C-----------------------------------------------------------------------
84 RS1 = REAL(S1)
85 IF (ABS(RS1).GT.ELIM) GO TO 110
86 IF (I.EQ.1) IFLAG = 2
87 IF (ABS(RS1).LT.ALIM) GO TO 60
88 C-----------------------------------------------------------------------
89 C REFINE TEST AND SCALE
90 C-----------------------------------------------------------------------
91 APHI = ABS(PHI)
92 RS1 = RS1 + ALOG(APHI)
93 IF (ABS(RS1).GT.ELIM) GO TO 110
94 IF (I.EQ.1) IFLAG = 1
95 IF (RS1.LT.0.0E0) GO TO 60
96 IF (I.EQ.1) IFLAG = 3
97 60 CONTINUE
98 C-----------------------------------------------------------------------
99 C SCALE S1 IF ABS(S1).LT.ASCLE
100 C-----------------------------------------------------------------------
101 S2 = PHI*SUM
102 C2R = REAL(S1)
103 C2I = AIMAG(S1)
104 C2M = EXP(C2R)*REAL(CSS(IFLAG))
105 S1 = CMPLX(C2M,0.0E0)*CMPLX(COS(C2I),SIN(C2I))
106 S2 = S2*S1
107 IF (IFLAG.NE.1) GO TO 70
108 CALL CUCHK(S2, NW, BRY(1), TOL)
109 IF (NW.NE.0) GO TO 110
110 70 CONTINUE
111 M = ND - I + 1
112 CY(I) = S2
113 Y(M) = S2*CSR(IFLAG)
114 80 CONTINUE
115 IF (ND.LE.2) GO TO 100
116 RZ = CMPLX(2.0E0,0.0E0)/Z
117 BRY(2) = 1.0E0/BRY(1)
118 BRY(3) = R1MACH(2)
119 S1 = CY(1)
120 S2 = CY(2)
121 C1 = CSR(IFLAG)
122 ASCLE = BRY(IFLAG)
123 K = ND - 2
124 FN = K
125 DO 90 I=3,ND
126 C2 = S2
127 S2 = S1 + CMPLX(FNU+FN,0.0E0)*RZ*S2
128 S1 = C2
129 C2 = S2*C1
130 Y(K) = C2
131 K = K - 1
132 FN = FN - 1.0E0
133 IF (IFLAG.GE.3) GO TO 90
134 C2R = REAL(C2)
135 C2I = AIMAG(C2)
136 C2R = ABS(C2R)
137 C2I = ABS(C2I)
138 C2M = MAX(C2R,C2I)
139 IF (C2M.LE.ASCLE) GO TO 90
140 IFLAG = IFLAG + 1
141 ASCLE = BRY(IFLAG)
142 S1 = S1*C1
143 S2 = C2
144 S1 = S1*CSS(IFLAG)
145 S2 = S2*CSS(IFLAG)
146 C1 = CSR(IFLAG)
147 90 CONTINUE
148 100 CONTINUE
149 RETURN
150 C-----------------------------------------------------------------------
151 C SET UNDERFLOW AND UPDATE PARAMETERS
152 C-----------------------------------------------------------------------
153 110 CONTINUE
154 IF (RS1.GT.0.0E0) GO TO 120
155 Y(ND) = CZERO
156 NZ = NZ + 1
157 ND = ND - 1
158 IF (ND.EQ.0) GO TO 100
159 CALL CUOIK(Z, FNU, KODE, 1, ND, Y, NUF, TOL, ELIM, ALIM)
160 IF (NUF.LT.0) GO TO 120
161 ND = ND - NUF
162 NZ = NZ + NUF
163 IF (ND.EQ.0) GO TO 100
164 FN = FNU + (ND-1)
165 IF (FN.GE.FNUL) GO TO 30
166 NLAST = ND
167 RETURN
168 120 CONTINUE
169 NZ = -1
170 RETURN
171 130 CONTINUE
172 IF (RS1.GT.0.0E0) GO TO 120
173 NZ = N
174 DO 140 I=1,N
175 Y(I) = CZERO
176 140 CONTINUE
177 RETURN
178 END
@@ -0,0 +1,225
1 *DECK CUNI2
2 SUBROUTINE CUNI2 (Z, FNU, KODE, N, Y, NZ, NLAST, FNUL, TOL, ELIM,
3 + ALIM)
4 C***BEGIN PROLOGUE CUNI2
5 C***SUBSIDIARY
6 C***PURPOSE Subsidiary to CBESI and CBESK
7 C***LIBRARY SLATEC
8 C***TYPE ALL (CUNI2-A, ZUNI2-A)
9 C***AUTHOR Amos, D. E., (SNL)
10 C***DESCRIPTION
11 C
12 C CUNI2 COMPUTES I(FNU,Z) IN THE RIGHT HALF PLANE BY MEANS OF
13 C UNIFORM ASYMPTOTIC EXPANSION FOR J(FNU,ZN) WHERE ZN IS Z*I
14 C OR -Z*I AND ZN IS IN THE RIGHT HALF PLANE ALSO.
15 C
16 C FNUL IS THE SMALLEST ORDER PERMITTED FOR THE ASYMPTOTIC
17 C EXPANSION. NLAST=0 MEANS ALL OF THE Y VALUES WERE SET.
18 C NLAST.NE.0 IS THE NUMBER LEFT TO BE COMPUTED BY ANOTHER
19 C FORMULA FOR ORDERS FNU TO FNU+NLAST-1 BECAUSE FNU+NLAST-1.LT.FNUL.
20 C Y(I)=CZERO FOR I=NLAST+1,N
21 C
22 C***SEE ALSO CBESI, CBESK
23 C***ROUTINES CALLED CAIRY, CUCHK, CUNHJ, CUOIK, R1MACH
24 C***REVISION HISTORY (YYMMDD)
25 C 830501 DATE WRITTEN
26 C 910415 Prologue converted to Version 4.0 format. (BAB)
27 C***END PROLOGUE CUNI2
28 COMPLEX AI, ARG, ASUM, BSUM, CFN, CI, CID, CIP, CONE, CRSC, CSCL,
29 * CSR, CSS, CY, CZERO, C1, C2, DAI, PHI, RZ, S1, S2, Y, Z, ZB,
30 * ZETA1, ZETA2, ZN, ZAR
31 REAL AARG, AIC, ALIM, ANG, APHI, ASCLE, AY, BRY, CAR, C2I, C2M,
32 * C2R, ELIM, FN, FNU, FNUL, HPI, RS1, SAR, TOL, YY, R1MACH
33 INTEGER I, IFLAG, IN, INU, J, K, KODE, N, NAI, ND, NDAI, NLAST,
34 * NN, NUF, NW, NZ, IDUM
35 DIMENSION BRY(3), Y(N), CIP(4), CSS(3), CSR(3), CY(2)
36 DATA CZERO,CONE,CI/(0.0E0,0.0E0),(1.0E0,0.0E0),(0.0E0,1.0E0)/
37 DATA CIP(1),CIP(2),CIP(3),CIP(4)/
38 1 (1.0E0,0.0E0), (0.0E0,1.0E0), (-1.0E0,0.0E0), (0.0E0,-1.0E0)/
39 DATA HPI, AIC /
40 1 1.57079632679489662E+00, 1.265512123484645396E+00/
41 C***FIRST EXECUTABLE STATEMENT CUNI2
42 NZ = 0
43 ND = N
44 NLAST = 0
45 C-----------------------------------------------------------------------
46 C COMPUTED VALUES WITH EXPONENTS BETWEEN ALIM AND ELIM IN MAG-
47 C NITUDE ARE SCALED TO KEEP INTERMEDIATE ARITHMETIC ON SCALE,
48 C EXP(ALIM)=EXP(ELIM)*TOL
49 C-----------------------------------------------------------------------
50 CSCL = CMPLX(1.0E0/TOL,0.0E0)
51 CRSC = CMPLX(TOL,0.0E0)
52 CSS(1) = CSCL
53 CSS(2) = CONE
54 CSS(3) = CRSC
55 CSR(1) = CRSC
56 CSR(2) = CONE
57 CSR(3) = CSCL
58 BRY(1) = 1.0E+3*R1MACH(1)/TOL
59 YY = AIMAG(Z)
60 C-----------------------------------------------------------------------
61 C ZN IS IN THE RIGHT HALF PLANE AFTER ROTATION BY CI OR -CI
62 C-----------------------------------------------------------------------
63 ZN = -Z*CI
64 ZB = Z
65 CID = -CI
66 INU = FNU
67 ANG = HPI*(FNU-INU)
68 CAR = COS(ANG)
69 SAR = SIN(ANG)
70 C2 = CMPLX(CAR,SAR)
71 ZAR = C2
72 IN = INU + N - 1
73 IN = MOD(IN,4)
74 C2 = C2*CIP(IN+1)
75 IF (YY.GT.0.0E0) GO TO 10
76 ZN = CONJG(-ZN)
77 ZB = CONJG(ZB)
78 CID = -CID
79 C2 = CONJG(C2)
80 10 CONTINUE
81 C-----------------------------------------------------------------------
82 C CHECK FOR UNDERFLOW AND OVERFLOW ON FIRST MEMBER
83 C-----------------------------------------------------------------------
84 FN = MAX(FNU,1.0E0)
85 CALL CUNHJ(ZN, FN, 1, TOL, PHI, ARG, ZETA1, ZETA2, ASUM, BSUM)
86 IF (KODE.EQ.1) GO TO 20
87 CFN = CMPLX(FNU,0.0E0)
88 S1 = -ZETA1 + CFN*(CFN/(ZB+ZETA2))
89 GO TO 30
90 20 CONTINUE
91 S1 = -ZETA1 + ZETA2
92 30 CONTINUE
93 RS1 = REAL(S1)
94 IF (ABS(RS1).GT.ELIM) GO TO 150
95 40 CONTINUE
96 NN = MIN(2,ND)
97 DO 90 I=1,NN
98 FN = FNU + (ND-I)
99 CALL CUNHJ(ZN, FN, 0, TOL, PHI, ARG, ZETA1, ZETA2, ASUM, BSUM)
100 IF (KODE.EQ.1) GO TO 50
101 CFN = CMPLX(FN,0.0E0)
102 AY = ABS(YY)
103 S1 = -ZETA1 + CFN*(CFN/(ZB+ZETA2)) + CMPLX(0.0E0,AY)
104 GO TO 60
105 50 CONTINUE
106 S1 = -ZETA1 + ZETA2
107 60 CONTINUE
108 C-----------------------------------------------------------------------
109 C TEST FOR UNDERFLOW AND OVERFLOW
110 C-----------------------------------------------------------------------
111 RS1 = REAL(S1)
112 IF (ABS(RS1).GT.ELIM) GO TO 120
113 IF (I.EQ.1) IFLAG = 2
114 IF (ABS(RS1).LT.ALIM) GO TO 70
115 C-----------------------------------------------------------------------
116 C REFINE TEST AND SCALE
117 C-----------------------------------------------------------------------
118 C-----------------------------------------------------------------------
119 APHI = ABS(PHI)
120 AARG = ABS(ARG)
121 RS1 = RS1 + ALOG(APHI) - 0.25E0*ALOG(AARG) - AIC
122 IF (ABS(RS1).GT.ELIM) GO TO 120
123 IF (I.EQ.1) IFLAG = 1
124 IF (RS1.LT.0.0E0) GO TO 70
125 IF (I.EQ.1) IFLAG = 3
126 70 CONTINUE
127 C-----------------------------------------------------------------------
128 C SCALE S1 TO KEEP INTERMEDIATE ARITHMETIC ON SCALE NEAR
129 C EXPONENT EXTREMES
130 C-----------------------------------------------------------------------
131 CALL CAIRY(ARG, 0, 2, AI, NAI, IDUM)
132 CALL CAIRY(ARG, 1, 2, DAI, NDAI, IDUM)
133 S2 = PHI*(AI*ASUM+DAI*BSUM)
134 C2R = REAL(S1)
135 C2I = AIMAG(S1)
136 C2M = EXP(C2R)*REAL(CSS(IFLAG))
137 S1 = CMPLX(C2M,0.0E0)*CMPLX(COS(C2I),SIN(C2I))
138 S2 = S2*S1
139 IF (IFLAG.NE.1) GO TO 80
140 CALL CUCHK(S2, NW, BRY(1), TOL)
141 IF (NW.NE.0) GO TO 120
142 80 CONTINUE
143 IF (YY.LE.0.0E0) S2 = CONJG(S2)
144 J = ND - I + 1
145 S2 = S2*C2
146 CY(I) = S2
147 Y(J) = S2*CSR(IFLAG)
148 C2 = C2*CID
149 90 CONTINUE
150 IF (ND.LE.2) GO TO 110
151 RZ = CMPLX(2.0E0,0.0E0)/Z
152 BRY(2) = 1.0E0/BRY(1)
153 BRY(3) = R1MACH(2)
154 S1 = CY(1)
155 S2 = CY(2)
156 C1 = CSR(IFLAG)
157 ASCLE = BRY(IFLAG)
158 K = ND - 2
159 FN = K
160 DO 100 I=3,ND
161 C2 = S2
162 S2 = S1 + CMPLX(FNU+FN,0.0E0)*RZ*S2
163 S1 = C2
164 C2 = S2*C1
165 Y(K) = C2
166 K = K - 1
167 FN = FN - 1.0E0
168 IF (IFLAG.GE.3) GO TO 100
169 C2R = REAL(C2)
170 C2I = AIMAG(C2)
171 C2R = ABS(C2R)
172 C2I = ABS(C2I)
173 C2M = MAX(C2R,C2I)
174 IF (C2M.LE.ASCLE) GO TO 100
175 IFLAG = IFLAG + 1
176 ASCLE = BRY(IFLAG)
177 S1 = S1*C1
178 S2 = C2
179 S1 = S1*CSS(IFLAG)
180 S2 = S2*CSS(IFLAG)
181 C1 = CSR(IFLAG)
182 100 CONTINUE
183 110 CONTINUE
184 RETURN
185 120 CONTINUE
186 IF (RS1.GT.0.0E0) GO TO 140
187 C-----------------------------------------------------------------------
188 C SET UNDERFLOW AND UPDATE PARAMETERS
189 C-----------------------------------------------------------------------
190 Y(ND) = CZERO
191 NZ = NZ + 1
192 ND = ND - 1
193 IF (ND.EQ.0) GO TO 110
194 CALL CUOIK(Z, FNU, KODE, 1, ND, Y, NUF, TOL, ELIM, ALIM)
195 IF (NUF.LT.0) GO TO 140
196 ND = ND - NUF
197 NZ = NZ + NUF
198 IF (ND.EQ.0) GO TO 110
199 FN = FNU + (ND-1)
200 IF (FN.LT.FNUL) GO TO 130
201 C FN = AIMAG(CID)
202 C J = NUF + 1
203 C K = MOD(J,4) + 1
204 C S1 = CIP(K)
205 C IF (FN.LT.0.0E0) S1 = CONJG(S1)
206 C C2 = C2*S1
207 IN = INU + ND - 1
208 IN = MOD(IN,4) + 1
209 C2 = ZAR*CIP(IN)
210 IF (YY.LE.0.0E0)C2=CONJG(C2)
211 GO TO 40
212 130 CONTINUE
213 NLAST = ND
214 RETURN
215 140 CONTINUE
216 NZ = -1
217 RETURN
218 150 CONTINUE
219 IF (RS1.GT.0.0E0) GO TO 140
220 NZ = N
221 DO 160 I=1,N
222 Y(I) = CZERO
223 160 CONTINUE
224 RETURN
225 END
@@ -0,0 +1,198
1 *DECK CUNIK
2 SUBROUTINE CUNIK (ZR, FNU, IKFLG, IPMTR, TOL, INIT, PHI, ZETA1,
3 + ZETA2, SUM, CWRK)
4 C***BEGIN PROLOGUE CUNIK
5 C***SUBSIDIARY
6 C***PURPOSE Subsidiary to CBESI and CBESK
7 C***LIBRARY SLATEC
8 C***TYPE ALL (CUNIK-A, ZUNIK-A)
9 C***AUTHOR Amos, D. E., (SNL)
10 C***DESCRIPTION
11 C
12 C CUNIK COMPUTES PARAMETERS FOR THE UNIFORM ASYMPTOTIC
13 C EXPANSIONS OF THE I AND K FUNCTIONS ON IKFLG= 1 OR 2
14 C RESPECTIVELY BY
15 C
16 C W(FNU,ZR) = PHI*EXP(ZETA)*SUM
17 C
18 C WHERE ZETA=-ZETA1 + ZETA2 OR
19 C ZETA1 - ZETA2
20 C
21 C THE FIRST CALL MUST HAVE INIT=0. SUBSEQUENT CALLS WITH THE
22 C SAME ZR AND FNU WILL RETURN THE I OR K FUNCTION ON IKFLG=
23 C 1 OR 2 WITH NO CHANGE IN INIT. CWRK IS A COMPLEX WORK
24 C ARRAY. IPMTR=0 COMPUTES ALL PARAMETERS. IPMTR=1 COMPUTES PHI,
25 C ZETA1,ZETA2.
26 C
27 C***SEE ALSO CBESI, CBESK
28 C***ROUTINES CALLED R1MACH
29 C***REVISION HISTORY (YYMMDD)
30 C 830501 DATE WRITTEN
31 C 910415 Prologue converted to Version 4.0 format. (BAB)
32 C***END PROLOGUE CUNIK
33 COMPLEX CFN, CON, CONE, CRFN, CWRK, CZERO, PHI, S, SR, SUM, T,
34 * T2, ZETA1, ZETA2, ZN, ZR
35 REAL AC, C, FNU, RFN, TEST, TOL, TSTR, TSTI, R1MACH
36 INTEGER I, IKFLG, INIT, IPMTR, J, K, L
37 DIMENSION C(120), CWRK(16), CON(2)
38 DATA CZERO, CONE / (0.0E0,0.0E0), (1.0E0,0.0E0) /
39 DATA CON(1), CON(2) /
40 1(3.98942280401432678E-01,0.0E0),(1.25331413731550025E+00,0.0E0)/
41 DATA C(1), C(2), C(3), C(4), C(5), C(6), C(7), C(8), C(9), C(10),
42 1 C(11), C(12), C(13), C(14), C(15), C(16), C(17), C(18),
43 2 C(19), C(20), C(21), C(22), C(23), C(24)/
44 3 1.00000000000000000E+00, -2.08333333333333333E-01,
45 4 1.25000000000000000E-01, 3.34201388888888889E-01,
46 5 -4.01041666666666667E-01, 7.03125000000000000E-02,
47 6 -1.02581259645061728E+00, 1.84646267361111111E+00,
48 7 -8.91210937500000000E-01, 7.32421875000000000E-02,
49 8 4.66958442342624743E+00, -1.12070026162229938E+01,
50 9 8.78912353515625000E+00, -2.36408691406250000E+00,
51 A 1.12152099609375000E-01, -2.82120725582002449E+01,
52 B 8.46362176746007346E+01, -9.18182415432400174E+01,
53 C 4.25349987453884549E+01, -7.36879435947963170E+00,
54 D 2.27108001708984375E-01, 2.12570130039217123E+02,
55 E -7.65252468141181642E+02, 1.05999045252799988E+03/
56 DATA C(25), C(26), C(27), C(28), C(29), C(30), C(31), C(32),
57 1 C(33), C(34), C(35), C(36), C(37), C(38), C(39), C(40),
58 2 C(41), C(42), C(43), C(44), C(45), C(46), C(47), C(48)/
59 3 -6.99579627376132541E+02, 2.18190511744211590E+02,
60 4 -2.64914304869515555E+01, 5.72501420974731445E-01,
61 5 -1.91945766231840700E+03, 8.06172218173730938E+03,
62 6 -1.35865500064341374E+04, 1.16553933368645332E+04,
63 7 -5.30564697861340311E+03, 1.20090291321635246E+03,
64 8 -1.08090919788394656E+02, 1.72772750258445740E+00,
65 9 2.02042913309661486E+04, -9.69805983886375135E+04,
66 A 1.92547001232531532E+05, -2.03400177280415534E+05,
67 B 1.22200464983017460E+05, -4.11926549688975513E+04,
68 C 7.10951430248936372E+03, -4.93915304773088012E+02,
69 D 6.07404200127348304E+00, -2.42919187900551333E+05,
70 E 1.31176361466297720E+06, -2.99801591853810675E+06/
71 DATA C(49), C(50), C(51), C(52), C(53), C(54), C(55), C(56),
72 1 C(57), C(58), C(59), C(60), C(61), C(62), C(63), C(64),
73 2 C(65), C(66), C(67), C(68), C(69), C(70), C(71), C(72)/
74 3 3.76327129765640400E+06, -2.81356322658653411E+06,
75 4 1.26836527332162478E+06, -3.31645172484563578E+05,
76 5 4.52187689813627263E+04, -2.49983048181120962E+03,
77 6 2.43805296995560639E+01, 3.28446985307203782E+06,
78 7 -1.97068191184322269E+07, 5.09526024926646422E+07,
79 8 -7.41051482115326577E+07, 6.63445122747290267E+07,
80 9 -3.75671766607633513E+07, 1.32887671664218183E+07,
81 A -2.78561812808645469E+06, 3.08186404612662398E+05,
82 B -1.38860897537170405E+04, 1.10017140269246738E+02,
83 C -4.93292536645099620E+07, 3.25573074185765749E+08,
84 D -9.39462359681578403E+08, 1.55359689957058006E+09,
85 E -1.62108055210833708E+09, 1.10684281682301447E+09/
86 DATA C(73), C(74), C(75), C(76), C(77), C(78), C(79), C(80),
87 1 C(81), C(82), C(83), C(84), C(85), C(86), C(87), C(88),
88 2 C(89), C(90), C(91), C(92), C(93), C(94), C(95), C(96)/
89 3 -4.95889784275030309E+08, 1.42062907797533095E+08,
90 4 -2.44740627257387285E+07, 2.24376817792244943E+06,
91 5 -8.40054336030240853E+04, 5.51335896122020586E+02,
92 6 8.14789096118312115E+08, -5.86648149205184723E+09,
93 7 1.86882075092958249E+10, -3.46320433881587779E+10,
94 8 4.12801855797539740E+10, -3.30265997498007231E+10,
95 9 1.79542137311556001E+10, -6.56329379261928433E+09,
96 A 1.55927986487925751E+09, -2.25105661889415278E+08,
97 B 1.73951075539781645E+07, -5.49842327572288687E+05,
98 C 3.03809051092238427E+03, -1.46792612476956167E+10,
99 D 1.14498237732025810E+11, -3.99096175224466498E+11,
100 E 8.19218669548577329E+11, -1.09837515608122331E+12/
101 DATA C(97), C(98), C(99), C(100), C(101), C(102), C(103), C(104),
102 1 C(105), C(106), C(107), C(108), C(109), C(110), C(111),
103 2 C(112), C(113), C(114), C(115), C(116), C(117), C(118)/
104 3 1.00815810686538209E+12, -6.45364869245376503E+11,
105 4 2.87900649906150589E+11, -8.78670721780232657E+10,
106 5 1.76347306068349694E+10, -2.16716498322379509E+09,
107 6 1.43157876718888981E+08, -3.87183344257261262E+06,
108 7 1.82577554742931747E+04, 2.86464035717679043E+11,
109 8 -2.40629790002850396E+12, 9.10934118523989896E+12,
110 9 -2.05168994109344374E+13, 3.05651255199353206E+13,
111 A -3.16670885847851584E+13, 2.33483640445818409E+13,
112 B -1.23204913055982872E+13, 4.61272578084913197E+12,
113 C -1.19655288019618160E+12, 2.05914503232410016E+11,
114 D -2.18229277575292237E+10, 1.24700929351271032E+09/
115 DATA C(119), C(120)/
116 1 -2.91883881222208134E+07, 1.18838426256783253E+05/
117 C***FIRST EXECUTABLE STATEMENT CUNIK
118 IF (INIT.NE.0) GO TO 40
119 C-----------------------------------------------------------------------
120 C INITIALIZE ALL VARIABLES
121 C-----------------------------------------------------------------------
122 RFN = 1.0E0/FNU
123 CRFN = CMPLX(RFN,0.0E0)
124 C T = ZR*CRFN
125 C-----------------------------------------------------------------------
126 C OVERFLOW TEST (ZR/FNU TOO SMALL)
127 C-----------------------------------------------------------------------
128 TSTR = REAL(ZR)
129 TSTI = AIMAG(ZR)
130 TEST = R1MACH(1)*1.0E+3
131 AC = FNU*TEST
132 IF (ABS(TSTR).GT.AC .OR. ABS(TSTI).GT.AC) GO TO 15
133 AC = 2.0E0*ABS(ALOG(TEST))+FNU
134 ZETA1 = CMPLX(AC,0.0E0)
135 ZETA2 = CMPLX(FNU,0.0E0)
136 PHI=CONE
137 RETURN
138 15 CONTINUE
139 T=ZR*CRFN
140 S = CONE + T*T
141 SR = CSQRT(S)
142 CFN = CMPLX(FNU,0.0E0)
143 ZN = (CONE+SR)/T
144 ZETA1 = CFN*CLOG(ZN)
145 ZETA2 = CFN*SR
146 T = CONE/SR
147 SR = T*CRFN
148 CWRK(16) = CSQRT(SR)
149 PHI = CWRK(16)*CON(IKFLG)
150 IF (IPMTR.NE.0) RETURN
151 T2 = CONE/S
152 CWRK(1) = CONE
153 CRFN = CONE
154 AC = 1.0E0
155 L = 1
156 DO 20 K=2,15
157 S = CZERO
158 DO 10 J=1,K
159 L = L + 1
160 S = S*T2 + CMPLX(C(L),0.0E0)
161 10 CONTINUE
162 CRFN = CRFN*SR
163 CWRK(K) = CRFN*S
164 AC = AC*RFN
165 TSTR = REAL(CWRK(K))
166 TSTI = AIMAG(CWRK(K))
167 TEST = ABS(TSTR) + ABS(TSTI)
168 IF (AC.LT.TOL .AND. TEST.LT.TOL) GO TO 30
169 20 CONTINUE
170 K = 15
171 30 CONTINUE
172 INIT = K
173 40 CONTINUE
174 IF (IKFLG.EQ.2) GO TO 60
175 C-----------------------------------------------------------------------
176 C COMPUTE SUM FOR THE I FUNCTION
177 C-----------------------------------------------------------------------
178 S = CZERO
179 DO 50 I=1,INIT
180 S = S + CWRK(I)
181 50 CONTINUE
182 SUM = S
183 PHI = CWRK(16)*CON(1)
184 RETURN
185 60 CONTINUE
186 C-----------------------------------------------------------------------
187 C COMPUTE SUM FOR THE K FUNCTION
188 C-----------------------------------------------------------------------
189 S = CZERO
190 T = CONE
191 DO 70 I=1,INIT
192 S = S + T*CWRK(I)
193 T = -T
194 70 CONTINUE
195 SUM = S
196 PHI = CWRK(16)*CON(2)
197 RETURN
198 END
@@ -0,0 +1,170
1 *DECK CUOIK
2 SUBROUTINE CUOIK (Z, FNU, KODE, IKFLG, N, Y, NUF, TOL, ELIM, ALIM)
3 C***BEGIN PROLOGUE CUOIK
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBESH, CBESI and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CUOIK-A, ZUOIK-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CUOIK COMPUTES THE LEADING TERMS OF THE UNIFORM ASYMPTOTIC
12 C EXPANSIONS FOR THE I AND K FUNCTIONS AND COMPARES THEM
13 C (IN LOGARITHMIC FORM) TO ALIM AND ELIM FOR OVER AND UNDERFLOW
14 C WHERE ALIM.LT.ELIM. IF THE MAGNITUDE, BASED ON THE LEADING
15 C EXPONENTIAL, IS LESS THAN ALIM OR GREATER THAN -ALIM, THEN
16 C THE RESULT IS ON SCALE. IF NOT, THEN A REFINED TEST USING OTHER
17 C MULTIPLIERS (IN LOGARITHMIC FORM) IS MADE BASED ON ELIM. HERE
18 C EXP(-ELIM)=SMALLEST MACHINE NUMBER*1.0E+3 AND EXP(-ALIM)=
19 C EXP(-ELIM)/TOL
20 C
21 C IKFLG=1 MEANS THE I SEQUENCE IS TESTED
22 C =2 MEANS THE K SEQUENCE IS TESTED
23 C NUF = 0 MEANS THE LAST MEMBER OF THE SEQUENCE IS ON SCALE
24 C =-1 MEANS AN OVERFLOW WOULD OCCUR
25 C IKFLG=1 AND NUF.GT.0 MEANS THE LAST NUF Y VALUES WERE SET TO ZERO
26 C THE FIRST N-NUF VALUES MUST BE SET BY ANOTHER ROUTINE
27 C IKFLG=2 AND NUF.EQ.N MEANS ALL Y VALUES WERE SET TO ZERO
28 C IKFLG=2 AND 0.LT.NUF.LT.N NOT CONSIDERED. Y MUST BE SET BY
29 C ANOTHER ROUTINE
30 C
31 C***SEE ALSO CBESH, CBESI, CBESK
32 C***ROUTINES CALLED CUCHK, CUNHJ, CUNIK, R1MACH
33 C***REVISION HISTORY (YYMMDD)
34 C 830501 DATE WRITTEN
35 C 910415 Prologue converted to Version 4.0 format. (BAB)
36 C***END PROLOGUE CUOIK
37 COMPLEX ARG, ASUM, BSUM, CWRK, CZ, CZERO, PHI, SUM, Y, Z, ZB,
38 * ZETA1, ZETA2, ZN, ZR
39 REAL AARG, AIC, ALIM, APHI, ASCLE, AX, AY, ELIM, FNN, FNU, GNN,
40 * GNU, RCZ, TOL, X, YY, R1MACH
41 INTEGER I, IFORM, IKFLG, INIT, KODE, N, NN, NUF, NW
42 DIMENSION Y(N), CWRK(16)
43 DATA CZERO / (0.0E0,0.0E0) /
44 DATA AIC / 1.265512123484645396E+00 /
45 C***FIRST EXECUTABLE STATEMENT CUOIK
46 NUF = 0
47 NN = N
48 X = REAL(Z)
49 ZR = Z
50 IF (X.LT.0.0E0) ZR = -Z
51 ZB = ZR
52 YY = AIMAG(ZR)
53 AX = ABS(X)*1.7321E0
54 AY = ABS(YY)
55 IFORM = 1
56 IF (AY.GT.AX) IFORM = 2
57 GNU = MAX(FNU,1.0E0)
58 IF (IKFLG.EQ.1) GO TO 10
59 FNN = NN
60 GNN = FNU + FNN - 1.0E0
61 GNU = MAX(GNN,FNN)
62 10 CONTINUE
63 C-----------------------------------------------------------------------
64 C ONLY THE MAGNITUDE OF ARG AND PHI ARE NEEDED ALONG WITH THE
65 C REAL PARTS OF ZETA1, ZETA2 AND ZB. NO ATTEMPT IS MADE TO GET
66 C THE SIGN OF THE IMAGINARY PART CORRECT.
67 C-----------------------------------------------------------------------
68 IF (IFORM.EQ.2) GO TO 20
69 INIT = 0
70 CALL CUNIK(ZR, GNU, IKFLG, 1, TOL, INIT, PHI, ZETA1, ZETA2, SUM,
71 * CWRK)
72 CZ = -ZETA1 + ZETA2
73 GO TO 40
74 20 CONTINUE
75 ZN = -ZR*CMPLX(0.0E0,1.0E0)
76 IF (YY.GT.0.0E0) GO TO 30
77 ZN = CONJG(-ZN)
78 30 CONTINUE
79 CALL CUNHJ(ZN, GNU, 1, TOL, PHI, ARG, ZETA1, ZETA2, ASUM, BSUM)
80 CZ = -ZETA1 + ZETA2
81 AARG = ABS(ARG)
82 40 CONTINUE
83 IF (KODE.EQ.2) CZ = CZ - ZB
84 IF (IKFLG.EQ.2) CZ = -CZ
85 APHI = ABS(PHI)
86 RCZ = REAL(CZ)
87 C-----------------------------------------------------------------------
88 C OVERFLOW TEST
89 C-----------------------------------------------------------------------
90 IF (RCZ.GT.ELIM) GO TO 170
91 IF (RCZ.LT.ALIM) GO TO 50
92 RCZ = RCZ + ALOG(APHI)
93 IF (IFORM.EQ.2) RCZ = RCZ - 0.25E0*ALOG(AARG) - AIC
94 IF (RCZ.GT.ELIM) GO TO 170
95 GO TO 100
96 50 CONTINUE
97 C-----------------------------------------------------------------------
98 C UNDERFLOW TEST
99 C-----------------------------------------------------------------------
100 IF (RCZ.LT.(-ELIM)) GO TO 60
101 IF (RCZ.GT.(-ALIM)) GO TO 100
102 RCZ = RCZ + ALOG(APHI)
103 IF (IFORM.EQ.2) RCZ = RCZ - 0.25E0*ALOG(AARG) - AIC
104 IF (RCZ.GT.(-ELIM)) GO TO 80
105 60 CONTINUE
106 DO 70 I=1,NN
107 Y(I) = CZERO
108 70 CONTINUE
109 NUF = NN
110 RETURN
111 80 CONTINUE
112 ASCLE = 1.0E+3*R1MACH(1)/TOL
113 CZ = CZ + CLOG(PHI)
114 IF (IFORM.EQ.1) GO TO 90
115 CZ = CZ - CMPLX(0.25E0,0.0E0)*CLOG(ARG) - CMPLX(AIC,0.0E0)
116 90 CONTINUE
117 AX = EXP(RCZ)/TOL
118 AY = AIMAG(CZ)
119 CZ = CMPLX(AX,0.0E0)*CMPLX(COS(AY),SIN(AY))
120 CALL CUCHK(CZ, NW, ASCLE, TOL)
121 IF (NW.EQ.1) GO TO 60
122 100 CONTINUE
123 IF (IKFLG.EQ.2) RETURN
124 IF (N.EQ.1) RETURN
125 C-----------------------------------------------------------------------
126 C SET UNDERFLOWS ON I SEQUENCE
127 C-----------------------------------------------------------------------
128 110 CONTINUE
129 GNU = FNU + (NN-1)
130 IF (IFORM.EQ.2) GO TO 120
131 INIT = 0
132 CALL CUNIK(ZR, GNU, IKFLG, 1, TOL, INIT, PHI, ZETA1, ZETA2, SUM,
133 * CWRK)
134 CZ = -ZETA1 + ZETA2
135 GO TO 130
136 120 CONTINUE
137 CALL CUNHJ(ZN, GNU, 1, TOL, PHI, ARG, ZETA1, ZETA2, ASUM, BSUM)
138 CZ = -ZETA1 + ZETA2
139 AARG = ABS(ARG)
140 130 CONTINUE
141 IF (KODE.EQ.2) CZ = CZ - ZB
142 APHI = ABS(PHI)
143 RCZ = REAL(CZ)
144 IF (RCZ.LT.(-ELIM)) GO TO 140
145 IF (RCZ.GT.(-ALIM)) RETURN
146 RCZ = RCZ + ALOG(APHI)
147 IF (IFORM.EQ.2) RCZ = RCZ - 0.25E0*ALOG(AARG) - AIC
148 IF (RCZ.GT.(-ELIM)) GO TO 150
149 140 CONTINUE
150 Y(NN) = CZERO
151 NN = NN - 1
152 NUF = NUF + 1
153 IF (NN.EQ.0) RETURN
154 GO TO 110
155 150 CONTINUE
156 ASCLE = 1.0E+3*R1MACH(1)/TOL
157 CZ = CZ + CLOG(PHI)
158 IF (IFORM.EQ.1) GO TO 160
159 CZ = CZ - CMPLX(0.25E0,0.0E0)*CLOG(ARG) - CMPLX(AIC,0.0E0)
160 160 CONTINUE
161 AX = EXP(RCZ)/TOL
162 AY = AIMAG(CZ)
163 CZ = CMPLX(AX,0.0E0)*CMPLX(COS(AY),SIN(AY))
164 CALL CUCHK(CZ, NW, ASCLE, TOL)
165 IF (NW.EQ.1) GO TO 140
166 RETURN
167 170 CONTINUE
168 NUF = -1
169 RETURN
170 END
@@ -0,0 +1,86
1 *DECK CWRSK
2 SUBROUTINE CWRSK (ZR, FNU, KODE, N, Y, NZ, CW, TOL, ELIM, ALIM)
3 C***BEGIN PROLOGUE CWRSK
4 C***SUBSIDIARY
5 C***PURPOSE Subsidiary to CBESI and CBESK
6 C***LIBRARY SLATEC
7 C***TYPE ALL (CWRSK-A, ZWRSK-A)
8 C***AUTHOR Amos, D. E., (SNL)
9 C***DESCRIPTION
10 C
11 C CWRSK COMPUTES THE I BESSEL FUNCTION FOR RE(Z).GE.0.0 BY
12 C NORMALIZING THE I FUNCTION RATIOS FROM CRATI BY THE WRONSKIAN
13 C
14 C***SEE ALSO CBESI, CBESK
15 C***ROUTINES CALLED CBKNU, CRATI, R1MACH
16 C***REVISION HISTORY (YYMMDD)
17 C 830501 DATE WRITTEN
18 C 910415 Prologue converted to Version 4.0 format. (BAB)
19 C***END PROLOGUE CWRSK
20 COMPLEX CINU, CSCL, CT, CW, C1, C2, RCT, ST, Y, ZR
21 REAL ACT, ACW, ALIM, ASCLE, ELIM, FNU, S1, S2, TOL, YY, R1MACH
22 INTEGER I, KODE, N, NW, NZ
23 DIMENSION Y(N), CW(2)
24 C***FIRST EXECUTABLE STATEMENT CWRSK
25 C-----------------------------------------------------------------------
26 C I(FNU+I-1,Z) BY BACKWARD RECURRENCE FOR RATIOS
27 C Y(I)=I(FNU+I,Z)/I(FNU+I-1,Z) FROM CRATI NORMALIZED BY THE
28 C WRONSKIAN WITH K(FNU,Z) AND K(FNU+1,Z) FROM CBKNU.
29 C-----------------------------------------------------------------------
30 NZ = 0
31 CALL CBKNU(ZR, FNU, KODE, 2, CW, NW, TOL, ELIM, ALIM)
32 IF (NW.NE.0) GO TO 50
33 CALL CRATI(ZR, FNU, N, Y, TOL)
34 C-----------------------------------------------------------------------
35 C RECUR FORWARD ON I(FNU+1,Z) = R(FNU,Z)*I(FNU,Z),
36 C R(FNU+J-1,Z)=Y(J), J=1,...,N
37 C-----------------------------------------------------------------------
38 CINU = CMPLX(1.0E0,0.0E0)
39 IF (KODE.EQ.1) GO TO 10
40 YY = AIMAG(ZR)
41 S1 = COS(YY)
42 S2 = SIN(YY)
43 CINU = CMPLX(S1,S2)
44 10 CONTINUE
45 C-----------------------------------------------------------------------
46 C ON LOW EXPONENT MACHINES THE K FUNCTIONS CAN BE CLOSE TO BOTH
47 C THE UNDER AND OVERFLOW LIMITS AND THE NORMALIZATION MUST BE
48 C SCALED TO PREVENT OVER OR UNDERFLOW. CUOIK HAS DETERMINED THAT
49 C THE RESULT IS ON SCALE.
50 C-----------------------------------------------------------------------
51 ACW = ABS(CW(2))
52 ASCLE = 1.0E+3*R1MACH(1)/TOL
53 CSCL = CMPLX(1.0E0,0.0E0)
54 IF (ACW.GT.ASCLE) GO TO 20
55 CSCL = CMPLX(1.0E0/TOL,0.0E0)
56 GO TO 30
57 20 CONTINUE
58 ASCLE = 1.0E0/ASCLE
59 IF (ACW.LT.ASCLE) GO TO 30
60 CSCL = CMPLX(TOL,0.0E0)
61 30 CONTINUE
62 C1 = CW(1)*CSCL
63 C2 = CW(2)*CSCL
64 ST = Y(1)
65 C-----------------------------------------------------------------------
66 C CINU=CINU*(CONJG(CT)/ABS(CT))*(1.0E0/ABS(CT) PREVENTS
67 C UNDER- OR OVERFLOW PREMATURELY BY SQUARING ABS(CT)
68 C-----------------------------------------------------------------------
69 CT = ZR*(C2+ST*C1)
70 ACT = ABS(CT)
71 RCT = CMPLX(1.0E0/ACT,0.0E0)
72 CT = CONJG(CT)*RCT
73 CINU = CINU*RCT*CT
74 Y(1) = CINU*CSCL
75 IF (N.EQ.1) RETURN
76 DO 40 I=2,N
77 CINU = ST*CINU
78 ST = Y(I)
79 Y(I) = CINU*CSCL
80 40 CONTINUE
81 RETURN
82 50 CONTINUE
83 NZ = -1
84 IF(NW.EQ.(-2)) NZ=-2
85 RETURN
86 END
This diff has been collapsed as it changes many lines, (621 lines changed) Show them Hide them
@@ -0,0 +1,621
1 subroutine guess(acf,tau,npts,zero,amin,te,tr)
2 c
3 c find zero crossing (zero), depth of minimum (amin), height of maximum
4 c
5 real acf(npts),tau(npts)
6
7 zero=0.0
8 amin=1.0
9 tmin=0.0
10 jmin=0
11
12 do i=npts,2,-1
13 if(acf(i)*acf(i-1).lt.0.0) then
14 zero=(tau(i-1)*acf(i)-tau(i)*acf(i-1))/(acf(i)-acf(i-1))
15 end if
16 if(acf(i).lt.amin) then
17 amin=acf(i)
18 jmin=i
19 end if
20 end do
21
22 if(jmin.gt.0) then
23 call parab1(tau(jmin-1),acf(jmin-1),a,b,c)
24 tmin=-b/(2.0*a)
25 amin=c+tmin*(b+tmin*a)
26 end if
27
28 tr=cdtr1(-amin)
29 te=czte1(zero*1000.0,tr)
30 return
31 end
32
33 subroutine parab1(x,y,a,b,c)
34 C-----
35 dimension x(3),y(3)
36 delta=x(1)-x(2)
37 a=(y(1)-2.*y(2)+y(3))/(2.*delta*delta)
38 b=(y(1)-y(2))/delta - a*(x(1)+x(2))
39 c=y(1)-a*x(1)*x(1)-b*x(1)
40 return
41 end
42
43 real function cdtr1(depth)
44 C-----convert depth to te/ti ratio
45 dimension tr(4)
46 C according to the curve published in farley et al 1967
47 c modified for 2004 conditions on axis
48 c data tr/7.31081,3.53286,5.92271,.174/
49 data tr/9.5,4.0,8.5,.3/
50 data nt/4/
51 cdtr1=tr(1)
52 do i=2,nt
53 cdtr1=cdtr1*depth + tr(i)
54 end do
55 return
56 end
57
58 real function czte1(zlag,tr)
59 C-----convert zero crossing point to te
60 C according to the curve published in farley et al 1967
61 c modified for 2004 conditions on axis
62 dimension dt(4)
63 c data dt/0.00945025,-0.0774338,.203626,.812397/,nd/4/
64 data dt/0.00945025,-0.0774338,.2,0.9/,nd/4/
65 data t0/1000./
66 tr1=min(abs(tr),5.)
67 if(zlag .eq. 0)then
68 czte1=1000000.
69 else
70 dt0=dt(1)
71 do i=2,nd
72 dt0=dt0*tr1 + dt(i)
73 end do
74 czte1=t0*(dt0/zlag)**2
75 end if
76 return
77 end
78
79 subroutine fit(wl,taup,rhop,covar,cinv,sigma2p,paramp,ebp,
80 & bfldp,alphap,densp,alt,time,nl,ifitp,ist)
81 c
82 c subroutine to fit measured ACF
83 c wavelength wl (m),lags taup (s), normalized acf rhop,
84 c experimental variances sigma2p, covariances covar,
85 c fit parameters params, error bars ebp, magnetic field bfldp (gauss),
86 c alphap B-field angle (radians), density densp (gcs),
87 c altitude alt (km), time (LT hours), nl lags
88 c ifitp determines which parameters are fit (see below)
89 c
90 real tol,pi,wl
91 parameter(nlmax=100,npmax=10,lwa=2000,tol=1.0e-5)
92 external fcn
93
94 real covar(nl,nl),cinv(nl,nl)
95 real ev(nlmax*nlmax),ap(nlmax*(nlmax+1)/2)
96 real fv1(nlmax),fv2(nlmax),det(2),w(nlmax)
97
98 real taup(nl),rhop(nl),sigma2p(nl),paramp(npmax)
99 real p2(npmax),ebp(npmax),alphap,bfldp,densp
100 real tau(nlmax),rho(nlmax),sigma2(nlmax),params(npmax)
101 real fvec(nlmax),wa(lwa),wa2(lwa),eb(npmax)
102
103 integer iwa(npmax),ifitp(npmax),ifit(npmax)
104
105 include 'fitter.h'
106 common /mode/imode
107
108 common/fitter/tau,rho,sigma2,params,ifit
109 common/trans/ev
110 C-----
111
112 c set ifit(1-5) to unity to fit:
113 c 1 normalization
114 c 2 Te
115 c 3 Ti
116 c 4 H+
117 c 5 He+
118
119 imode=2
120 c
121 pi=4.0*atan(1.0)
122 ak=2.0*pi/wl
123
124 wi(1)=16
125 wi(2)=1
126 wi(3)=4
127 nion=3
128
129 c
130 c invert covariances and find eigenvalues and eigenvectors
131 c
132 l = 0
133 do 20 j = 1, nl
134 do 10 i = 1, j
135 l = l + 1
136 ap(l) = covar(i,j)
137 10 continue
138 20 continue
139
140 call sppfa(ap,nl,info)
141 call sppdi(ap,nl,det,01)
142
143 l = 0
144 do 40 j = 1, nl
145 do 30 i = 1, j
146 l = l + 1
147 cinv(i,j)=ap(l)
148 cinv(j,i)=ap(l)
149 30 continue
150 40 continue
151
152 c
153 c transformation matrix is inverse (transpose) of eigenvectors
154 c
155
156 matz=1
157 call rs(nl,nl,cinv,w,matz,ev,fv1,fv2,ierr)
158
159 do i=1,nl
160 sigma2(i)=1.0/w(i)
161 end do
162
163 c
164 c extract desired parameters
165 c
166 iparm=0
167 do i=1,5
168 eb(i)=0.0
169 if(ifitp(i).eq.1) then
170 iparm=iparm+1
171 p2(iparm)=paramp(i)
172 end if
173 ifit(i)=ifitp(i)
174 params(i)=paramp(i)
175 end do
176 np=iparm
177
178 alpha=alphap
179 dens=densp
180 do i=1,nl
181 tau(i)=taup(i)
182 rho(i)=rhop(i)
183 sigma2p(i)=sigma2(i)
184 end do
185
186 bfld=bfldp
187
188 c
189 c no. equations is no. lags - do nlls fit
190 c
191
192 call lmdif1(fcn,nl,np,p2,fvec,tol,info,iwa,wa,lwa)
193 ist=info
194
195 c
196 c generate error bars here
197 c
198 call fdjac2(fcn,nl,np,p2,fvec,wa,nl,iflag,0.0e0,wa2)
199
200 do i=1,np
201 err=0.0
202 do j=1,nl
203 err=err+(wa(j+(i-1)*nl))**2
204 end do
205 if(err.gt.0.0) eb(i)=sqrt(err**-1)
206 end do
207
208 c reorder results
209 iparm=0
210 do i=1,5
211 if(ifit(i).eq.1) then
212 iparm=iparm+1
213 paramp(i)=p2(iparm)
214 ebp(i)=eb(iparm)
215 else
216 ebp(i)=0.0
217 paramp(i)=params(i)
218 end if
219 end do
220
221 9 continue
222 c write(*,*) dens
223 c write(*,*) te
224
225 return
226 end
227
228
229 subroutine fcn(m,n,x,fvec,iflag)
230 c
231 c provides m functions (fvec) in n variables (x) to minimize
232 c in least-squares sense
233 c
234
235 parameter(nlmax=100,npmax=10)
236 integer m,n,iflag
237 real fvec(m)
238
239 integer ifit(npmax)
240 real x(n),fv(nlmax),anorm,params(npmax),ev(nlmax*nlmax)
241 real tau(nlmax),rho(nlmax),sigma2(nlmax)
242 real chisq,acf
243
244 include 'fitter.h'
245
246 common/fitter/tau,rho,sigma2,params,ifit
247 common /errs/ chisq
248 common /trans/ev
249
250 c 1 0 0 0 0 fit zero lag (otherwise set to default)
251 c 0 1 0 0 0 fit Te (otherwise default)
252 c 0 0 1 0 0 fit Ti (otherwise set to Te)
253 c 0 0 0 1 0 fit H+ (otherwize default)
254 c 0 0 0 0 1 fit He+ (otherwise default)
255
256 8 continue
257
258 c
259 c ignore collisions
260 c
261 c write(*,*) "starting fcn"
262 ven=0.0
263 do i=1,3
264 vin(i)=0.0
265 end do
266
267 iparm=0
268
269 c
270 c zero lag normalization constant
271 c
272 if(ifit(1).eq.1) then
273 iparm=iparm+1
274 c=x(iparm)
275 else
276 c=params(1)
277 end if
278 c
279 c Te
280 c
281 if(ifit(2).eq.1) then
282 iparm=iparm+1
283 te=x(iparm)
284 else
285 te=params(2)
286 end if
287 c
288 c Ti - default is Te rather than initial value
289 c
290 if(ifit(3).eq.1) then
291 iparm=iparm+1
292 do i=1,3
293 ti(i)=x(iparm)
294 end do
295 else
296 do i=1,3
297 ti(i)=te
298 end do
299 params(3)=te
300 end if
301
302 c three-ion plasma
303
304 nion=3
305 c
306 c composition H+ first
307 c
308 fi(1)=1.0
309 if(ifit(4).eq.1) then
310 iparm=iparm+1
311 fi(2)=(x(iparm))
312 fi(1)=fi(1)-(x(iparm))
313 else
314 fi(2)=params(4)
315 fi(1)=fi(1)-params(4)
316 end if
317 c
318 c He+
319 c
320 if(ifit(5).eq.1) then
321 iparm=iparm+1
322 fi(3)=(x(iparm))
323 fi(1)=fi(1)-(x(iparm))
324 else
325 fi(3)=params(5)
326 fi(1)=fi(1)-params(5)
327 end if
328
329 c write(*,*) x,bfld,alpha,dens,ak,m
330
331 call gaussq(0.0,anorm)
332 anorm=anorm/c
333
334 if(anorm.eq.0.0.or.m.eq.0)return
335 chisq=0.0
336 do i=1,m
337 call gaussq(tau(i),acf)
338 fv(i)=(acf/anorm-rho(i))
339 end do
340
341 c
342 c transform to space where s2 is diagonal
343 c (are i and j transposed below?)
344 c
345 do i=1,m
346 fvec(i)=0.0
347 do j=1,m
348 fvec(i)=fvec(i)+fv(j)*ev(j+(i-1)*m)/sqrt(sigma2(i))
349 end do
350 chisq=chisq+fvec(i)**2
351 end do
352
353 chisq=chisq/float(m)
354
355 c write(*,*) fvec
356 c write(*,*) chisq
357 c stop
358
359 return
360 end
361
362 c
363 c not really fond of above code
364 c
365
366
367 complex function cj_ion(theta,psi)
368 c
369 real theta,phi,psi,alpha
370 complex z
371 complex*16 zz
372 z=zz(dcmplx(-theta,psi))
373 cj_ion=z*cmplx(0.0,-1.0)
374 return
375 end
376
377 complex function cj_electron(theta,phi,psi,alpha)
378 c
379 c Theta, phi, and psi are the normalized frequency, gyrofrequency,
380 c and collision frequency. Alpha is angle between wavevector and
381 c magnetic field in radians.
382 c
383 parameter(nterms=10)
384 real theta,phi,psi,alpha
385 real arg
386 complex cj,cy(0:nterms)
387 complex z
388 complex*16 zz
389 integer m,nz,ierr
390 integer imode
391 common/mode/imode
392 c
393 if(imode.eq.3) then
394
395 arg=0.5*(sin(alpha)/phi)**2
396
397 c calculate modified Bessel functions using amos library
398
399 call cbesi(cmplx(arg,0.0),0.0,2,nterms+1,cy,nz,ierr)
400
401 cj=cmplx(0.0,0.0)
402
403 do m=-nterms,nterms
404 z=zz(dcmplx(-(theta-float(m)*phi)/cos(alpha),
405 & psi/cos(alpha)))
406 cj=cj+z*cy(iabs(m))
407 end do
408
409 cj_electron=cj*cmplx(0.0,-1.0/cos(alpha))
410
411 else
412
413 z=zz(dcmplx(-theta/cos(alpha),psi/cos(alpha)))
414 cj_electron=z*cmplx(0.0,-1.0/cos(alpha))
415 cj_electron=cj_electron*(1.0-(sin(alpha)/phi)**2/2.0)
416
417 end if
418
419 return
420 end
421
422 complex function y_ion(theta,psi)
423 c
424 real theta,phi,psi,alpha
425 complex cj, cj_ion
426 cj=cj_ion(theta,psi)
427 y_ion=cj*cmplx(theta,-psi)+cmplx(0.0,1.0)
428 y_ion=y_ion/(1-psi*cj)
429 return
430 end
431
432 complex function y_electron(theta,phi,psi,alpha)
433 c
434 real theta,phi,psi,alpha
435 complex cj, cj_electron
436 cj=cj_electron(theta,phi,psi,alpha)
437 y_electron=cj*cmplx(theta,-psi)+cmplx(0.0,1.0)
438 y_electron=y_electron/(1.0-psi*cj)
439 return
440 end
441
442 real function spect1(omega)
443 c
444 c Function to generate IS ion-line spectrum
445 c Provisions for nimax ions
446 c No provisions for drifts
447 c
448 c imode=1 Farley B-field treatment for electrons
449 c 2 use Mike Sulzer's model for ye
450 c 3 calculate ye using sums of Bessel functions
451 c
452 include 'fitter.h'
453
454 real omega,thetae,thetai(nimax),psie,psii(nimax),phi,p
455 real tr(nimax),vti(nimax),vte,omegae
456 real bk,em,e,dlf,dl,pi
457 real alpha2,densmks,freq
458 complex ye,yed,yet,yi(nimax),sum1,sum2,sumdl
459 complex y_ion, y_electron, y_esum
460 integer i,j,k,imode
461 common/mode/ imode
462 data bk,em,e,dlf/1.38e-23,9.1e-31,1.6e-19,4772.9/
463
464 c fi is ion fraction, wi is ion atomic weight
465 c dens is electron density (cgs), alpha is angle
466 c between k and the magnetic field (radians)
467
468 pi=4.0*atan(1.0)
469
470 if(omega.eq.0.0) omega=1.0
471
472 omegae=e*bfld*1.0e-4/em
473 densmks=dens*1.0e6
474
475 sum1=0.0
476 sum2=0.0
477
478 do i=1,nion
479 tr(i)=te/ti(i)
480 vti(i)=sqrt(bk*ti(i)/(1.67e-27*wi(i)))
481 thetai(i)=(omega/ak)/(sqrt(2.0)*vti(i))
482 psii(i)=(vin(i)/ak)/(sqrt(2.0)*vti(i))
483 yi(i)=y_ion(thetai(i),psii(i))
484 sum1=sum1+fi(i)*tr(i)*yi(i)
485 sum2=sum2+fi(i)*yi(i)
486 end do
487 dl=ak**2*dlf*te/densmks
488 c write(*,fmt='("Before YE")')
489 c write(*,*) imode
490 c call exit
491
492 if(imode.eq.1.or.imode.eq.3) then
493
494 vte=sqrt(bk*te/em)
495 thetae=(omega/ak)/(sqrt(2.0)*vte)
496 phi=(omegae/ak)/(sqrt(2.0)*vte)
497 psie=(ven/ak)/(sqrt(2.0)*vte)
498 ye=y_electron(thetae,phi,psie,alpha)
499 write(*,fmt='("AFTER YE")')
500 c call exit
501
502 else if(imode.eq.2) then
503 c
504 c use Mike Sulzer's library here: alpha2 is angle off perp in degrees
505 c
506
507 freq=omega/(2.0*pi)
508 alpha2=abs(pi/2.0-alpha)*180.0/pi
509 c write(*,*) "ye: ", ye
510 call collision(densmks, te, freq, alpha2, ye)
511 c write(*,fmt='("AFTER COLLISION")')
512 c call exit
513 ye=ye*omega+cmplx(0.0,1.0)
514
515 end if
516 yed=ye+cmplx(0.0,dl)
517
518 p=(cabs(ye))**2*real(sum2)+cabs(sum1+cmplx(0.0,dl))**2*real(ye)
519 p=p/(cabs(yed+sum1))**2
520 spect1=p*2.0e0/(omega*pi)
521 write(*,*) "spect1:",spect1
522 return
523 end
524
525 subroutine acf2(wl, tau, te1, ti1, fi1, ven1, vin1, wi1,
526 & alpha1, dens1, bfld1, acf, nion1)
527 c
528 c computes autocorrelation function for given plasma parameters
529 c by integrating real spectrum
530 c tau in sec., alpha in radians, density in cgs, bfield in cgs
531 c scattering wavelength (wl) in meters
532 c
533 include 'fitter.h'
534
535 real wl,tau,te1,ti1(nion1),fi1(nion1),ven1,vin1(nion1),alpha1,
536 & dens1,bfld1,acf
537 real pi
538 integer nion1
539 integer wi1(nion1)
540 integer i,j,k,imode
541 common /mode/imode
542 c
543 write(*,*) "INITIAL acf:",wl,tau,te1,ti1,fi1,ven1,vin1,wi1,alpha1
544 write(*,*) "INITIAL acf:",dens1, bfld1, acf, nion1
545 c write(*,fmt='("INIT")')
546 pi=4.0*atan(1.0)
547 c
548 c copy arguments to common block
549 c
550 ak=2.0*pi/wl
551 imode=2
552 write(*,*) "imode:",imode
553
554 nion=nion1
555 alpha=alpha1
556 te=te1
557 ven=ven1
558 c write(*,fmt='("INIT2")')
559 do i=1,nion
560 c write(*,fmt='("INIT2.5")')
561 ti(i)=ti1(i)
562 fi(i)=fi1(i)
563 vin(i)=vin1(i)
564 wi(i)=wi1(i)
565 end do
566 c write(*,fmt='("INIT3")')
567 dens=dens1
568 bfld=bfld1
569
570 c write(*,*) wl,alpha1,bfld1,dens
571 c call exit
572 c write(*,fmt='("Before Gauss")')
573 call gaussq(tau,acf)
574
575 write(*,*) "FINAL acf:",acf
576
577 c write(*,fmt='("After Gauss")')
578 return
579 end
580
581 subroutine gaussq(tau,acf)
582 c
583 c Computes cosine or sine transform of given real function
584 c Uses quadpack, tau in sec.
585 c
586 real a,abserr,epsabs,acf,tau,work,chebmo
587 integer ier,integr,iwork,last,leniw,lenw,limit,limlst,
588 * lst,maxp1,neval
589 integer knorm,ksave,momcom,nrmom
590 dimension iwork(300),work(1625),chebmo(61,25)
591 external spect1
592 include 'fitter.h'
593 c
594 c write(*,*) "inside gaussq"
595 a = 0.0
596 b = 2.5e4*ak ! upper integration limit open to debate (was 1.5, now 2.5)
597 integr = 1
598 epsabs = 1.0e-4
599 limlst = 50
600 limit = 100
601 leniw = limit*2+limlst
602 maxp1 = 61
603 lenw = leniw*2+maxp1*25
604
605 c write(*,*) leniw,lenw
606
607 nrmom=0
608 ksave=0
609 momcom=0
610 write(*,*) "Before qc25f:",acf,imode
611 c much faster, more robust
612 c write(*,*) "acf_in: ",acf
613 call qc25f(spect1,a,b,tau,integr,nrmom,maxp1,ksave,acf,
614 & abserr,neval,resabs,resasc,momcom,chebmo)
615 c write(*,*) "acf_out: ",acf
616 c call qawf(spect1,a,tau,integr,epsabs,acf,abserr,neval,
617 c & ier,limlst,lst,leniw,maxp1,lenw,iwork,work)
618 write(*,*) "After qc25f:",acf
619 c call exit
620 return
621 end
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -0,0 +1,70
1 ! -*- f90 -*-
2 ! Note: the context of this file is case sensitive.
3
4 python module fitacf_acf2 ! in
5 interface ! in :fitacf_acf2
6 subroutine acf2(wl,tau,te1,ti1,fi1,ven1,vin1,wi1,alpha1,dens1,bfld1,acf,nion1) ! in :fitacf_acf2:fitacf.f
7 real intent(in):: wl
8 real intent(in):: tau
9 real intent(in):: te1
10 real intent(in),dimension(nion1) :: ti1
11 real intent(in),dimension(nion1),depend(nion1) :: fi1
12 real intent(in):: ven1
13 real intent(in),dimension(nion1),depend(nion1) :: vin1
14 integer intent(in),dimension(nion1),depend(nion1) :: wi1
15 integer intent(in), optional,check(len(ti1)>=nion1),depend(ti1) :: nion1=len(ti1)
16 real intent(in):: alpha1
17 real intent(in):: dens1
18 real intent(in):: bfld1
19 real intent(in,out):: acf
20 real :: te
21 real dimension(10) :: ti
22 real dimension(10) :: fi
23 real :: ven
24 real dimension(10) :: vin
25 real :: alpha
26 real :: dens
27 real :: bfld
28 integer :: nion
29 integer dimension(10) :: wi
30 real :: ak
31 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
32 end subroutine acf2
33 function spect1(omega) ! in :fitacf_fit_short:fitacf.f
34 real :: omega
35 real :: te
36 real dimension(10) :: ti
37 real dimension(10) :: fi
38 real :: ven
39 real dimension(10) :: vin
40 real :: alpha
41 real :: dens
42 real :: bfld
43 integer :: nion
44 integer dimension(10) :: wi
45 real :: ak
46 integer :: imode
47 real :: spect1
48 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
49 common /mode/ imode
50 end function spect1
51 subroutine gaussq(tau,acf) ! in :fitacf_fit_short:fitacf.f
52 real :: tau
53 real :: acf
54 real :: te
55 real dimension(10) :: ti
56 real dimension(10) :: fi
57 real :: ven
58 real dimension(10) :: vin
59 real :: alpha
60 real :: dens
61 real :: bfld
62 integer :: nion
63 integer dimension(10) :: wi
64 real :: ak
65 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
66 end interface
67 end python module fitacf_acf2
68
69 ! This file was auto-generated with f2py (version:2).
70 ! See http://cens.ioc.ee/projects/f2py2e/
This diff has been collapsed as it changes many lines, (544 lines changed) Show them Hide them
@@ -0,0 +1,544
1
2 subroutine fit(wl,taup,rhop,covar,cinv,sigma2p,paramp,ebp,
3 & bfldp,alphap,densp,alt,time,ifitp,ist,nl)
4 c
5 c subroutine to fit measured ACF
6 c wavelength wl (m),lags taup (s), normalized acf rhop,
7 c experimental variances sigma2p, covariances covar,
8 c fit parameters params, error bars ebp, magnetic field bfldp (gauss),
9 c alphap B-field angle (radians), density densp (gcs),
10 c altitude alt (km), time (LT hours), nl lags
11 c ifitp determines which parameters are fit (see below)
12 c
13 real tol,pi,wl
14 parameter(nlmax=100,npmax=10,lwa=2000,tol=1.0e-5)
15 external fcn
16
17 real covar(nl,nl),cinv(nl,nl)
18 real ev(nlmax*nlmax),ap(nlmax*(nlmax+1)/2)
19 real fv1(nlmax),fv2(nlmax),det(2),w(nlmax)
20
21 real taup(nl),rhop(nl),sigma2p(nl),paramp(npmax)
22 real p2(npmax),ebp(npmax),alphap,bfldp,densp
23 real tau(nlmax),rho(nlmax),sigma2(nlmax),params(npmax)
24 real fvec(nlmax),wa(lwa),wa2(lwa),eb(npmax)
25
26 integer iwa(npmax),ifitp(npmax),ifit(npmax)
27
28 include 'fitter.h'
29 common /mode/imode
30
31 common/fitter/tau,rho,sigma2,params,ifit
32 common/trans/ev
33 C-----
34
35 c set ifit(1-5) to unity to fit:
36 c 1 normalization
37 c 2 Te
38 c 3 Ti
39 c 4 H+
40 c 5 He+
41
42 imode=2
43 c
44 pi=4.0*atan(1.0)
45 ak=2.0*pi/wl
46
47 wi(1)=16
48 wi(2)=1
49 wi(3)=4
50 nion=3
51
52 c
53 c invert covariances and find eigenvalues and eigenvectors
54 c
55 l = 0
56 do 20 j = 1, nl
57 do 10 i = 1, j
58 l = l + 1
59 ap(l) = covar(i,j)
60 10 continue
61 20 continue
62
63 call sppfa(ap,nl,info)
64 call sppdi(ap,nl,det,01)
65
66 l = 0
67 do 40 j = 1, nl
68 do 30 i = 1, j
69 l = l + 1
70 cinv(i,j)=ap(l)
71 cinv(j,i)=ap(l)
72 30 continue
73 40 continue
74
75 c
76 c transformation matrix is inverse (transpose) of eigenvectors
77 c
78
79 matz=1
80 call rs(nl,nl,cinv,w,matz,ev,fv1,fv2,ierr)
81
82 do i=1,nl
83 sigma2(i)=1.0/w(i)
84 end do
85
86 c
87 c extract desired parameters
88 c
89 iparm=0
90 do i=1,5
91 eb(i)=0.0
92 if(ifitp(i).eq.1) then
93 iparm=iparm+1
94 p2(iparm)=paramp(i)
95 end if
96 ifit(i)=ifitp(i)
97 params(i)=paramp(i)
98 end do
99 np=iparm
100
101 alpha=alphap
102 dens=densp
103 do i=1,nl
104 tau(i)=taup(i)
105 rho(i)=rhop(i)
106 sigma2p(i)=sigma2(i)
107 end do
108
109 bfld=bfldp
110
111 c
112 c no. equations is no. lags - do nlls fit
113 c
114
115 call lmdif1(fcn,nl,np,p2,fvec,tol,info,iwa,wa,lwa)
116 ist=info
117
118 c
119 c generate error bars here
120 c
121 call fdjac2(fcn,nl,np,p2,fvec,wa,nl,iflag,0.0e0,wa2)
122
123 do i=1,np
124 err=0.0
125 do j=1,nl
126 err=err+(wa(j+(i-1)*nl))**2
127 end do
128 if(err.gt.0.0) eb(i)=sqrt(err**-1)
129 end do
130
131 c reorder results
132 iparm=0
133 do i=1,5
134 if(ifit(i).eq.1) then
135 iparm=iparm+1
136 paramp(i)=p2(iparm)
137 ebp(i)=eb(iparm)
138 else
139 ebp(i)=0.0
140 paramp(i)=params(i)
141 end if
142 end do
143
144 9 continue
145 c write(*,*) dens
146 c write(*,*) te
147
148 return
149 end
150
151
152 subroutine fcn(m,n,x,fvec,iflag)
153 c
154 c provides m functions (fvec) in n variables (x) to minimize
155 c in least-squares sense
156 c
157
158 parameter(nlmax=100,npmax=10)
159 integer m,n,iflag
160 real fvec(m)
161
162 integer ifit(npmax)
163 real x(n),fv(nlmax),anorm,params(npmax),ev(nlmax*nlmax)
164 real tau(nlmax),rho(nlmax),sigma2(nlmax)
165 real chisq,acf
166
167 include 'fitter.h'
168
169 common/fitter/tau,rho,sigma2,params,ifit
170 common /errs/ chisq
171 common /trans/ev
172
173 c 1 0 0 0 0 fit zero lag (otherwise set to default)
174 c 0 1 0 0 0 fit Te (otherwise default)
175 c 0 0 1 0 0 fit Ti (otherwise set to Te)
176 c 0 0 0 1 0 fit H+ (otherwize default)
177 c 0 0 0 0 1 fit He+ (otherwise default)
178
179 8 continue
180
181 c
182 c ignore collisions
183 c
184 c write(*,*) "starting fcn"
185 ven=0.0
186 do i=1,3
187 vin(i)=0.0
188 end do
189
190 iparm=0
191
192 c
193 c zero lag normalization constant
194 c
195 if(ifit(1).eq.1) then
196 iparm=iparm+1
197 c=x(iparm)
198 else
199 c=params(1)
200 end if
201 c
202 c Te
203 c
204 if(ifit(2).eq.1) then
205 iparm=iparm+1
206 te=x(iparm)
207 else
208 te=params(2)
209 end if
210 c
211 c Ti - default is Te rather than initial value
212 c
213 if(ifit(3).eq.1) then
214 iparm=iparm+1
215 do i=1,3
216 ti(i)=x(iparm)
217 end do
218 else
219 do i=1,3
220 ti(i)=te
221 end do
222 params(3)=te
223 end if
224
225 c three-ion plasma
226
227 nion=3
228 c
229 c composition H+ first
230 c
231 fi(1)=1.0
232 if(ifit(4).eq.1) then
233 iparm=iparm+1
234 fi(2)=(x(iparm))
235 fi(1)=fi(1)-(x(iparm))
236 else
237 fi(2)=params(4)
238 fi(1)=fi(1)-params(4)
239 end if
240 c
241 c He+
242 c
243 if(ifit(5).eq.1) then
244 iparm=iparm+1
245 fi(3)=(x(iparm))
246 fi(1)=fi(1)-(x(iparm))
247 else
248 fi(3)=params(5)
249 fi(1)=fi(1)-params(5)
250 end if
251
252 c write(*,*) x,bfld,alpha,dens,ak,m
253
254 call gaussq(0.0,anorm)
255 anorm=anorm/c
256
257 if(anorm.eq.0.0.or.m.eq.0)return
258 chisq=0.0
259 do i=1,m
260 call gaussq(tau(i),acf)
261 fv(i)=(acf/anorm-rho(i))
262 end do
263
264 c
265 c transform to space where s2 is diagonal
266 c (are i and j transposed below?)
267 c
268 do i=1,m
269 fvec(i)=0.0
270 do j=1,m
271 fvec(i)=fvec(i)+fv(j)*ev(j+(i-1)*m)/sqrt(sigma2(i))
272 end do
273 chisq=chisq+fvec(i)**2
274 end do
275
276 chisq=chisq/float(m)
277
278 c write(*,*) fvec
279 c write(*,*) chisq
280 c stop
281
282 return
283 end
284
285 c
286 c not really fond of above code
287 c
288
289
290 complex function cj_ion(theta,psi)
291 c
292 real theta,phi,psi,alpha
293 complex z
294 complex*16 zz
295 z=zz(dcmplx(-theta,psi))
296 cj_ion=z*cmplx(0.0,-1.0)
297 return
298 end
299
300 complex function cj_electron(theta,phi,psi,alpha)
301 c
302 c Theta, phi, and psi are the normalized frequency, gyrofrequency,
303 c and collision frequency. Alpha is angle between wavevector and
304 c magnetic field in radians.
305 c
306 parameter(nterms=10)
307 real theta,phi,psi,alpha
308 real arg
309 complex cj,cy(0:nterms)
310 complex z
311 complex*16 zz
312 integer m,nz,ierr
313 integer imode
314 common/mode/imode
315 c
316 if(imode.eq.3) then
317
318 arg=0.5*(sin(alpha)/phi)**2
319
320 c calculate modified Bessel functions using amos library
321
322 call cbesi(cmplx(arg,0.0),0.0,2,nterms+1,cy,nz,ierr)
323
324 cj=cmplx(0.0,0.0)
325
326 do m=-nterms,nterms
327 z=zz(dcmplx(-(theta-float(m)*phi)/cos(alpha),
328 & psi/cos(alpha)))
329 cj=cj+z*cy(iabs(m))
330 end do
331
332 cj_electron=cj*cmplx(0.0,-1.0/cos(alpha))
333
334 else
335
336 z=zz(dcmplx(-theta/cos(alpha),psi/cos(alpha)))
337 cj_electron=z*cmplx(0.0,-1.0/cos(alpha))
338 cj_electron=cj_electron*(1.0-(sin(alpha)/phi)**2/2.0)
339
340 end if
341
342 return
343 end
344
345 complex function y_ion(theta,psi)
346 c
347 real theta,phi,psi,alpha
348 complex cj, cj_ion
349 cj=cj_ion(theta,psi)
350 y_ion=cj*cmplx(theta,-psi)+cmplx(0.0,1.0)
351 y_ion=y_ion/(1-psi*cj)
352 return
353 end
354
355 complex function y_electron(theta,phi,psi,alpha)
356 c
357 real theta,phi,psi,alpha
358 complex cj, cj_electron
359 cj=cj_electron(theta,phi,psi,alpha)
360 y_electron=cj*cmplx(theta,-psi)+cmplx(0.0,1.0)
361 y_electron=y_electron/(1.0-psi*cj)
362 return
363 end
364
365 real function spect1(omega)
366 c
367 c Function to generate IS ion-line spectrum
368 c Provisions for nimax ions
369 c No provisions for drifts
370 c
371 c imode=1 Farley B-field treatment for electrons
372 c 2 use Mike Sulzer's model for ye
373 c 3 calculate ye using sums of Bessel functions
374 c
375 include 'fitter.h'
376
377 real omega,thetae,thetai(nimax),psie,psii(nimax),phi,p
378 real tr(nimax),vti(nimax),vte,omegae
379 real bk,em,e,dlf,dl,pi
380 real alpha2,densmks,freq
381 complex ye,yed,yet,yi(nimax),sum1,sum2,sumdl
382 complex y_ion, y_electron, y_esum
383 integer i,j,k,imode
384 common/mode/ imode
385 data bk,em,e,dlf/1.38e-23,9.1e-31,1.6e-19,4772.9/
386
387 c fi is ion fraction, wi is ion atomic weight
388 c dens is electron density (cgs), alpha is angle
389 c between k and the magnetic field (radians)
390
391 pi=4.0*atan(1.0)
392
393 if(omega.eq.0.0) omega=1.0
394
395 omegae=e*bfld*1.0e-4/em
396 densmks=dens*1.0e6
397
398 sum1=0.0
399 sum2=0.0
400
401 do i=1,nion
402 tr(i)=te/ti(i)
403 vti(i)=sqrt(bk*ti(i)/(1.67e-27*wi(i)))
404 thetai(i)=(omega/ak)/(sqrt(2.0)*vti(i))
405 psii(i)=(vin(i)/ak)/(sqrt(2.0)*vti(i))
406 yi(i)=y_ion(thetai(i),psii(i))
407 sum1=sum1+fi(i)*tr(i)*yi(i)
408 sum2=sum2+fi(i)*yi(i)
409 end do
410 dl=ak**2*dlf*te/densmks
411 c write(*,fmt='("Before YE")')
412 c write(*,*) imode
413 c call exit
414
415 if(imode.eq.1.or.imode.eq.3) then
416
417 vte=sqrt(bk*te/em)
418 thetae=(omega/ak)/(sqrt(2.0)*vte)
419 phi=(omegae/ak)/(sqrt(2.0)*vte)
420 psie=(ven/ak)/(sqrt(2.0)*vte)
421 ye=y_electron(thetae,phi,psie,alpha)
422 write(*,fmt='("AFTER YE")')
423 c call exit
424
425 else if(imode.eq.2) then
426 c
427 c use Mike Sulzer's library here: alpha2 is angle off perp in degrees
428 c
429
430 freq=omega/(2.0*pi)
431 alpha2=abs(pi/2.0-alpha)*180.0/pi
432 c write(*,*) "ye: ", ye
433 call collision(densmks, te, freq, alpha2, ye)
434 c write(*,fmt='("AFTER COLLISION")')
435 c call exit
436 ye=ye*omega+cmplx(0.0,1.0)
437
438 end if
439 yed=ye+cmplx(0.0,dl)
440
441 p=(cabs(ye))**2*real(sum2)+cabs(sum1+cmplx(0.0,dl))**2*real(ye)
442 p=p/(cabs(yed+sum1))**2
443 spect1=p*2.0e0/(omega*pi)
444 write(*,*) "spect1:",spect1
445 return
446 end
447
448 subroutine acf2(wl, tau, te1, ti1, fi1, ven1, vin1, wi1,
449 & alpha1, dens1, bfld1, acf, nion1)
450 c
451 c computes autocorrelation function for given plasma parameters
452 c by integrating real spectrum
453 c tau in sec., alpha in radians, density in cgs, bfield in cgs
454 c scattering wavelength (wl) in meters
455 c
456 include 'fitter.h'
457
458 real wl,tau,te1,ti1(nion1),fi1(nion1),ven1,vin1(nion1),alpha1,
459 & dens1,bfld1,acf
460 real pi
461 integer nion1
462 integer wi1(nion1)
463 integer i,j,k,imode
464 common /mode/imode
465 c
466 write(*,*) "INITIAL acf:",wl,tau,te1,ti1,fi1,ven1,vin1,wi1,alpha1
467 write(*,*) "INITIAL acf:",dens1, bfld1, acf, nion1
468 c write(*,fmt='("INIT")')
469 pi=4.0*atan(1.0)
470 c
471 c copy arguments to common block
472 c
473 ak=2.0*pi/wl
474 imode=2
475 write(*,*) "imode:",imode
476
477 nion=nion1
478 alpha=alpha1
479 te=te1
480 ven=ven1
481 c write(*,fmt='("INIT2")')
482 do i=1,nion
483 c write(*,fmt='("INIT2.5")')
484 ti(i)=ti1(i)
485 fi(i)=fi1(i)
486 vin(i)=vin1(i)
487 wi(i)=wi1(i)
488 end do
489 c write(*,fmt='("INIT3")')
490 dens=dens1
491 bfld=bfld1
492
493 c write(*,*) wl,alpha1,bfld1,dens
494 c call exit
495 c write(*,fmt='("Before Gauss")')
496 call gaussq(tau,acf)
497
498 write(*,*) "FINAL acf:",acf
499
500 c write(*,fmt='("After Gauss")')
501 return
502 end
503
504 subroutine gaussq(tau,acf)
505 c
506 c Computes cosine or sine transform of given real function
507 c Uses quadpack, tau in sec.
508 c
509 real a,abserr,epsabs,acf,tau,work,chebmo
510 integer ier,integr,iwork,last,leniw,lenw,limit,limlst,
511 * lst,maxp1,neval
512 integer knorm,ksave,momcom,nrmom
513 dimension iwork(300),work(1625),chebmo(61,25)
514 external spect1
515 include 'fitter.h'
516 c
517 c write(*,*) "inside gaussq"
518 a = 0.0
519 b = 2.5e4*ak ! upper integration limit open to debate (was 1.5, now 2.5)
520 integr = 1
521 epsabs = 1.0e-4
522 limlst = 50
523 limit = 100
524 leniw = limit*2+limlst
525 maxp1 = 61
526 lenw = leniw*2+maxp1*25
527
528 c write(*,*) leniw,lenw
529
530 nrmom=0
531 ksave=0
532 momcom=0
533 write(*,*) "Before qc25f:",acf,imode
534 c much faster, more robust
535 c write(*,*) "acf_in: ",acf
536 call qc25f(spect1,a,b,tau,integr,nrmom,maxp1,ksave,acf,
537 & abserr,neval,resabs,resasc,momcom,chebmo)
538 c write(*,*) "acf_out: ",acf
539 c call qawf(spect1,a,tau,integr,epsabs,acf,abserr,neval,
540 c & ier,limlst,lst,leniw,maxp1,lenw,iwork,work)
541 write(*,*) "After qc25f:",acf
542 c call exit
543 return
544 end
@@ -0,0 +1,175
1 ! -*- f90 -*-
2 ! Note: the context of this file is case sensitive.
3
4 python module reader__user__routines
5 interface ! in : reader.c
6 subroutine collision_(densmks, te, freq, alpha2, ye)
7 intent(c) collision_ ! foo is a C function
8 intent(c) ! all foo arguments are
9 ! considered as C based
10 real intent(in) :: densmks(1) ! x is input array
11 real intent(in) :: te(1) ! y is output array
12 real intent(in) :: freq(1) ! x is input array
13 real intent(in) :: alpha2(1) ! y is output array
14 complex intent(in,out) :: ye(1) ! y is output array
15 end subroutine foo
16 end interface
17 end python module reader
18 python module lmdif__user__routines
19 interface lmdif_user_interface
20 subroutine fcn(m,n,x,fvec,iflag) ! in :fitacf_fit_short:lmdif1.f:lmdif:unknown_interface
21 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
22 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
23 real dimension(n) :: x
24 real dimension(m) :: fvec
25 integer :: iflag
26 real :: te
27 real dimension(10) :: ti
28 real dimension(10) :: fi
29 real :: ven
30 real dimension(10) :: vin
31 real :: alpha
32 real :: dens
33 real :: bfld
34 integer :: nion
35 integer dimension(10) :: wi
36 real :: ak
37 real dimension(100) :: tau
38 real dimension(100) :: rho
39 real dimension(100) :: sigma2
40 real dimension(10) :: params
41 integer dimension(10) :: ifit
42 real :: chisq
43 real dimension(10000) :: ev
44 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
45 common /fitter/ tau,rho,sigma2,params,ifit
46 common /errs/ chisq
47 common /trans/ ev
48 end subroutine fcn
49 end interface lmdif_user_interface
50 end python module lmdif__user__routines
51 python module fitacf_fit_short ! in
52 interface ! in :fitacf_fit_short
53 subroutine fit(wl,taup,rhop,covar,cinv,sigma2p,paramp,ebp,bfldp,alphap,densp,alt,time,ifitp,ist,nl) ! in :fitacf_fit_short:fitacf_fit_short.f
54 real intent(in):: wl
55 real dimension(nl),intent(in) :: taup
56 real dimension(nl),depend(nl),intent(in) :: rhop
57 real intent(in),dimension(nl,nl),depend(nl,nl) :: covar
58 real intent(in,out),dimension(nl,nl),depend(nl,nl) :: cinv
59 real intent(in,out),dimension(nl),depend(nl) :: sigma2p
60 real intent(in,out),dimension(10) :: paramp
61 real intent(out),dimension(10) :: ebp
62 real intent(in):: bfldp
63 real intent(in):: alphap
64 real intent(in):: densp
65 real intent(in):: alt
66 real intent(in):: time
67 integer intent(in),dimension(10) :: ifitp
68 integer intent(in,out):: ist
69 integer intent(in), check(len(taup)>=nl),depend(taup) :: nl=len(taup)
70 real :: te
71 real dimension(10) :: ti
72 real dimension(10) :: fi
73 real :: ven
74 real dimension(10) :: vin
75 real :: alpha
76 real :: dens
77 real :: bfld
78 integer :: nion
79 integer dimension(10) :: wi
80 real :: ak
81 integer :: imode
82 real dimension(100) :: tau
83 real dimension(100) :: rho
84 real dimension(100) :: sigma2
85 real dimension(10) :: params
86 integer dimension(10) :: ifit
87 real dimension(10000) :: ev
88 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
89 common /mode/ imode
90 common /fitter/ tau,rho,sigma2,params,ifit
91 common /trans/ ev
92 end subroutine fit
93 function spect1(omega) ! in :fitacf_fit_short:fitacf_fit_short.f
94 real :: omega
95 real :: te
96 real dimension(10) :: ti
97 real dimension(10) :: fi
98 real :: ven
99 real dimension(10) :: vin
100 real :: alpha
101 real :: dens
102 real :: bfld
103 integer :: nion
104 integer dimension(10) :: wi
105 real :: ak
106 integer :: imode
107 real :: spect1
108 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
109 common /mode/ imode
110 end function spect1
111 subroutine gaussq(tau,acf) ! in :fitacf_fit_short:fitacf_fit_short.f
112 real :: tau
113 real :: acf
114 real :: te
115 real dimension(10) :: ti
116 real dimension(10) :: fi
117 real :: ven
118 real dimension(10) :: vin
119 real :: alpha
120 real :: dens
121 real :: bfld
122 integer :: nion
123 integer dimension(10) :: wi
124 real :: ak
125 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
126 end subroutine gaussq
127 subroutine lmdif1(fcn,m,n,x,fvec,tol,info,iwa,wa,lwa) ! in :fitacf_fit_short:lmdif1.f
128 use lmdif__user__routines
129 external :: fcn
130 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
131 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
132 real dimension(n) :: x
133 real dimension(m) :: fvec
134 real :: tol
135 integer :: info
136 integer dimension(n),depend(n) :: iwa
137 real dimension(lwa) :: wa
138 integer, optional,check(len(wa)>=lwa),depend(wa) :: lwa=len(wa)
139 end subroutine lmdif1
140 subroutine lmdif(fcn,m,n,x,fvec,ftol,xtol,gtol,maxfev,epsfcn,diag,mode,factor,nprint,info,nfev,fjac,ldfjac,ipvt,qtf,wa1,wa2,wa3,wa4) ! in :fitacf_fit_short:lmdif1.f
141 use lmdif__user__routines
142 external :: fcn
143 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
144 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
145 real dimension(n) :: x
146 real dimension(m) :: fvec
147 real :: ftol
148 real :: xtol
149 real :: gtol
150 integer :: maxfev
151 real :: epsfcn
152 real dimension(n),depend(n) :: diag
153 integer :: mode
154 real :: factor
155 integer :: nprint
156 integer :: info
157 integer :: nfev
158 real dimension(ldfjac,n),depend(n) :: fjac
159 integer, optional,check(shape(fjac,0)==ldfjac),depend(fjac) :: ldfjac=shape(fjac,0)
160 integer dimension(n),depend(n) :: ipvt
161 real dimension(n),depend(n) :: qtf
162 real dimension(n),depend(n) :: wa1
163 real dimension(n),depend(n) :: wa2
164 real dimension(n),depend(n) :: wa3
165 real dimension(m),depend(m) :: wa4
166 end subroutine lmdif
167 function spmpar(i) ! in :fitacf_fit_short:lmdif1.f
168 integer :: i
169 real :: spmpar
170 end function spmpar
171 end interface
172 end python module fitacf_fit_short
173
174 ! This file was auto-generated with f2py (version:2).
175 ! See http://cens.ioc.ee/projects/f2py2e/
@@ -0,0 +1,7
1 c information needed for spectral computations
2
3 parameter(nimax=10)
4 integer nion,wi(nimax)
5 real te,ti(nimax),fi(nimax),ven,vin(nimax),alpha,dens,bfld,ak
6 common /spec/te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
7
@@ -0,0 +1,12
1 parameter(nl=16,nrange=75) ! was 95
2 parameter(nstate=5,npen=5)
3 real plag(nl,nrange+nl),plag_errors(nl,nrange+nl),sconst
4 real densp(nrange+nl),tep(nrange+nl),trp(nrange+nl),
5 & tip(nrange+nl),hfp(nrange+nl),hefp(nrange+nl),altp(nrange+nl),
6 & r0,dr
7 real edensp(nrange+nl),etep(nrange+nl),etip(nrange+nl),
8 & ehfp(nrange+nl),ehefp(nrange+nl)
9 common /fpa/densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
10 common /data/plag,plag_errors
11 common /sys/sconst
12 common /errs/edensp,etep,etip,ehfp,ehefp
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
This diff has been collapsed as it changes many lines, (765 lines changed) Show them Hide them
@@ -0,0 +1,765
1 ! -*- f90 -*-
2 ! Note: the context of this file is case sensitive.
3
4 python module fdjac2__user__routines
5 interface fdjac2_user_interface
6 subroutine fcn(m,n,x,wa,iflag) ! in :full_profile:lmdif1.f:fdjac2:unknown_interface
7 integer, optional,check(len(wa)>=m),depend(wa) :: m=len(wa)
8 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
9 real dimension(n) :: x
10 real dimension(m) :: wa
11 integer :: iflag
12 end subroutine fcn
13 end interface fdjac2_user_interface
14 end python module fdjac2__user__routines
15 python module lmdif__user__routines
16 interface lmdif_user_interface
17 subroutine fcn(m,n,x,fvec,iflag) ! in :full_profile:lmdif1.f:lmdif:unknown_interface
18 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
19 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
20 real dimension(n) :: x
21 real dimension(m) :: fvec
22 integer :: iflag
23 end subroutine fcn
24 end interface lmdif_user_interface
25 end python module lmdif__user__routines
26 python module full_profile ! in
27 interface ! in :full_profile
28 subroutine nnlswrap(power,sigma,temp,perror,ut,nhts) ! in :full_profile:full_profile.f
29 real dimension(nhts) :: power
30 real dimension(512) :: sigma
31 real dimension(512) :: temp
32 real dimension(512) :: perror
33 real :: ut
34 integer, optional,check(len(power)>=nhts),depend(power) :: nhts=len(power)
35 end subroutine nnlswrap
36 subroutine profile(acf_sum,acf_err,power,en,alag,thb2,bfm2,ote,ete,oti,eti,oph,eph,ophe,ephe,range2,ut,nhts,nacf,ibits,acf_avg,status) ! in :full_profile:full_profile.f
37 complex dimension(4,nhts,ibits) :: acf_sum
38 real dimension(nhts,ibits),depend(nhts,ibits) :: acf_err
39 real dimension(nhts),depend(nhts) :: power
40 real dimension(nhts),depend(nhts) :: en
41 real dimension(ibits),depend(ibits) :: alag
42 real dimension(nhts),depend(nhts) :: thb2
43 real dimension(nhts),depend(nhts) :: bfm2
44 real dimension(nacf),depend(nacf) :: ote
45 real dimension(nacf),depend(nacf) :: ete
46 real dimension(nacf),depend(nacf) :: oti
47 real dimension(nacf),depend(nacf) :: eti
48 real dimension(nacf),depend(nacf) :: oph
49 real dimension(nacf),depend(nacf) :: eph
50 real dimension(nacf),depend(nacf) :: ophe
51 real dimension(nacf),depend(nacf) :: ephe
52 real dimension(nhts),depend(nhts) :: range2
53 real :: ut
54 integer, optional,check(shape(acf_sum,1)==nhts),depend(acf_sum) :: nhts=shape(acf_sum,1)
55 integer :: nacf
56 integer, optional,check(shape(acf_sum,2)==ibits),depend(acf_sum) :: ibits=shape(acf_sum,2)
57 complex dimension(nhts,ibits),depend(nhts,ibits) :: acf_avg
58 real :: status
59 real :: chi2
60 real dimension(91) :: densp
61 real dimension(91) :: tep
62 real dimension(91) :: trp
63 real dimension(91) :: tip
64 real dimension(91) :: hfp
65 real dimension(91) :: hefp
66 real dimension(91) :: altp
67 real :: r0
68 real :: dr
69 real :: wl
70 real dimension(16,91) :: plag
71 real dimension(16,91) :: plag_errors
72 real :: sconst
73 real dimension(91) :: edensp
74 real dimension(91) :: etep
75 real dimension(91) :: etip
76 real dimension(91) :: ehfp
77 real dimension(91) :: ehefp
78 real dimension(85) :: bfld_prof
79 real dimension(85) :: alpha_prof
80 integer :: imode
81 real :: uttime
82 real dimension(34) :: ta
83 real dimension(30,5) :: bcoef
84 real :: te
85 real dimension(10) :: ti
86 real dimension(10) :: fi
87 real :: ven
88 real dimension(10) :: vin
89 real :: alpha
90 real :: dens
91 real :: bfld
92 integer :: nion
93 integer dimension(10) :: wi
94 real :: ak
95 common /chisq/ chi2
96 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
97 common /data/ plag,plag_errors
98 common /sys/ sconst
99 common /errs/ edensp,etep,etip,ehfp,ehefp
100 common /mag/ bfld_prof,alpha_prof
101 common /mode/ imode
102 common /utime/ uttime
103 common /spline/ ta,bcoef
104 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
105 end subroutine profile
106 subroutine grid ! in :full_profile:full_profile.f
107 real dimension(34) :: ta
108 real dimension(30,5) :: bcoef
109 real dimension(91) :: densp
110 real dimension(91) :: tep
111 real dimension(91) :: trp
112 real dimension(91) :: tip
113 real dimension(91) :: hfp
114 real dimension(91) :: hefp
115 real dimension(91) :: altp
116 real :: r0
117 real :: dr
118 real :: wl
119 real dimension(16,91) :: plag
120 real dimension(16,91) :: plag_errors
121 real :: sconst
122 real dimension(91) :: edensp
123 real dimension(91) :: etep
124 real dimension(91) :: etip
125 real dimension(91) :: ehfp
126 real dimension(91) :: ehefp
127 real :: te
128 real dimension(10) :: ti
129 real dimension(10) :: fi
130 real :: ven
131 real dimension(10) :: vin
132 real :: alpha
133 real :: dens
134 real :: bfld
135 integer :: nion
136 integer dimension(10) :: wi
137 real :: ak
138 real :: chi2
139 real :: uttime
140 common /spline/ ta,bcoef
141 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
142 common /data/ plag,plag_errors
143 common /sys/ sconst
144 common /errs/ edensp,etep,etip,ehfp,ehefp
145 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
146 common /chisq/ chi2
147 common /utime/ uttime
148 end subroutine grid
149 subroutine propagate(xe) ! in :full_profile:full_profile.f
150 real dimension(150) :: xe
151 real dimension(91) :: densp
152 real dimension(91) :: tep
153 real dimension(91) :: trp
154 real dimension(91) :: tip
155 real dimension(91) :: hfp
156 real dimension(91) :: hefp
157 real dimension(91) :: altp
158 real :: r0
159 real :: dr
160 real :: wl
161 real dimension(16,91) :: plag
162 real dimension(16,91) :: plag_errors
163 real :: sconst
164 real dimension(91) :: edensp
165 real dimension(91) :: etep
166 real dimension(91) :: etip
167 real dimension(91) :: ehfp
168 real dimension(91) :: ehefp
169 real dimension(34) :: ta
170 real dimension(30,5) :: bcoef
171 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
172 common /data/ plag,plag_errors
173 common /sys/ sconst
174 common /errs/ edensp,etep,etip,ehfp,ehefp
175 common /spline/ ta,bcoef
176 end subroutine propagate
177 subroutine fcn_lpreg(m,n,x,fvec,iflag) ! in :full_profile:full_profile.f
178 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
179 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
180 real dimension(n) :: x
181 real dimension(m) :: fvec
182 integer :: iflag
183 real dimension(34) :: ta
184 real dimension(30,5) :: bcoef
185 real dimension(91) :: densp
186 real dimension(91) :: tep
187 real dimension(91) :: trp
188 real dimension(91) :: tip
189 real dimension(91) :: hfp
190 real dimension(91) :: hefp
191 real dimension(91) :: altp
192 real :: r0
193 real :: dr
194 real :: wl
195 real dimension(16,91) :: plag
196 real dimension(16,91) :: plag_errors
197 real :: sconst
198 real dimension(91) :: edensp
199 real dimension(91) :: etep
200 real dimension(91) :: etip
201 real dimension(91) :: ehfp
202 real dimension(91) :: ehefp
203 real :: te
204 real dimension(10) :: ti
205 real dimension(10) :: fi
206 real :: ven
207 real dimension(10) :: vin
208 real :: alpha
209 real :: dens
210 real :: bfld
211 integer :: nion
212 integer dimension(10) :: wi
213 real :: ak
214 real :: chi2
215 real :: uttime
216 common /spline/ ta,bcoef
217 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
218 common /data/ plag,plag_errors
219 common /sys/ sconst
220 common /errs/ edensp,etep,etip,ehfp,ehefp
221 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
222 common /chisq/ chi2
223 common /utime/ uttime
224 end subroutine fcn_lpreg
225 subroutine get_scale(plag2) ! in :full_profile:full_profile.f
226 real dimension(16,75) :: plag2
227 real dimension(91) :: densp
228 real dimension(91) :: tep
229 real dimension(91) :: trp
230 real dimension(91) :: tip
231 real dimension(91) :: hfp
232 real dimension(91) :: hefp
233 real dimension(91) :: altp
234 real :: r0
235 real :: dr
236 real :: wl
237 real dimension(16,91) :: plag
238 real dimension(16,91) :: plag_errors
239 real :: sconst
240 real dimension(91) :: edensp
241 real dimension(91) :: etep
242 real dimension(91) :: etip
243 real dimension(91) :: ehfp
244 real dimension(91) :: ehefp
245 common /fpa/ densp,tep,trp,tip,hfp,hefp,altp,r0,dr,wl
246 common /data/ plag,plag_errors
247 common /sys/ sconst
248 common /errs/ edensp,etep,etip,ehfp,ehefp
249 end subroutine get_scale
250 subroutine lagp(plag,wl,r0,dr,nl,nrange) ! in :full_profile:lagp.f
251 real dimension(nl,nrange) :: plag
252 real :: wl
253 real :: r0
254 real :: dr
255 integer, optional,check(shape(plag,0)==nl),depend(plag) :: nl=shape(plag,0)
256 integer, optional,check(shape(plag,1)==nrange),depend(plag) :: nrange=shape(plag,1)
257 real :: te
258 real dimension(10) :: ti
259 real dimension(10) :: fi
260 real :: ven
261 real dimension(10) :: vin
262 real :: alpha
263 real :: dens
264 real :: bfld
265 integer :: nion
266 integer dimension(10) :: wi
267 real :: ak
268 real dimension(34) :: ta
269 real dimension(30,5) :: bcoef
270 real dimension(85) :: bfld_prof
271 real dimension(85) :: alpha_prof
272 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
273 common /spline/ ta,bcoef
274 common /mag/ bfld_prof,alpha_prof
275 end subroutine lagp
276 subroutine lagp_old(plag,wl,r0,dr,nl,nrange) ! in :full_profile:lagp.f
277 real dimension(nl,nrange) :: plag
278 real :: wl
279 real :: r0
280 real :: dr
281 integer, optional,check(shape(plag,0)==nl),depend(plag) :: nl=shape(plag,0)
282 integer, optional,check(shape(plag,1)==nrange),depend(plag) :: nrange=shape(plag,1)
283 real :: te
284 real dimension(10) :: ti
285 real dimension(10) :: fi
286 real :: ven
287 real dimension(10) :: vin
288 real :: alpha
289 real :: dens
290 real :: bfld
291 integer :: nion
292 integer dimension(10) :: wi
293 real :: ak
294 real dimension(34) :: ta
295 real dimension(30,5) :: bcoef
296 real dimension(85) :: bfld_prof
297 real dimension(85) :: alpha_prof
298 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
299 common /spline/ ta,bcoef
300 common /mag/ bfld_prof,alpha_prof
301 end subroutine lagp_old
302 function atanh(x) ! in :full_profile:lagp.f
303 real :: x
304 real :: atanh
305 end function atanh
306 subroutine get_spline(alt,dens,te,ti,hf,hef) ! in :full_profile:lagp.f
307 real :: alt
308 real :: dens
309 real :: te
310 real :: ti
311 real :: hf
312 real :: hef
313 real dimension(34) :: ta
314 real dimension(30,5) :: bcoef
315 common /spline/ ta,bcoef
316 end subroutine get_spline
317 function bvalue(t,bcoef,n,k,x,jderiv) ! in :full_profile:lagp.f
318 real dimension(n+k),depend(n,k) :: t
319 real dimension(n) :: bcoef
320 integer, optional,check(len(bcoef)>=n),depend(bcoef) :: n=len(bcoef)
321 integer :: k
322 real :: x
323 integer :: jderiv
324 real :: bvalue
325 end function bvalue
326 subroutine interv(xt,lxt,x,left,mflag) ! in :full_profile:lagp.f
327 real dimension(lxt) :: xt
328 integer, optional,check(len(xt)>=lxt),depend(xt) :: lxt=len(xt)
329 real :: x
330 integer :: left
331 integer :: mflag
332 end subroutine interv
333 subroutine lmdif1(fcn,m,n,x,fvec,tol,info,iwa,wa,lwa) ! in :full_profile:lmdif1.f
334 use lmdif__user__routines
335 external fcn
336 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
337 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
338 real dimension(n) :: x
339 real dimension(m) :: fvec
340 real :: tol
341 integer :: info
342 integer dimension(n),depend(n) :: iwa
343 real dimension(lwa) :: wa
344 integer, optional,check(len(wa)>=lwa),depend(wa) :: lwa=len(wa)
345 end subroutine lmdif1
346 function enorm(n,x) ! in :full_profile:lmdif1.f
347 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
348 real dimension(n) :: x
349 real :: enorm
350 end function enorm
351 subroutine fdjac2(fcn,m,n,x,fvec,fjac,ldfjac,iflag,epsfcn,wa) ! in :full_profile:lmdif1.f
352 use fdjac2__user__routines
353 external fcn
354 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
355 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
356 real dimension(n) :: x
357 real dimension(m) :: fvec
358 real dimension(ldfjac,n),depend(n) :: fjac
359 integer, optional,check(shape(fjac,0)==ldfjac),depend(fjac) :: ldfjac=shape(fjac,0)
360 integer :: iflag
361 real :: epsfcn
362 real dimension(m),depend(m) :: wa
363 end subroutine fdjac2
364 subroutine lmdif(fcn,m,n,x,fvec,ftol,xtol,gtol,maxfev,epsfcn,diag,mode,factor,nprint,info,nfev,fjac,ldfjac,ipvt,qtf,wa1,wa2,wa3,wa4) ! in :full_profile:lmdif1.f
365 use lmdif__user__routines
366 external fcn
367 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
368 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
369 real dimension(n) :: x
370 real dimension(m) :: fvec
371 real :: ftol
372 real :: xtol
373 real :: gtol
374 integer :: maxfev
375 real :: epsfcn
376 real dimension(n),depend(n) :: diag
377 integer :: mode
378 real :: factor
379 integer :: nprint
380 integer :: info
381 integer :: nfev
382 real dimension(ldfjac,n),depend(n) :: fjac
383 integer, optional,check(shape(fjac,0)==ldfjac),depend(fjac) :: ldfjac=shape(fjac,0)
384 integer dimension(n),depend(n) :: ipvt
385 real dimension(n),depend(n) :: qtf
386 real dimension(n),depend(n) :: wa1
387 real dimension(n),depend(n) :: wa2
388 real dimension(n),depend(n) :: wa3
389 real dimension(m),depend(m) :: wa4
390 end subroutine lmdif
391 subroutine lmpar(n,r,ldr,ipvt,diag,qtb,delta,par,x,sdiag,wa1,wa2) ! in :full_profile:lmdif1.f
392 integer, optional,check(shape(r,1)==n),depend(r) :: n=shape(r,1)
393 real dimension(ldr,n) :: r
394 integer, optional,check(shape(r,0)==ldr),depend(r) :: ldr=shape(r,0)
395 integer dimension(n),depend(n) :: ipvt
396 real dimension(n),depend(n) :: diag
397 real dimension(n),depend(n) :: qtb
398 real :: delta
399 real :: par
400 real dimension(n),depend(n) :: x
401 real dimension(n),depend(n) :: sdiag
402 real dimension(n),depend(n) :: wa1
403 real dimension(n),depend(n) :: wa2
404 end subroutine lmpar
405 subroutine qrfac(m,n,a,lda,pivot,ipvt,lipvt,rdiag,acnorm,wa) ! in :full_profile:lmdif1.f
406 integer :: m
407 integer, optional,check(shape(a,1)==n),depend(a) :: n=shape(a,1)
408 real dimension(lda,n) :: a
409 integer, optional,check(shape(a,0)==lda),depend(a) :: lda=shape(a,0)
410 logical :: pivot
411 integer dimension(lipvt) :: ipvt
412 integer, optional,check(len(ipvt)>=lipvt),depend(ipvt) :: lipvt=len(ipvt)
413 real dimension(n),depend(n) :: rdiag
414 real dimension(n),depend(n) :: acnorm
415 real dimension(n),depend(n) :: wa
416 end subroutine qrfac
417 subroutine qrsolv(n,r,ldr,ipvt,diag,qtb,x,sdiag,wa) ! in :full_profile:lmdif1.f
418 integer, optional,check(shape(r,1)==n),depend(r) :: n=shape(r,1)
419 real dimension(ldr,n) :: r
420 integer, optional,check(shape(r,0)==ldr),depend(r) :: ldr=shape(r,0)
421 integer dimension(n),depend(n) :: ipvt
422 real dimension(n),depend(n) :: diag
423 real dimension(n),depend(n) :: qtb
424 real dimension(n),depend(n) :: x
425 real dimension(n),depend(n) :: sdiag
426 real dimension(n),depend(n) :: wa
427 end subroutine qrsolv
428 function spmpar(i) ! in :full_profile:lmdif1.f
429 integer :: i
430 real :: spmpar
431 end function spmpar
432 subroutine bndacc(g,mdg,nb,ip,ir,mt,jt) ! in :full_profile:nnls.f
433 double precision dimension(mdg,*) :: g
434 integer, optional,check(shape(g,0)==mdg),depend(g) :: mdg=shape(g,0)
435 integer :: nb
436 integer :: ip
437 integer :: ir
438 integer :: mt
439 integer :: jt
440 end subroutine bndacc
441 subroutine bndsol(mode,g,mdg,nb,ip,ir,x,n,rnorm) ! in :full_profile:nnls.f
442 integer :: mode
443 double precision dimension(mdg,*) :: g
444 integer, optional,check(shape(g,0)==mdg),depend(g) :: mdg=shape(g,0)
445 integer :: nb
446 integer :: ip
447 integer :: ir
448 double precision dimension(n) :: x
449 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
450 double precision :: rnorm
451 end subroutine bndsol
452 function diff(x,y) ! in :full_profile:nnls.f
453 double precision :: x
454 double precision :: y
455 double precision :: diff
456 end function diff
457 subroutine g1(a,b,cterm,sterm,sig) ! in :full_profile:nnls.f
458 double precision :: a
459 double precision :: b
460 double precision :: cterm
461 double precision :: sterm
462 double precision :: sig
463 end subroutine g1
464 subroutine g2(cterm,sterm,x,y) ! in :full_profile:nnls.f
465 double precision :: cterm
466 double precision :: sterm
467 double precision :: x
468 double precision :: y
469 end subroutine g2
470 function gen2(anoise) ! in :full_profile:nnls.f
471 double precision :: anoise
472 double precision :: gen2
473 end function gen2
474 subroutine h12(mode,lpivot,l1,m,u,iue,up,c,ice,icv,ncv) ! in :full_profile:nnls.f
475 integer :: mode
476 integer :: lpivot
477 integer :: l1
478 integer :: m
479 double precision dimension(iue,*) :: u
480 integer, optional,check(shape(u,0)==iue),depend(u) :: iue=shape(u,0)
481 double precision :: up
482 double precision dimension(*) :: c
483 integer :: ice
484 integer :: icv
485 integer :: ncv
486 end subroutine h12
487 subroutine hfti(a,mda,m,n,b,mdb,nb,tau,krank,rnorm,h,g,ip) ! in :full_profile:nnls.f
488 double precision dimension(mda,*) :: a
489 integer, optional,check(shape(a,0)==mda),depend(a) :: mda=shape(a,0)
490 integer :: m
491 integer :: n
492 double precision dimension(mdb,*) :: b
493 integer, optional,check(shape(b,0)==mdb),depend(b) :: mdb=shape(b,0)
494 integer :: nb
495 double precision :: tau
496 integer :: krank
497 double precision dimension(*) :: rnorm
498 double precision dimension(*) :: h
499 double precision dimension(*) :: g
500 integer dimension(*) :: ip
501 end subroutine hfti
502 subroutine ldp(g,mdg,m,n,h,x,xnorm,w,index_bn,mode) ! in :full_profile:nnls.f
503 double precision dimension(mdg,*) :: g
504 integer, optional,check(shape(g,0)==mdg),depend(g) :: mdg=shape(g,0)
505 integer :: m
506 integer :: n
507 double precision dimension(*) :: h
508 double precision dimension(*) :: x
509 double precision :: xnorm
510 double precision dimension(*) :: w
511 integer dimension(*) :: index_bn
512 integer :: mode
513 end subroutine ldp
514 subroutine mfeout(a,mda,m,n,names,mode,unit,width) ! in :full_profile:nnls.f
515 double precision dimension(mda,n) :: a
516 integer, optional,check(shape(a,0)==mda),depend(a) :: mda=shape(a,0)
517 integer, optional,check(shape(names,0)==m),depend(names) :: m=shape(names,0)
518 integer, optional,check(shape(a,1)==n),depend(a) :: n=shape(a,1)
519 character dimension(m,(*)) :: names
520 integer :: mode
521 integer :: unit
522 integer :: width
523 end subroutine mfeout
524 subroutine nnls(a,mda,m,n,b,x,rnorm,w,zz,index_bn,mode) ! in :full_profile:nnls.f
525 double precision dimension(mda,*) :: a
526 integer, optional,check(shape(a,0)==mda),depend(a) :: mda=shape(a,0)
527 integer :: m
528 integer :: n
529 double precision dimension(*) :: b
530 double precision dimension(*) :: x
531 double precision :: rnorm
532 double precision dimension(*) :: w
533 double precision dimension(*) :: zz
534 integer dimension(*) :: index_bn
535 integer :: mode
536 end subroutine nnls
537 subroutine qrbd(ipass,q,e,nn,v,mdv,nrv,c,mdc,ncc) ! in :full_profile:nnls.f
538 integer :: ipass
539 double precision dimension(*) :: q
540 double precision dimension(*) :: e
541 integer :: nn
542 double precision dimension(mdv,*) :: v
543 integer, optional,check(shape(v,0)==mdv),depend(v) :: mdv=shape(v,0)
544 integer :: nrv
545 double precision dimension(mdc,*) :: c
546 integer, optional,check(shape(c,0)==mdc),depend(c) :: mdc=shape(c,0)
547 integer :: ncc
548 end subroutine qrbd
549 subroutine sva(a,mda,m,n,mdata,b,sing,kpvec,names,iscale,d,work) ! in :full_profile:nnls.f
550 double precision dimension(mda,n) :: a
551 integer, optional,check(shape(a,0)==mda),depend(a) :: mda=shape(a,0)
552 integer, optional,check(len(b)>=m),depend(b) :: m=len(b)
553 integer, optional,check(shape(a,1)==n),depend(a) :: n=shape(a,1)
554 integer :: mdata
555 double precision dimension(m) :: b
556 double precision dimension(n),depend(n) :: sing
557 integer dimension(4) :: kpvec
558 character dimension(n,(*)),intent(c),depend(n) :: names
559 integer :: iscale
560 double precision dimension(n),depend(n) :: d
561 double precision dimension(2 * n),depend(n) :: work
562 end subroutine sva
563 subroutine svdrs(a,mda,m1,n1,b,mdb,nb,s,work) ! in :full_profile:nnls.f
564 double precision dimension(mda,*) :: a
565 integer, optional,check(shape(a,0)==mda),depend(a) :: mda=shape(a,0)
566 integer :: m1
567 integer, optional,check(shape(work,0)==n1),depend(work) :: n1=shape(work,0)
568 double precision dimension(mdb,*) :: b
569 integer, optional,check(shape(b,0)==mdb),depend(b) :: mdb=shape(b,0)
570 integer :: nb
571 double precision dimension(*) :: s
572 double precision dimension(n1,2) :: work
573 end subroutine svdrs
574 subroutine guess(acf,tau,npts,zero,amin,te,tr) ! in :full_profile:fitacf.f
575 real dimension(npts) :: acf
576 real dimension(npts),depend(npts) :: tau
577 integer, optional,check(len(acf)>=npts),depend(acf) :: npts=len(acf)
578 real :: zero
579 real :: amin
580 real :: te
581 real :: tr
582 end subroutine guess
583 subroutine parab1(x,y,a,b,c) ! in :full_profile:fitacf.f
584 real dimension(3) :: x
585 real dimension(3) :: y
586 real :: a
587 real :: b
588 real :: c
589 end subroutine parab1
590 function cdtr1(depth) ! in :full_profile:fitacf.f
591 real :: depth
592 real :: cdtr1
593 end function cdtr1
594 function czte1(zlag,tr) ! in :full_profile:fitacf.f
595 real :: zlag
596 real :: tr
597 real :: czte1
598 end function czte1
599 subroutine fit(wl,taup,rhop,covar,cinv,sigma2p,paramp,ebp,bfldp,alphap,densp,alt,time,nl,ifitp,ist) ! in :full_profile:fitacf.f
600 real :: wl
601 real dimension(nl) :: taup
602 real dimension(nl),depend(nl) :: rhop
603 real dimension(nl,nl),depend(nl,nl) :: covar
604 real dimension(nl,nl),depend(nl,nl) :: cinv
605 real dimension(nl),depend(nl) :: sigma2p
606 real dimension(10) :: paramp
607 real dimension(10) :: ebp
608 real :: bfldp
609 real :: alphap
610 real :: densp
611 real :: alt
612 real :: time
613 integer, optional,check(len(taup)>=nl),depend(taup) :: nl=len(taup)
614 integer dimension(10) :: ifitp
615 integer :: ist
616 real :: te
617 real dimension(10) :: ti
618 real dimension(10) :: fi
619 real :: ven
620 real dimension(10) :: vin
621 real :: alpha
622 real :: dens
623 real :: bfld
624 integer :: nion
625 integer dimension(10) :: wi
626 real :: ak
627 integer :: imode
628 real dimension(100) :: tau
629 real dimension(100) :: rho
630 real dimension(100) :: sigma2
631 real dimension(10) :: params
632 integer dimension(10) :: ifit
633 real dimension(10000) :: ev
634 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
635 common /mode/ imode
636 common /fitter/ tau,rho,sigma2,params,ifit
637 common /trans/ ev
638 end subroutine fit
639 subroutine fcn(m,n,x,fvec,iflag) ! in :full_profile:fitacf.f
640 integer, optional,check(len(fvec)>=m),depend(fvec) :: m=len(fvec)
641 integer, optional,check(len(x)>=n),depend(x) :: n=len(x)
642 real dimension(n) :: x
643 real dimension(m) :: fvec
644 integer :: iflag
645 real :: te
646 real dimension(10) :: ti
647 real dimension(10) :: fi
648 real :: ven
649 real dimension(10) :: vin
650 real :: alpha
651 real :: dens
652 real :: bfld
653 integer :: nion
654 integer dimension(10) :: wi
655 real :: ak
656 real dimension(100) :: tau
657 real dimension(100) :: rho
658 real dimension(100) :: sigma2
659 real dimension(10) :: params
660 integer dimension(10) :: ifit
661 real :: chisq
662 real dimension(10000) :: ev
663 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
664 common /fitter/ tau,rho,sigma2,params,ifit
665 common /errs/ chisq
666 common /trans/ ev
667 end subroutine fcn
668 function cj_ion(theta,psi) ! in :full_profile:fitacf.f
669 real :: theta
670 real :: psi
671 complex :: cj_ion
672 end function cj_ion
673 function cj_electron(theta,phi,psi,alpha) ! in :full_profile:fitacf.f
674 real :: theta
675 real :: phi
676 real :: psi
677 real :: alpha
678 integer :: imode
679 complex :: cj_electron
680 common /mode/ imode
681 end function cj_electron
682 function y_ion(theta,psi) ! in :full_profile:fitacf.f
683 real :: theta
684 real :: psi
685 complex :: y_ion
686 end function y_ion
687 function y_electron(theta,phi,psi,alpha) ! in :full_profile:fitacf.f
688 real :: theta
689 real :: phi
690 real :: psi
691 real :: alpha
692 complex :: y_electron
693 end function y_electron
694 function spect1(omega) ! in :full_profile:fitacf.f
695 real :: omega
696 real :: te
697 real dimension(10) :: ti
698 real dimension(10) :: fi
699 real :: ven
700 real dimension(10) :: vin
701 real :: alpha
702 real :: dens
703 real :: bfld
704 integer :: nion
705 integer dimension(10) :: wi
706 real :: ak
707 integer :: imode
708 real :: spect1
709 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
710 common /mode/ imode
711 end function spect1
712 subroutine acf2(wl,tau,te1,ti1,fi1,ven1,vin1,wi1,nion1,alpha1,dens1,bfld1,acf) ! in :full_profile:fitacf.f
713 real :: wl
714 real :: tau
715 real :: te1
716 real dimension(nion1) :: ti1
717 real dimension(nion1),depend(nion1) :: fi1
718 real :: ven1
719 real dimension(nion1),depend(nion1) :: vin1
720 integer dimension(nion1),depend(nion1) :: wi1
721 integer, optional,check(len(ti1)>=nion1),depend(ti1) :: nion1=len(ti1)
722 real :: alpha1
723 real :: dens1
724 real :: bfld1
725 real :: acf
726 real :: te
727 real dimension(10) :: ti
728 real dimension(10) :: fi
729 real :: ven
730 real dimension(10) :: vin
731 real :: alpha
732 real :: dens
733 real :: bfld
734 integer :: nion
735 integer dimension(10) :: wi
736 real :: ak
737 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
738 end subroutine acf2
739 subroutine gaussq(tau,acf) ! in :full_profile:fitacf.f
740 real :: tau
741 real :: acf
742 real :: te
743 real dimension(10) :: ti
744 real dimension(10) :: fi
745 real :: ven
746 real dimension(10) :: vin
747 real :: alpha
748 real :: dens
749 real :: bfld
750 integer :: nion
751 integer dimension(10) :: wi
752 real :: ak
753 common /spec/ te,ti,fi,ven,vin,alpha,dens,bfld,nion,wi,ak
754 end subroutine gaussq
755 function r1mach(i) ! in :full_profile:r1mach.f
756 integer :: i
757 integer :: cray1
758 real :: r1mach
759 common /d8mach/ cray1
760 end function r1mach
761 end interface
762 end python module full_profile
763
764 ! This file was auto-generated with f2py (version:2).
765 ! See http://cens.ioc.ee/projects/f2py2e/
This diff has been collapsed as it changes many lines, (646 lines changed) Show them Hide them
@@ -0,0 +1,646
1 c
2 c $Id: full_profile.f,v 1.3 2013/09/12 19:11:48 daveh Exp daveh $ DLH
3 c
4
5 subroutine profile(acf_sum,acf_err,power,en,alag,thb2,bfm2,
6 & ote,ete,oti,eti,oph,eph,ophe,ephe,range2,ut,
7 & NHTS,NACF,IBITS,acf_avg_real,status)
8 c
9 complex acf_sum(4,NHTS,IBITS)
10 real acf_avg_real(NHTS,IBITS)
11 real acf_err(NHTS,IBITS),range2(NHTS)
12 real power(NHTS),en(NHTS),alag(IBITS),thb2(NHTS),bfm2(NHTS)
13 real ote(NHTS),ete(NHTS),oti(NHTS),eti(NHTS),oph(NHTS),eph(NHTS)
14 real ophe(NHTS),ephe(NHTS)
15 integer NHTS,NACF,IBITS
16 real status(1)
17 common /chisq/chi2
18 c
19 c arguments above, internal variables below: have to make these match
20 c
21 include 'fpa.h'
22 include 'bfield.h'
23 c
24 common /mode/imode
25 common /utime/uttime
26 c
27 include 'spline.h'
28 include 'fitter.h'
29 c
30 c functions to minimize are all lagged profiles plus penalties
31 c variables to minimize them with are all spline values
32 c
33
34 parameter(nfun=nrange*nl+nstate*(nspline-2)+npen)
35 parameter(nvar=nspline*nstate)
36 parameter(lwa=nfun*nvar+nstate*nvar+nfun)
37 real fvec(nfun),wa(lwa),xe(nvar)
38 integer iwa(nvar)
39 c integer lwa
40 c
41 external fcn_lpreg
42 c
43 pi=4.0*atan(1.0)
44 uttime=ut
45 c write(*,*) "ut: ",ut
46 c write(*,*) "NHTS: ",NHTS
47 c write(*,*) "NACF: ",NACF
48 c write(*,*) "IBITS: ",IBITS
49 c call exit
50 c write(*,*) "acf_sum: ", acf_sum(1,111,11)
51 c write(*,*) "Starting Profile Process"
52 c set up basic physical parameters
53 c dens=639747.44
54 c dens=509664.781
55 c te=3971.98926
56 c write(*,*) "acf_sum: ", acf_sum(1,31,2)
57 c call exit
58
59 wl=3.0
60 ak=2.0*pi/wl
61
62 c analysis starts at gate 15
63
64 ir0=15
65
66 r0=range2(ir0)
67 dr=range2(ir0+1)-range2(ir0)
68
69 do i=1,nfield ! nrange+10 memory hole
70 bfld_prof(i)=bfm2(i+ir0-1)
71 alpha_prof(i)=thb2(i+ir0-1)*pi/180.0
72 end do
73
74 do i=1,nrange+nl ! careful ... check nfield compared to nrange+nl
75 densp(i)=en(i+ir0-1)
76 do j=1,nl
77 c write(*,*) acf_sum(1,i+ir0-1,j)
78 plag(j,i)=acf_sum(1,i+ir0-1,j)
79
80 plag_errors(j,i)=acf_err(i+ir0-1,j)
81 c write(*,*) j,i,plag_errors(j,i)
82 end do
83 end do
84 c call exit
85 c set some fitting conventions
86 c write(*,*) "plag: ",plag(2,2)
87 imode=2
88 nion=3
89
90 ven=0.0
91 do i=1,nion
92 vin(i)=0.0
93 end do
94 wi(1)=16
95 wi(2)=1
96 wi(3)=4
97
98 c system constant
99
100 sconst=1.0
101
102 c set up splines: DLH need to modify for different nu. splines
103
104 do i=1,nspline+norder
105 ta(i)=r0+float(i-1-2)*delr ! 2-knot offset for 4th order spline
106 end do
107
108 c initial guess - set density, He+ profiles here
109
110 do i=1,nspline ! DLH modify for different no. splines
111 bcoef(i,1)=log10(abs(densp(1+int(float(i-1)*delr/dr))))
112 ! need good guess for density profile
113 tmp=0.03
114 bcoef(i,5)=atanh(2.0*tmp-1.0) ! not so critical
115 end do
116
117 c write(*,*) bcoef
118 c call exit
119
120 c grid search for other params to help set initial guess
121 c could include Ne, He+ in grid search too
122 c write(*,fmt='("before GRID")')
123 call grid()
124 c write(*,fmt='("After GRID")')
125 write(*,*) "chi2 after grid:",chi2
126 c write(*,fmt='("Just After chi")')
127 c call exit
128 if(chi2.le.3.5) then
129
130 c write(*,fmt='("After chi")')
131 c call exit
132 tol=1.0e-9
133
134 c call lmdif1(fcn_lpreg,nfun-nl*nl,nvar,bcoef,fvec,tol,
135 c & info,iwa,wa,lwa)
136
137 info=0
138 m=nfun-nl*nl
139 n=nvar
140 zero=0.0
141 factor=1.0e-2 ! rather small initial step size
142
143 maxfev = 200*(n + 1)
144 ftol = tol
145 xtol = tol
146 gtol = zero
147 epsfcn = zero
148 mode = 1
149 nprint = 0
150 mp5n = m + 5*n
151 c write(*,*) wa(5*n+1)
152 c call exit
153 write(*,*) "before densp:", densp(1),bcoef(1,2)
154 call lmdif(fcn_lpreg,m,n,bcoef,fvec,ftol,xtol,gtol,
155 & maxfev,epsfcn,wa(1),
156 * mode,factor,nprint,info,nfev,wa(mp5n+1),m,iwa,
157 * wa(n+1),wa(2*n+1),wa(3*n+1),wa(4*n+1),wa(5*n+1))
158
159 c write(*,fmt='("After lmdif")')
160 c write(*,*) info
161 write(*,*) "densp_after:", densp(1),bcoef(1,2)
162 c call exit
163
164 c
165 c error handling; evalate solution point first, then Jacobian
166 c
167 iflag=0
168 c write(*,fmt='("before fcn_lpreg")')
169 call fcn_lpreg(m,n,bcoef,fvec,iflag) ! common sys constant throughout
170 c write(*,fmt='("After fcn_lpreg")')
171 nm1=n*m+1
172 call fdjac2(fcn_lpreg,m,n,bcoef,fvec,wa,m,iflag,epsfcn,wa(nm1))
173
174 do i=1,n
175 err=0.0
176 xe(i)=0.0
177 do j=1,m-npen
178 c do j=2+(nspline-2)*nstate,m-npen ! skip equations unrelated to data
179 err=err+MIN(wa(j+(i-1)*m)**2,10.0)
180 end do
181 if(err.gt.0.0) xe(i)=sqrt(err**(-1))
182 end do
183
184 call propagate(xe)
185
186 do i=1,nrange
187 ete(i+ir0)=etep(i)
188 eti(i+ir0)=etip(i)
189 eph(i+ir0)=ehfp(i)
190 ephe(i+ir0)=ehefp(i)
191 end do
192
193 c
194 c output parameters
195 c
196
197 do i=1,nrange
198 altp(i)=r0+dr*float(i-1)
199 call get_spline(altp(i),densp(i),tep(i),tip(i),
200 & hfp(i),hefp(i))
201 ote(i+ir0)=MAX(tep(i),tip(i))
202 oti(i+ir0)=tip(i)
203 oph(i+ir0)=hfp(i)
204 ophe(i+ir0)=hefp(i)
205 end do
206 c
207 c theoretical lag products and other quantities for plotting
208 c
209
210 call lagp(plag,wl,r0,dr,nl,nrange)
211 write(*,*) "plag_plag",REAL(plag(12,58))
212 write(*,*) "plag_plag",REAL(plag(12,72))
213 c write(*,*) "plag_plag",AIMAG(plag(12,72))
214 do i=1,nrange !
215 en(i+ir0-1)=densp(i)
216 do j=1,nl
217 acf_avg_real(i+ir0-1,j)=REAL(plag(j,i))
218 c acf_avg_imag(i+ir0-1,j)=AIMAG(acf_sum(1,i+ir0-1,j))
219 end do
220 end do
221 write(*,*) "acf",acf_avg_real(72,12)
222 c write(*,*) "acf",acf_avg_imag(72,12)
223 end if
224 status(1)=chi2
225
226 c write(*,*) "status: ",status
227
228 5 return
229 end
230
231
232 subroutine grid()
233 c
234 c minimize chi-squared statistic through grid search
235 c just optmize temperature and H+ profiles
236 c
237 include 'spline.h'
238 include 'fpa.h'
239 include 'fitter.h'
240 c
241 real plag2(nl,nrange)
242 real fvec(nrange*nl)
243 real chmin,uttime
244 integer lmin,mmin,nmin
245 integer iloop,iskip,l1,l2,m1,m2,n1,n2
246 c
247 common /chisq/chi2
248 common /utime/uttime
249 c
250 chmin=1.0e10
251
252 do i=1,nrange
253 altp(i)=r0+dr*float(i-1)
254 end do
255
256 goto 3
257 call newplot(.true.)
258 call graphinit()
259 call erase
260
261 call setorigin(6.5,3.5,90.0)
262 call linearaxis("L",altp(1),altp(nrange),1.5,5.0,2,0.0,50.0)
263 call linearaxis("B",0.0,5000.0,1.5,5.0,2,0.0,500.0)
264 call drawaxis("T",2)
265 call drawaxis("R",2)
266 call labelaxis("B","(f5.0)",.1,2,0.0,2000.0)
267 call labelaxis("L","(f5.0)",.1,2,0.0,100.0)
268 call ctitle("L","Altitude (km)",.125,2)
269 call ctitle("B","T\\se\\u (K)",.125,2)
270
271 call setorigin(6.5,7.5,90.0)
272 call linearaxis("L",altp(1),altp(nrange),1.5,5.0,2,0.0,50.0)
273 call linearaxis("B",0.0,1.0,1.5,5.0,2,0.0,0.25)
274 call drawaxis("T",2)
275 call drawaxis("R",2)
276 call labelaxis("B","(f5.1)",.1,2,0.0,0.5)
277 call labelaxis("L","(f5.0)",.1,2,0.0,100.0)
278 call ctitle("B","H\\S+\\U frac.",.125,2)
279
280 3 continue
281
282 do iloop=1,2
283 if(iloop.eq.1) then
284 l1=2
285 l2=26
286 m1=2
287 m2=10
288 n1=2
289 n2=16
290 iskip=2
291 else
292 l1=lmin-2
293 l2=lmin+2
294 m1=mmin-2
295 m2=mmin+2
296 n1=nmin-2
297 n2=nmin+2
298 iskip=1
299 end if
300
301 do l=l1,l2,iskip ! temperature search
302 do k=1,nspline
303
304 tmp=-2.5+float(k-1)*float(l-1)*1.3e-2
305 c if(uttime.ge.2.0.and.uttime.lt.10.0) then
306 c tmp=-1.5+float(k-1)*float(l-1)*8.0e-3
307 c else
308 c tmp = -0.75 -0.2*float(l) + 3.5e-1*float(k-1) ! was 3.5
309 c tmp=-1.5 + 3.0e-2*float(l-1)
310 c & *(float(k-1)**3.0/float(nspline-1)**2.0)
311 c end if
312
313 bcoef(k,2)=tmp
314 if(uttime.ge.10.0.and.uttime.le.14.0) then ! was 10.5
315 bcoef(k,3)=tmp-0.1
316 else
317 bcoef(k,3)=tmp-0.02
318 end if
319 end do
320
321 do m=m1,m2,iskip ! H+ scale height search DLH 2015
322
323 do n=n1,n2,iskip ! H+ crossing height search
324
325 do k=1,nspline
326 tmp=float(k-nspline/4-n)*(float(m-1)*5.0e-2+0.1)
327 bcoef(k,4)=tmp
328 end do
329
330 do i=1,nrange
331 call get_spline(altp(i),densp(i),tep(i),tip(i),
332 & hfp(i),hefp(i))
333
334 end do
335
336 goto 4
337 call setorigin(6.5,3.5,90.0)
338 call setscale("L",altp(1),altp(nrange),1)
339 call setscale("B",0.0,5000.0,1)
340 call setclip("L",250.0,1500.0)
341 call plotline("B,L",tep,altp,nrange,2,0)
342
343 if(l.eq.1) then
344 call setorigin(6.5,7.5,90.0)
345 call setscale("L",altp(1),altp(nrange),1)
346 call setscale("B",0.0,1.0,1)
347 call setclip("L",250.0,1500.0)
348 call plotline("B,L",hfp,altp,nrange,2,0)
349 end if
350 4 continue
351
352 c calculate chi-2
353 c write(*,*) "wl: ",wl, "r0: ",r0
354 c write(*,*) "dr: ",dr,"nl: ",n,"nrange", nrange
355 c write(*,*) "before lagp inside grid"
356 call lagp(plag2,wl,r0,dr,nl,nrange)
357 c write(*,*) "plag2: ",plag2(12,72)
358 c write(*,*) "plag2: ",plag2
359 c call exit
360 call get_scale(plag2)
361 c write(*,*) "plag: ",plag(13,70)
362 c write(*,*) "plag2: ",plag2(13,70)
363 c write(*,*) "plag_errors: ",plag_errors(13,70)
364 c write(*,*) "sconst: ",sconst
365 c call exit
366 c write(*,*) "cal chi2.1: ", chi2
367 c call exit
368 chi2=0.0
369 ipt=0
370 c write(*,*) "cal chi2.1: ", chi2
371 do j=nl+1,nrange
372 do i=1,nl
373 ipt=ipt+1
374 fvec(ipt)=(plag(i,j)-plag2(i,j)*sconst)/
375 & plag_errors(i,j)
376 c write(*,*) j,i,plag(i,j),plag2(i,j),
377 c & plag_errors(i,j),sconst
378 c call exit
379 chi2=chi2+fvec(ipt)**2
380 c write(*,*) "cal chi2.1: ", chi2
381 end do
382 c call exit
383 end do
384 c write(*,*) "cal chi2.2: ", chi2
385 c call exit
386 chi2=sqrt(chi2/float(nrange*nl))!+float(l)*0.005 ! DLH??
387 if(chi2.lt.chmin) then
388 lmin=l
389 mmin=m
390 nmin=n
391 chmin=chi2
392 end if
393
394 write(*,*) "A",l,m,n,chi2,chmin,"B" ! best
395 c call exit
396 c write(*,fmt='("intermediate")')
397 end do
398 end do
399 end do
400
401 end do
402 c write(*,fmt='("befire flush")')
403 c call where()
404 write(22,*) lmin,mmin,nmin,chmin
405 call flush(22)
406 c write(*,fmt='("after flush")')
407 c best result here
408
409 do k=1,nspline
410 tmp=-2.5+float(k-1)*float(lmin-1)*1.3e-2
411 c if(uttime.ge.2.0.and.uttime.lt.10.0) then
412 c tmp=-1.5+float(k-1)*float(lmin-1)*8.0e-3
413 c else
414 c tmp = -0.75 -0.2*float(l) + 3.5e-1*float(k-1) ! was 3.5
415 c tmp=-1.5 + 3.0e-2*float(lmin-1) ! new family of temps
416 c & *(float(k-1)**3.0/float(nspline-1)**2.0)
417 c end if
418 bcoef(k,2)=tmp
419 if(uttime.ge.10.0.and.uttime.le.14.0) then ! was 10.5
420 bcoef(k,3)=tmp-0.1
421 else
422 bcoef(k,3)=tmp-0.02
423 end if
424 tmp=float(k-nspline/4-nmin)*(float(mmin-1)*5.0e-2+0.1)
425 bcoef(k,4)=tmp
426 end do
427
428 c reset system constant
429
430 do i=1,nrange
431 call get_spline(altp(i),densp(i),tep(i),tip(i),
432 & hfp(i),hefp(i))
433 end do
434 c write(*,fmt='("------------before lagp------------")')
435 c write(*,*) chi2
436 c call exit
437 call lagp(plag2,wl,r0,dr,nl,nrange)
438 c write(*,fmt='("after lagp")')
439 call get_scale(plag2)
440 c write(*,*) chi2
441 chi2=chmin
442 return
443 end
444
445 subroutine propagate(xe)
446 c
447 c propagate errors through splines
448 c
449 include 'fpa.h'
450 include 'spline.h'
451 parameter(nvar=nspline*nstate)
452 real xe(nvar)
453
454
455 do i=1,nrange
456
457 write(*,*) "densp:", densp(i),bcoef(1,2)
458 c call exit
459 c
460 edensp(i)=bvalue(ta,xe(1+0*nspline),nspline,norder,altp(i),0)
461 & *densp(i)*2.30
462 x=bvalue(ta,bcoef(1,2),nspline,norder,altp(i),0)
463 etep(i)=bvalue(ta,xe(1+1*nspline),nspline,norder,altp(i),0)
464 & *(t1/2.0)/cosh(x)**2 ! DLH 10/14 was 3500
465
466 write(*,*) i,altp(i),x,
467 & bvalue(ta,xe(1+1*nspline),nspline,norder,altp(i),0),
468 & (3500.0/2.0)/cosh(x)**2,xe(1+i/4+1*nspline)
469
470 x=bvalue(ta,bcoef(1,3),nspline,norder,altp(i),0)
471 etip(i)=bvalue(ta,xe(1+2*nspline),nspline,norder,altp(i),0)
472 & *(t1/2.0)/cosh(x)**2 ! DLH 10/14 was 3500
473 x=bvalue(ta,bcoef(1,4),nspline,norder,altp(i),0)
474 ehfp(i)=bvalue(ta,xe(1+3*nspline),nspline,norder,altp(i),0)
475 & *(1.0/2.0)/cosh(x)**2
476 x=bvalue(ta,bcoef(1,5),nspline,norder,altp(i),0)
477 ehefp(i)=bvalue(ta,xe(1+4*nspline),nspline,norder,altp(i),0)
478 & *(1.0/2.0)/cosh(x)**2
479
480 write(*,*) altp(i),edensp(i),etep(i),etip(i),ehfp(i),ehefp(i)
481 c call exit
482 end do
483
484 c stop
485
486 return
487 end
488
489 subroutine fcn_lpreg(m,n,x,fvec,iflag)
490 c
491 include 'spline.h'
492 include 'fpa.h'
493 include 'fitter.h'
494 c
495 integer m,n,iflag,iflaglast
496 real x(n),fvec(m),pen(nstate+npen)
497 real plag2(nl,nrange)
498 real regu(nstate+npen)
499 data regu/1.0e1,5.0e1,10.0e1,1.0e2,5.0e1,
500 & 1.0e1,2.0e0,1.0e0,5.0e-3,1.0e0/
501
502 c 2019
503 common /iflaglast/iflaglast
504 common /chisq/chi2
505 common /utime/uttime
506 c
507 c write(*,*)uttime," 3 *"
508
509 c zero out, copy over some arrays
510
511 c write(*,*) "Starting fcn_lpreg"
512 write(*,*) "x:",x(2)
513
514 do j=1,nstate+npen
515 pen(j)=0.0
516 end do
517
518 ipt=0
519 do j=1,nstate
520 do i=1,nspline
521 ipt=ipt+1
522 bcoef(i,j)=x(ipt)
523 c write(*,*)j,i,bcoef(i,j)
524 end do
525 end do
526
527 c populate profiles from splines
528 write(*,*) "densp1:",densp(1)
529 do i=1,nrange
530 altp(i)=r0+dr*float(i-1)
531 c write(*,*) "densp1:",densp(i)
532 call get_spline(altp(i),densp(i),tep(i),tip(i),
533 & hfp(i),hefp(i))
534 c write(*,*) "densp2:",densp(i)
535 c call exit
536 end do
537 write(*,*) "densp2:",densp(1)
538 c regularize spline coefficients, establish boundary conditions
539 c write(*,*) "After spline_fcn_lpreg"
540 ipt=0
541 do i=2,nspline-1
542 do j=1,nstate
543
544 fac=1.2 ! DLH 7/14 could be bendy (or else get spurious He+)
545 if((uttime.lt.10.0.or.uttime.gt.15.0).and.j.eq.2) fac=4.0
546
547 ipt=ipt+1
548 tmp=(bcoef(i-1,j)-2.*bcoef(i,j)+bcoef(i+1,j))
549 fvec(ipt)=tmp*regu(j)*fac
550 pen(j)=pen(j)+fvec(ipt)**2
551 end do
552 end do
553
554 c rescale for clearer diagnostic (just for printing)
555
556 do i=1,nstate
557 pen(i)=sqrt(pen(i)/float(nspline))
558 end do
559
560 c write(*,*) x
561
562 c compute model prediction error to minimize in LS sense
563 c write(*,*) "before lagp_fcn_lpreg"
564 call lagp(plag2,wl,r0,dr,nl,nrange)
565 c write(*,*) "before lagp_fcn_lpreg"
566 c adjust system constant
567 write(*,*) "flgas:",iflag,iflaglast
568 if(iflag.eq.1.and.iflaglast.eq.2) then
569 sclast=sconst
570 call get_scale(plag2)
571 sconst=0.1*sconst+0.9*sclast
572 end if
573 iflaglast=iflag
574
575 chi2=0.0
576 do j=nl+1,nrange
577 do i=1,nl
578 ipt=ipt+1
579 fvec(ipt)=(plag(i,j)-plag2(i,j)*sconst)/plag_errors(i,j)
580 chi2=chi2+fvec(ipt)**2
581 end do
582 end do
583 chi2=sqrt(chi2/float(nrange*nl))
584
585 c add penalties for Tr, composition, He+, lower boundary values, etc.
586 c have to adjust penalties for different conditions (e.g. sunrise, night)
587
588 do i=1,nrange
589 pen(nstate+1)=pen(nstate+1)+hefp(i)**2
590
591 if(tep(i).gt.tip(i)) then ! 3/2015 500 -> 1000 ?
592 if(uttime.ge.10.0.and.uttime.le.15.0) then ! was 10.5, 14->15
593 scale=500.0 ! dlh 7/14 was 1500, but this defeated He+, so 500
594 else
595 scale=50.0
596 end if
597 else
598 scale=10.0
599 end if
600
601 pen(nstate+2)=pen(nstate+2)+((tip(i)-tep(i))/scale)**2
602 pen(nstate+3)=pen(nstate+3)+exp((hfp(i)+hefp(i)-1.0)/2.0)**2
603
604 end do
605
606 pen(nstate+4)=(tip(1)-700.0)**2*float(nrange) ! or 800?
607 pen(nstate+5)=(hfp(nrange)-1.0)**2*float(nrange)
608
609 do i=1,npen
610 tmp=sqrt(pen(nstate+i))*regu(nstate+i)
611 ipt=ipt+1
612 fvec(ipt)=tmp
613 pen(nstate+i)=tmp/sqrt(float(nrange))
614 end do
615
616 c write(*,*) "chi2:",chi2," sys const:",sconst,
617 c & " flag:",iflag," penalties:"
618 c write(*,*)(pen(i),i=1,5)
619 c write(*,*)(pen(i),i=6,10)
620 c write(*,*) "ut:",uttime
621 c write(*,*) fvec(222)
622
623 return
624 end
625
626 subroutine get_scale(plag2)
627 c
628 include 'fpa.h'
629 real plag2(nl,nrange)
630 c
631 a=0.
632 b=0.
633 c do j=3*nrange/4,nrange
634 do j=nl+1,nrange
635 c write(*,*) j,plag(1,j),plag2(1,j)
636 a=a+plag(1,j)*plag2(1,j)/plag_errors(1,j)**2
637 b=b+plag(1,j)*plag(1,j)/plag_errors(1,j)**2
638 end do
639
640 sconst=b/a
641
642 write(*,*)"sconst_inside_get_scape:",sconst,a,b
643 c stop
644
645 return
646 end
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -0,0 +1,198
1 *DECK GAMLN
2 REAL FUNCTION GAMLN (Z, IERR)
3 C***BEGIN PROLOGUE GAMLN
4 C***SUBSIDIARY
5 C***PURPOSE Compute the logarithm of the Gamma function
6 C***LIBRARY SLATEC
7 C***CATEGORY C7A
8 C***TYPE SINGLE PRECISION (GAMLN-S, DGAMLN-D)
9 C***KEYWORDS LOGARITHM OF GAMMA FUNCTION
10 C***AUTHOR Amos, D. E., (SNL)
11 C***DESCRIPTION
12 C
13 C GAMLN COMPUTES THE NATURAL LOG OF THE GAMMA FUNCTION FOR
14 C Z.GT.0. THE ASYMPTOTIC EXPANSION IS USED TO GENERATE VALUES
15 C GREATER THAN ZMIN WHICH ARE ADJUSTED BY THE RECURSION
16 C G(Z+1)=Z*G(Z) FOR Z.LE.ZMIN. THE FUNCTION WAS MADE AS
17 C PORTABLE AS POSSIBLE BY COMPUTING ZMIN FROM THE NUMBER OF BASE
18 C 10 DIGITS IN A WORD, RLN=MAX(-ALOG10(R1MACH(4)),0.5E-18)
19 C LIMITED TO 18 DIGITS OF (RELATIVE) ACCURACY.
20 C
21 C SINCE INTEGER ARGUMENTS ARE COMMON, A TABLE LOOK UP ON 100
22 C VALUES IS USED FOR SPEED OF EXECUTION.
23 C
24 C DESCRIPTION OF ARGUMENTS
25 C
26 C INPUT
27 C Z - REAL ARGUMENT, Z.GT.0.0E0
28 C
29 C OUTPUT
30 C GAMLN - NATURAL LOG OF THE GAMMA FUNCTION AT Z
31 C IERR - ERROR FLAG
32 C IERR=0, NORMAL RETURN, COMPUTATION COMPLETED
33 C IERR=1, Z.LE.0.0E0, NO COMPUTATION
34 C
35 C***REFERENCES COMPUTATION OF BESSEL FUNCTIONS OF COMPLEX ARGUMENT
36 C BY D. E. AMOS, SAND83-0083, MAY, 1983.
37 C***ROUTINES CALLED I1MACH, R1MACH
38 C***REVISION HISTORY (YYMMDD)
39 C 830501 DATE WRITTEN
40 C 830501 REVISION DATE from Version 3.2
41 C 910415 Prologue converted to Version 4.0 format. (BAB)
42 C 920128 Category corrected. (WRB)
43 C 921215 GAMLN defined for Z negative. (WRB)
44 C***END PROLOGUE GAMLN
45 C
46 INTEGER I, I1M, K, MZ, NZ, IERR, I1MACH
47 REAL CF, CON, FLN, FZ, GLN, RLN, S, TLG, TRM, TST, T1, WDTOL, Z,
48 * ZDMY, ZINC, ZM, ZMIN, ZP, ZSQ
49 REAL R1MACH
50 DIMENSION CF(22), GLN(100)
51 C LNGAMMA(N), N=1,100
52 DATA GLN(1), GLN(2), GLN(3), GLN(4), GLN(5), GLN(6), GLN(7),
53 1 GLN(8), GLN(9), GLN(10), GLN(11), GLN(12), GLN(13), GLN(14),
54 2 GLN(15), GLN(16), GLN(17), GLN(18), GLN(19), GLN(20),
55 3 GLN(21), GLN(22)/
56 4 0.00000000000000000E+00, 0.00000000000000000E+00,
57 5 6.93147180559945309E-01, 1.79175946922805500E+00,
58 6 3.17805383034794562E+00, 4.78749174278204599E+00,
59 7 6.57925121201010100E+00, 8.52516136106541430E+00,
60 8 1.06046029027452502E+01, 1.28018274800814696E+01,
61 9 1.51044125730755153E+01, 1.75023078458738858E+01,
62 A 1.99872144956618861E+01, 2.25521638531234229E+01,
63 B 2.51912211827386815E+01, 2.78992713838408916E+01,
64 C 3.06718601060806728E+01, 3.35050734501368889E+01,
65 D 3.63954452080330536E+01, 3.93398841871994940E+01,
66 E 4.23356164607534850E+01, 4.53801388984769080E+01/
67 DATA GLN(23), GLN(24), GLN(25), GLN(26), GLN(27), GLN(28),
68 1 GLN(29), GLN(30), GLN(31), GLN(32), GLN(33), GLN(34),
69 2 GLN(35), GLN(36), GLN(37), GLN(38), GLN(39), GLN(40),
70 3 GLN(41), GLN(42), GLN(43), GLN(44)/
71 4 4.84711813518352239E+01, 5.16066755677643736E+01,
72 5 5.47847293981123192E+01, 5.80036052229805199E+01,
73 6 6.12617017610020020E+01, 6.45575386270063311E+01,
74 7 6.78897431371815350E+01, 7.12570389671680090E+01,
75 8 7.46582363488301644E+01, 7.80922235533153106E+01,
76 9 8.15579594561150372E+01, 8.50544670175815174E+01,
77 A 8.85808275421976788E+01, 9.21361756036870925E+01,
78 B 9.57196945421432025E+01, 9.93306124547874269E+01,
79 C 1.02968198614513813E+02, 1.06631760260643459E+02,
80 D 1.10320639714757395E+02, 1.14034211781461703E+02,
81 E 1.17771881399745072E+02, 1.21533081515438634E+02/
82 DATA GLN(45), GLN(46), GLN(47), GLN(48), GLN(49), GLN(50),
83 1 GLN(51), GLN(52), GLN(53), GLN(54), GLN(55), GLN(56),
84 2 GLN(57), GLN(58), GLN(59), GLN(60), GLN(61), GLN(62),
85 3 GLN(63), GLN(64), GLN(65), GLN(66)/
86 4 1.25317271149356895E+02, 1.29123933639127215E+02,
87 5 1.32952575035616310E+02, 1.36802722637326368E+02,
88 6 1.40673923648234259E+02, 1.44565743946344886E+02,
89 7 1.48477766951773032E+02, 1.52409592584497358E+02,
90 8 1.56360836303078785E+02, 1.60331128216630907E+02,
91 9 1.64320112263195181E+02, 1.68327445448427652E+02,
92 A 1.72352797139162802E+02, 1.76395848406997352E+02,
93 B 1.80456291417543771E+02, 1.84533828861449491E+02,
94 C 1.88628173423671591E+02, 1.92739047287844902E+02,
95 D 1.96866181672889994E+02, 2.01009316399281527E+02,
96 E 2.05168199482641199E+02, 2.09342586752536836E+02/
97 DATA GLN(67), GLN(68), GLN(69), GLN(70), GLN(71), GLN(72),
98 1 GLN(73), GLN(74), GLN(75), GLN(76), GLN(77), GLN(78),
99 2 GLN(79), GLN(80), GLN(81), GLN(82), GLN(83), GLN(84),
100 3 GLN(85), GLN(86), GLN(87), GLN(88)/
101 4 2.13532241494563261E+02, 2.17736934113954227E+02,
102 5 2.21956441819130334E+02, 2.26190548323727593E+02,
103 6 2.30439043565776952E+02, 2.34701723442818268E+02,
104 7 2.38978389561834323E+02, 2.43268849002982714E+02,
105 8 2.47572914096186884E+02, 2.51890402209723194E+02,
106 9 2.56221135550009525E+02, 2.60564940971863209E+02,
107 A 2.64921649798552801E+02, 2.69291097651019823E+02,
108 B 2.73673124285693704E+02, 2.78067573440366143E+02,
109 C 2.82474292687630396E+02, 2.86893133295426994E+02,
110 D 2.91323950094270308E+02, 2.95766601350760624E+02,
111 E 3.00220948647014132E+02, 3.04686856765668715E+02/
112 DATA GLN(89), GLN(90), GLN(91), GLN(92), GLN(93), GLN(94),
113 1 GLN(95), GLN(96), GLN(97), GLN(98), GLN(99), GLN(100)/
114 2 3.09164193580146922E+02, 3.13652829949879062E+02,
115 3 3.18152639620209327E+02, 3.22663499126726177E+02,
116 4 3.27185287703775217E+02, 3.31717887196928473E+02,
117 5 3.36261181979198477E+02, 3.40815058870799018E+02,
118 6 3.45379407062266854E+02, 3.49954118040770237E+02,
119 7 3.54539085519440809E+02, 3.59134205369575399E+02/
120 C COEFFICIENTS OF ASYMPTOTIC EXPANSION
121 DATA CF(1), CF(2), CF(3), CF(4), CF(5), CF(6), CF(7), CF(8),
122 1 CF(9), CF(10), CF(11), CF(12), CF(13), CF(14), CF(15),
123 2 CF(16), CF(17), CF(18), CF(19), CF(20), CF(21), CF(22)/
124 3 8.33333333333333333E-02, -2.77777777777777778E-03,
125 4 7.93650793650793651E-04, -5.95238095238095238E-04,
126 5 8.41750841750841751E-04, -1.91752691752691753E-03,
127 6 6.41025641025641026E-03, -2.95506535947712418E-02,
128 7 1.79644372368830573E-01, -1.39243221690590112E+00,
129 8 1.34028640441683920E+01, -1.56848284626002017E+02,
130 9 2.19310333333333333E+03, -3.61087712537249894E+04,
131 A 6.91472268851313067E+05, -1.52382215394074162E+07,
132 B 3.82900751391414141E+08, -1.08822660357843911E+10,
133 C 3.47320283765002252E+11, -1.23696021422692745E+13,
134 D 4.88788064793079335E+14, -2.13203339609193739E+16/
135 C
136 C LN(2*PI)
137 DATA CON / 1.83787706640934548E+00/
138 C
139 C***FIRST EXECUTABLE STATEMENT GAMLN
140 IERR=0
141 IF (Z.LE.0.0E0) GO TO 70
142 IF (Z.GT.101.0E0) GO TO 10
143 NZ = Z
144 FZ = Z - NZ
145 IF (FZ.GT.0.0E0) GO TO 10
146 IF (NZ.GT.100) GO TO 10
147 GAMLN = GLN(NZ)
148 RETURN
149 10 CONTINUE
150 WDTOL = R1MACH(4)
151 WDTOL = MAX(WDTOL,0.5E-18)
152 I1M = I1MACH(11)
153 RLN = R1MACH(5)*I1M
154 FLN = MIN(RLN,20.0E0)
155 FLN = MAX(FLN,3.0E0)
156 FLN = FLN - 3.0E0
157 ZM = 1.8000E0 + 0.3875E0*FLN
158 MZ = ZM + 1
159 ZMIN = MZ
160 ZDMY = Z
161 ZINC = 0.0E0
162 IF (Z.GE.ZMIN) GO TO 20
163 ZINC = ZMIN - NZ
164 ZDMY = Z + ZINC
165 20 CONTINUE
166 ZP = 1.0E0/ZDMY
167 T1 = CF(1)*ZP
168 S = T1
169 IF (ZP.LT.WDTOL) GO TO 40
170 ZSQ = ZP*ZP
171 TST = T1*WDTOL
172 DO 30 K=2,22
173 ZP = ZP*ZSQ
174 TRM = CF(K)*ZP
175 IF (ABS(TRM).LT.TST) GO TO 40
176 S = S + TRM
177 30 CONTINUE
178 40 CONTINUE
179 IF (ZINC.NE.0.0E0) GO TO 50
180 TLG = ALOG(Z)
181 GAMLN = Z*(TLG-1.0E0) + 0.5E0*(CON-TLG) + S
182 RETURN
183 50 CONTINUE
184 ZP = 1.0E0
185 NZ = ZINC
186 DO 60 I=1,NZ
187 ZP = ZP*(Z+(I-1))
188 60 CONTINUE
189 TLG = ALOG(ZDMY)
190 GAMLN = ZDMY*(TLG-1.0E0) - ALOG(ZP) + 0.5E0*(CON-TLG) + S
191 RETURN
192 C
193 C
194 70 CONTINUE
195 GAMLN = R1MACH(2)
196 IERR=1
197 RETURN
198 END
@@ -0,0 +1,10
1
2 subroutine get_path(fqual_temp)
3 c
4 c create table of magnetic field components
5 c
6 c character*47 L
7
8 character(1024) :: fqual_temp
9 character(512) :: ppath
10 character(512) :: cpath
@@ -0,0 +1,6
1
2 c write(*,*) "Len:", L
3 fqual_temp = TRIM(ppath)//TRIM(cpath)
4 c write(*,*) "Len:", fqual_temp
5 return
6 end
This diff has been collapsed as it changes many lines, (888 lines changed) Show them Hide them
@@ -0,0 +1,888
1 *DECK I1MACH
2 INTEGER FUNCTION I1MACH (I)
3 C***BEGIN PROLOGUE I1MACH
4 C***PURPOSE Return integer machine dependent constants.
5 C***LIBRARY SLATEC
6 C***CATEGORY R1
7 C***TYPE INTEGER (I1MACH-I)
8 C***KEYWORDS MACHINE CONSTANTS
9 C***AUTHOR Fox, P. A., (Bell Labs)
10 C Hall, A. D., (Bell Labs)
11 C Schryer, N. L., (Bell Labs)
12 C***DESCRIPTION
13 C
14 C I1MACH can be used to obtain machine-dependent parameters for the
15 C local machine environment. It is a function subprogram with one
16 C (input) argument and can be referenced as follows:
17 C
18 C K = I1MACH(I)
19 C
20 C where I=1,...,16. The (output) value of K above is determined by
21 C the (input) value of I. The results for various values of I are
22 C discussed below.
23 C
24 C I/O unit numbers:
25 C I1MACH( 1) = the standard input unit.
26 C I1MACH( 2) = the standard output unit.
27 C I1MACH( 3) = the standard punch unit.
28 C I1MACH( 4) = the standard error message unit.
29 C
30 C Words:
31 C I1MACH( 5) = the number of bits per integer storage unit.
32 C I1MACH( 6) = the number of characters per integer storage unit.
33 C
34 C Integers:
35 C assume integers are represented in the S-digit, base-A form
36 C
37 C sign ( X(S-1)*A**(S-1) + ... + X(1)*A + X(0) )
38 C
39 C where 0 .LE. X(I) .LT. A for I=0,...,S-1.
40 C I1MACH( 7) = A, the base.
41 C I1MACH( 8) = S, the number of base-A digits.
42 C I1MACH( 9) = A**S - 1, the largest magnitude.
43 C
44 C Floating-Point Numbers:
45 C Assume floating-point numbers are represented in the T-digit,
46 C base-B form
47 C sign (B**E)*( (X(1)/B) + ... + (X(T)/B**T) )
48 C
49 C where 0 .LE. X(I) .LT. B for I=1,...,T,
50 C 0 .LT. X(1), and EMIN .LE. E .LE. EMAX.
51 C I1MACH(10) = B, the base.
52 C
53 C Single-Precision:
54 C I1MACH(11) = T, the number of base-B digits.
55 C I1MACH(12) = EMIN, the smallest exponent E.
56 C I1MACH(13) = EMAX, the largest exponent E.
57 C
58 C Double-Precision:
59 C I1MACH(14) = T, the number of base-B digits.
60 C I1MACH(15) = EMIN, the smallest exponent E.
61 C I1MACH(16) = EMAX, the largest exponent E.
62 C
63 C To alter this function for a particular environment, the desired
64 C set of DATA statements should be activated by removing the C from
65 C column 1. Also, the values of I1MACH(1) - I1MACH(4) should be
66 C checked for consistency with the local operating system.
67 C
68 C***REFERENCES P. A. Fox, A. D. Hall and N. L. Schryer, Framework for
69 C a portable library, ACM Transactions on Mathematical
70 C Software 4, 2 (June 1978), pp. 177-188.
71 C***ROUTINES CALLED (NONE)
72 C***REVISION HISTORY (YYMMDD)
73 C 750101 DATE WRITTEN
74 C 891012 Added VAX G-floating constants. (WRB)
75 C 891012 REVISION DATE from Version 3.2
76 C 891214 Prologue converted to Version 4.0 format. (BAB)
77 C 900618 Added DEC RISC constants. (WRB)
78 C 900723 Added IBM RS 6000 constants. (WRB)
79 C 901009 Correct I1MACH(7) for IBM Mainframes. Should be 2 not 16.
80 C (RWC)
81 C 910710 Added HP 730 constants. (SMR)
82 C 911114 Added Convex IEEE constants. (WRB)
83 C 920121 Added SUN -r8 compiler option constants. (WRB)
84 C 920229 Added Touchstone Delta i860 constants. (WRB)
85 C 920501 Reformatted the REFERENCES section. (WRB)
86 C 920625 Added Convex -p8 and -pd8 compiler option constants.
87 C (BKS, WRB)
88 C 930201 Added DEC Alpha and SGI constants. (RWC and WRB)
89 C 930618 Corrected I1MACH(5) for Convex -p8 and -pd8 compiler
90 C options. (DWL, RWC and WRB).
91 C***END PROLOGUE I1MACH
92 C
93 INTEGER IMACH(16),OUTPUT
94 SAVE IMACH
95 EQUIVALENCE (IMACH(4),OUTPUT)
96 C
97 C MACHINE CONSTANTS FOR THE AMIGA
98 C ABSOFT COMPILER
99 C
100 C DATA IMACH( 1) / 5 /
101 C DATA IMACH( 2) / 6 /
102 C DATA IMACH( 3) / 5 /
103 C DATA IMACH( 4) / 6 /
104 C DATA IMACH( 5) / 32 /
105 C DATA IMACH( 6) / 4 /
106 C DATA IMACH( 7) / 2 /
107 C DATA IMACH( 8) / 31 /
108 C DATA IMACH( 9) / 2147483647 /
109 C DATA IMACH(10) / 2 /
110 C DATA IMACH(11) / 24 /
111 C DATA IMACH(12) / -126 /
112 C DATA IMACH(13) / 127 /
113 C DATA IMACH(14) / 53 /
114 C DATA IMACH(15) / -1022 /
115 C DATA IMACH(16) / 1023 /
116 C
117 C MACHINE CONSTANTS FOR THE APOLLO
118 C
119 C DATA IMACH( 1) / 5 /
120 C DATA IMACH( 2) / 6 /
121 C DATA IMACH( 3) / 6 /
122 C DATA IMACH( 4) / 6 /
123 C DATA IMACH( 5) / 32 /
124 C DATA IMACH( 6) / 4 /
125 C DATA IMACH( 7) / 2 /
126 C DATA IMACH( 8) / 31 /
127 C DATA IMACH( 9) / 2147483647 /
128 C DATA IMACH(10) / 2 /
129 C DATA IMACH(11) / 24 /
130 C DATA IMACH(12) / -125 /
131 C DATA IMACH(13) / 129 /
132 C DATA IMACH(14) / 53 /
133 C DATA IMACH(15) / -1021 /
134 C DATA IMACH(16) / 1025 /
135 C
136 C MACHINE CONSTANTS FOR THE BURROUGHS 1700 SYSTEM
137 C
138 C DATA IMACH( 1) / 7 /
139 C DATA IMACH( 2) / 2 /
140 C DATA IMACH( 3) / 2 /
141 C DATA IMACH( 4) / 2 /
142 C DATA IMACH( 5) / 36 /
143 C DATA IMACH( 6) / 4 /
144 C DATA IMACH( 7) / 2 /
145 C DATA IMACH( 8) / 33 /
146 C DATA IMACH( 9) / Z1FFFFFFFF /
147 C DATA IMACH(10) / 2 /
148 C DATA IMACH(11) / 24 /
149 C DATA IMACH(12) / -256 /
150 C DATA IMACH(13) / 255 /
151 C DATA IMACH(14) / 60 /
152 C DATA IMACH(15) / -256 /
153 C DATA IMACH(16) / 255 /
154 C
155 C MACHINE CONSTANTS FOR THE BURROUGHS 5700 SYSTEM
156 C
157 C DATA IMACH( 1) / 5 /
158 C DATA IMACH( 2) / 6 /
159 C DATA IMACH( 3) / 7 /
160 C DATA IMACH( 4) / 6 /
161 C DATA IMACH( 5) / 48 /
162 C DATA IMACH( 6) / 6 /
163 C DATA IMACH( 7) / 2 /
164 C DATA IMACH( 8) / 39 /
165 C DATA IMACH( 9) / O0007777777777777 /
166 C DATA IMACH(10) / 8 /
167 C DATA IMACH(11) / 13 /
168 C DATA IMACH(12) / -50 /
169 C DATA IMACH(13) / 76 /
170 C DATA IMACH(14) / 26 /
171 C DATA IMACH(15) / -50 /
172 C DATA IMACH(16) / 76 /
173 C
174 C MACHINE CONSTANTS FOR THE BURROUGHS 6700/7700 SYSTEMS
175 C
176 C DATA IMACH( 1) / 5 /
177 C DATA IMACH( 2) / 6 /
178 C DATA IMACH( 3) / 7 /
179 C DATA IMACH( 4) / 6 /
180 C DATA IMACH( 5) / 48 /
181 C DATA IMACH( 6) / 6 /
182 C DATA IMACH( 7) / 2 /
183 C DATA IMACH( 8) / 39 /
184 C DATA IMACH( 9) / O0007777777777777 /
185 C DATA IMACH(10) / 8 /
186 C DATA IMACH(11) / 13 /
187 C DATA IMACH(12) / -50 /
188 C DATA IMACH(13) / 76 /
189 C DATA IMACH(14) / 26 /
190 C DATA IMACH(15) / -32754 /
191 C DATA IMACH(16) / 32780 /
192 C
193 C MACHINE CONSTANTS FOR THE CDC 170/180 SERIES USING NOS/VE
194 C
195 C DATA IMACH( 1) / 5 /
196 C DATA IMACH( 2) / 6 /
197 C DATA IMACH( 3) / 7 /
198 C DATA IMACH( 4) / 6 /
199 C DATA IMACH( 5) / 64 /
200 C DATA IMACH( 6) / 8 /
201 C DATA IMACH( 7) / 2 /
202 C DATA IMACH( 8) / 63 /
203 C DATA IMACH( 9) / 9223372036854775807 /
204 C DATA IMACH(10) / 2 /
205 C DATA IMACH(11) / 47 /
206 C DATA IMACH(12) / -4095 /
207 C DATA IMACH(13) / 4094 /
208 C DATA IMACH(14) / 94 /
209 C DATA IMACH(15) / -4095 /
210 C DATA IMACH(16) / 4094 /
211 C
212 C MACHINE CONSTANTS FOR THE CDC 6000/7000 SERIES
213 C
214 C DATA IMACH( 1) / 5 /
215 C DATA IMACH( 2) / 6 /
216 C DATA IMACH( 3) / 7 /
217 C DATA IMACH( 4) / 6LOUTPUT/
218 C DATA IMACH( 5) / 60 /
219 C DATA IMACH( 6) / 10 /
220 C DATA IMACH( 7) / 2 /
221 C DATA IMACH( 8) / 48 /
222 C DATA IMACH( 9) / 00007777777777777777B /
223 C DATA IMACH(10) / 2 /
224 C DATA IMACH(11) / 47 /
225 C DATA IMACH(12) / -929 /
226 C DATA IMACH(13) / 1070 /
227 C DATA IMACH(14) / 94 /
228 C DATA IMACH(15) / -929 /
229 C DATA IMACH(16) / 1069 /
230 C
231 C MACHINE CONSTANTS FOR THE CELERITY C1260
232 C
233 C DATA IMACH( 1) / 5 /
234 C DATA IMACH( 2) / 6 /
235 C DATA IMACH( 3) / 6 /
236 C DATA IMACH( 4) / 0 /
237 C DATA IMACH( 5) / 32 /
238 C DATA IMACH( 6) / 4 /
239 C DATA IMACH( 7) / 2 /
240 C DATA IMACH( 8) / 31 /
241 C DATA IMACH( 9) / Z'7FFFFFFF' /
242 C DATA IMACH(10) / 2 /
243 C DATA IMACH(11) / 24 /
244 C DATA IMACH(12) / -126 /
245 C DATA IMACH(13) / 127 /
246 C DATA IMACH(14) / 53 /
247 C DATA IMACH(15) / -1022 /
248 C DATA IMACH(16) / 1023 /
249 C
250 C MACHINE CONSTANTS FOR THE CONVEX
251 C USING THE -fn COMPILER OPTION
252 C
253 C DATA IMACH( 1) / 5 /
254 C DATA IMACH( 2) / 6 /
255 C DATA IMACH( 3) / 7 /
256 C DATA IMACH( 4) / 6 /
257 C DATA IMACH( 5) / 32 /
258 C DATA IMACH( 6) / 4 /
259 C DATA IMACH( 7) / 2 /
260 C DATA IMACH( 8) / 31 /
261 C DATA IMACH( 9) / 2147483647 /
262 C DATA IMACH(10) / 2 /
263 C DATA IMACH(11) / 24 /
264 C DATA IMACH(12) / -127 /
265 C DATA IMACH(13) / 127 /
266 C DATA IMACH(14) / 53 /
267 C DATA IMACH(15) / -1023 /
268 C DATA IMACH(16) / 1023 /
269 C
270 C MACHINE CONSTANTS FOR THE CONVEX
271 C USING THE -fi COMPILER OPTION
272 C
273 C DATA IMACH( 1) / 5 /
274 C DATA IMACH( 2) / 6 /
275 C DATA IMACH( 3) / 7 /
276 C DATA IMACH( 4) / 6 /
277 C DATA IMACH( 5) / 32 /
278 C DATA IMACH( 6) / 4 /
279 C DATA IMACH( 7) / 2 /
280 C DATA IMACH( 8) / 31 /
281 C DATA IMACH( 9) / 2147483647 /
282 C DATA IMACH(10) / 2 /
283 C DATA IMACH(11) / 24 /
284 C DATA IMACH(12) / -125 /
285 C DATA IMACH(13) / 128 /
286 C DATA IMACH(14) / 53 /
287 C DATA IMACH(15) / -1021 /
288 C DATA IMACH(16) / 1024 /
289 C
290 C MACHINE CONSTANTS FOR THE CONVEX
291 C USING THE -p8 COMPILER OPTION
292 C
293 C DATA IMACH( 1) / 5 /
294 C DATA IMACH( 2) / 6 /
295 C DATA IMACH( 3) / 7 /
296 C DATA IMACH( 4) / 6 /
297 C DATA IMACH( 5) / 64 /
298 C DATA IMACH( 6) / 4 /
299 C DATA IMACH( 7) / 2 /
300 C DATA IMACH( 8) / 63 /
301 C DATA IMACH( 9) / 9223372036854775807 /
302 C DATA IMACH(10) / 2 /
303 C DATA IMACH(11) / 53 /
304 C DATA IMACH(12) / -1023 /
305 C DATA IMACH(13) / 1023 /
306 C DATA IMACH(14) / 113 /
307 C DATA IMACH(15) / -16383 /
308 C DATA IMACH(16) / 16383 /
309 C
310 C MACHINE CONSTANTS FOR THE CONVEX
311 C USING THE -pd8 COMPILER OPTION
312 C
313 C DATA IMACH( 1) / 5 /
314 C DATA IMACH( 2) / 6 /
315 C DATA IMACH( 3) / 7 /
316 C DATA IMACH( 4) / 6 /
317 C DATA IMACH( 5) / 64 /
318 C DATA IMACH( 6) / 4 /
319 C DATA IMACH( 7) / 2 /
320 C DATA IMACH( 8) / 63 /
321 C DATA IMACH( 9) / 9223372036854775807 /
322 C DATA IMACH(10) / 2 /
323 C DATA IMACH(11) / 53 /
324 C DATA IMACH(12) / -1023 /
325 C DATA IMACH(13) / 1023 /
326 C DATA IMACH(14) / 53 /
327 C DATA IMACH(15) / -1023 /
328 C DATA IMACH(16) / 1023 /
329 C
330 C MACHINE CONSTANTS FOR THE CRAY
331 C USING THE 46 BIT INTEGER COMPILER OPTION
332 C
333 C DATA IMACH( 1) / 100 /
334 C DATA IMACH( 2) / 101 /
335 C DATA IMACH( 3) / 102 /
336 C DATA IMACH( 4) / 101 /
337 C DATA IMACH( 5) / 64 /
338 C DATA IMACH( 6) / 8 /
339 C DATA IMACH( 7) / 2 /
340 C DATA IMACH( 8) / 46 /
341 C DATA IMACH( 9) / 1777777777777777B /
342 C DATA IMACH(10) / 2 /
343 C DATA IMACH(11) / 47 /
344 C DATA IMACH(12) / -8189 /
345 C DATA IMACH(13) / 8190 /
346 C DATA IMACH(14) / 94 /
347 C DATA IMACH(15) / -8099 /
348 C DATA IMACH(16) / 8190 /
349 C
350 C MACHINE CONSTANTS FOR THE CRAY
351 C USING THE 64 BIT INTEGER COMPILER OPTION
352 C
353 C DATA IMACH( 1) / 100 /
354 C DATA IMACH( 2) / 101 /
355 C DATA IMACH( 3) / 102 /
356 C DATA IMACH( 4) / 101 /
357 C DATA IMACH( 5) / 64 /
358 C DATA IMACH( 6) / 8 /
359 C DATA IMACH( 7) / 2 /
360 C DATA IMACH( 8) / 63 /
361 C DATA IMACH( 9) / 777777777777777777777B /
362 C DATA IMACH(10) / 2 /
363 C DATA IMACH(11) / 47 /
364 C DATA IMACH(12) / -8189 /
365 C DATA IMACH(13) / 8190 /
366 C DATA IMACH(14) / 94 /
367 C DATA IMACH(15) / -8099 /
368 C DATA IMACH(16) / 8190 /
369 C
370 C MACHINE CONSTANTS FOR THE DATA GENERAL ECLIPSE S/200
371 C
372 C DATA IMACH( 1) / 11 /
373 C DATA IMACH( 2) / 12 /
374 C DATA IMACH( 3) / 8 /
375 C DATA IMACH( 4) / 10 /
376 C DATA IMACH( 5) / 16 /
377 C DATA IMACH( 6) / 2 /
378 C DATA IMACH( 7) / 2 /
379 C DATA IMACH( 8) / 15 /
380 C DATA IMACH( 9) / 32767 /
381 C DATA IMACH(10) / 16 /
382 C DATA IMACH(11) / 6 /
383 C DATA IMACH(12) / -64 /
384 C DATA IMACH(13) / 63 /
385 C DATA IMACH(14) / 14 /
386 C DATA IMACH(15) / -64 /
387 C DATA IMACH(16) / 63 /
388 C
389 C MACHINE CONSTANTS FOR THE DEC ALPHA
390 C USING G_FLOAT
391 C
392 C DATA IMACH( 1) / 5 /
393 C DATA IMACH( 2) / 6 /
394 C DATA IMACH( 3) / 5 /
395 C DATA IMACH( 4) / 6 /
396 C DATA IMACH( 5) / 32 /
397 C DATA IMACH( 6) / 4 /
398 C DATA IMACH( 7) / 2 /
399 C DATA IMACH( 8) / 31 /
400 C DATA IMACH( 9) / 2147483647 /
401 C DATA IMACH(10) / 2 /
402 C DATA IMACH(11) / 24 /
403 C DATA IMACH(12) / -127 /
404 C DATA IMACH(13) / 127 /
405 C DATA IMACH(14) / 53 /
406 C DATA IMACH(15) / -1023 /
407 C DATA IMACH(16) / 1023 /
408 C
409 C MACHINE CONSTANTS FOR THE DEC ALPHA
410 C USING IEEE_FLOAT
411 C
412 C DATA IMACH( 1) / 5 /
413 C DATA IMACH( 2) / 6 /
414 C DATA IMACH( 3) / 6 /
415 C DATA IMACH( 4) / 6 /
416 C DATA IMACH( 5) / 32 /
417 C DATA IMACH( 6) / 4 /
418 C DATA IMACH( 7) / 2 /
419 C DATA IMACH( 8) / 31 /
420 C DATA IMACH( 9) / 2147483647 /
421 C DATA IMACH(10) / 2 /
422 C DATA IMACH(11) / 24 /
423 C DATA IMACH(12) / -125 /
424 C DATA IMACH(13) / 128 /
425 C DATA IMACH(14) / 53 /
426 C DATA IMACH(15) / -1021 /
427 C DATA IMACH(16) / 1024 /
428 C
429 C MACHINE CONSTANTS FOR THE DEC RISC
430 C
431 C DATA IMACH( 1) / 5 /
432 C DATA IMACH( 2) / 6 /
433 C DATA IMACH( 3) / 6 /
434 C DATA IMACH( 4) / 6 /
435 C DATA IMACH( 5) / 32 /
436 C DATA IMACH( 6) / 4 /
437 C DATA IMACH( 7) / 2 /
438 C DATA IMACH( 8) / 31 /
439 C DATA IMACH( 9) / 2147483647 /
440 C DATA IMACH(10) / 2 /
441 C DATA IMACH(11) / 24 /
442 C DATA IMACH(12) / -125 /
443 C DATA IMACH(13) / 128 /
444 C DATA IMACH(14) / 53 /
445 C DATA IMACH(15) / -1021 /
446 C DATA IMACH(16) / 1024 /
447 C
448 C MACHINE CONSTANTS FOR THE DEC VAX
449 C USING D_FLOATING
450 C
451 C DATA IMACH( 1) / 5 /
452 C DATA IMACH( 2) / 6 /
453 C DATA IMACH( 3) / 5 /
454 C DATA IMACH( 4) / 6 /
455 C DATA IMACH( 5) / 32 /
456 C DATA IMACH( 6) / 4 /
457 C DATA IMACH( 7) / 2 /
458 C DATA IMACH( 8) / 31 /
459 C DATA IMACH( 9) / 2147483647 /
460 C DATA IMACH(10) / 2 /
461 C DATA IMACH(11) / 24 /
462 C DATA IMACH(12) / -127 /
463 C DATA IMACH(13) / 127 /
464 C DATA IMACH(14) / 56 /
465 C DATA IMACH(15) / -127 /
466 C DATA IMACH(16) / 127 /
467 C
468 C MACHINE CONSTANTS FOR THE DEC VAX
469 C USING G_FLOATING
470 C
471 C DATA IMACH( 1) / 5 /
472 C DATA IMACH( 2) / 6 /
473 C DATA IMACH( 3) / 5 /
474 C DATA IMACH( 4) / 6 /
475 C DATA IMACH( 5) / 32 /
476 C DATA IMACH( 6) / 4 /
477 C DATA IMACH( 7) / 2 /
478 C DATA IMACH( 8) / 31 /
479 C DATA IMACH( 9) / 2147483647 /
480 C DATA IMACH(10) / 2 /
481 C DATA IMACH(11) / 24 /
482 C DATA IMACH(12) / -127 /
483 C DATA IMACH(13) / 127 /
484 C DATA IMACH(14) / 53 /
485 C DATA IMACH(15) / -1023 /
486 C DATA IMACH(16) / 1023 /
487 C
488 C MACHINE CONSTANTS FOR THE ELXSI 6400
489 C
490 C DATA IMACH( 1) / 5 /
491 C DATA IMACH( 2) / 6 /
492 C DATA IMACH( 3) / 6 /
493 C DATA IMACH( 4) / 6 /
494 C DATA IMACH( 5) / 32 /
495 C DATA IMACH( 6) / 4 /
496 C DATA IMACH( 7) / 2 /
497 C DATA IMACH( 8) / 32 /
498 C DATA IMACH( 9) / 2147483647 /
499 C DATA IMACH(10) / 2 /
500 C DATA IMACH(11) / 24 /
501 C DATA IMACH(12) / -126 /
502 C DATA IMACH(13) / 127 /
503 C DATA IMACH(14) / 53 /
504 C DATA IMACH(15) / -1022 /
505 C DATA IMACH(16) / 1023 /
506 C
507 C MACHINE CONSTANTS FOR THE HARRIS 220
508 C
509 C DATA IMACH( 1) / 5 /
510 C DATA IMACH( 2) / 6 /
511 C DATA IMACH( 3) / 0 /
512 C DATA IMACH( 4) / 6 /
513 C DATA IMACH( 5) / 24 /
514 C DATA IMACH( 6) / 3 /
515 C DATA IMACH( 7) / 2 /
516 C DATA IMACH( 8) / 23 /
517 C DATA IMACH( 9) / 8388607 /
518 C DATA IMACH(10) / 2 /
519 C DATA IMACH(11) / 23 /
520 C DATA IMACH(12) / -127 /
521 C DATA IMACH(13) / 127 /
522 C DATA IMACH(14) / 38 /
523 C DATA IMACH(15) / -127 /
524 C DATA IMACH(16) / 127 /
525 C
526 C MACHINE CONSTANTS FOR THE HONEYWELL 600/6000 SERIES
527 C
528 C DATA IMACH( 1) / 5 /
529 C DATA IMACH( 2) / 6 /
530 C DATA IMACH( 3) / 43 /
531 C DATA IMACH( 4) / 6 /
532 C DATA IMACH( 5) / 36 /
533 C DATA IMACH( 6) / 6 /
534 C DATA IMACH( 7) / 2 /
535 C DATA IMACH( 8) / 35 /
536 C DATA IMACH( 9) / O377777777777 /
537 C DATA IMACH(10) / 2 /
538 C DATA IMACH(11) / 27 /
539 C DATA IMACH(12) / -127 /
540 C DATA IMACH(13) / 127 /
541 C DATA IMACH(14) / 63 /
542 C DATA IMACH(15) / -127 /
543 C DATA IMACH(16) / 127 /
544 C
545 C MACHINE CONSTANTS FOR THE HP 730
546 C
547 C DATA IMACH( 1) / 5 /
548 C DATA IMACH( 2) / 6 /
549 C DATA IMACH( 3) / 6 /
550 C DATA IMACH( 4) / 6 /
551 C DATA IMACH( 5) / 32 /
552 C DATA IMACH( 6) / 4 /
553 C DATA IMACH( 7) / 2 /
554 C DATA IMACH( 8) / 31 /
555 C DATA IMACH( 9) / 2147483647 /
556 C DATA IMACH(10) / 2 /
557 C DATA IMACH(11) / 24 /
558 C DATA IMACH(12) / -125 /
559 C DATA IMACH(13) / 128 /
560 C DATA IMACH(14) / 53 /
561 C DATA IMACH(15) / -1021 /
562 C DATA IMACH(16) / 1024 /
563 C
564 C MACHINE CONSTANTS FOR THE HP 2100
565 C 3 WORD DOUBLE PRECISION OPTION WITH FTN4
566 C
567 C DATA IMACH( 1) / 5 /
568 C DATA IMACH( 2) / 6 /
569 C DATA IMACH( 3) / 4 /
570 C DATA IMACH( 4) / 1 /
571 C DATA IMACH( 5) / 16 /
572 C DATA IMACH( 6) / 2 /
573 C DATA IMACH( 7) / 2 /
574 C DATA IMACH( 8) / 15 /
575 C DATA IMACH( 9) / 32767 /
576 C DATA IMACH(10) / 2 /
577 C DATA IMACH(11) / 23 /
578 C DATA IMACH(12) / -128 /
579 C DATA IMACH(13) / 127 /
580 C DATA IMACH(14) / 39 /
581 C DATA IMACH(15) / -128 /
582 C DATA IMACH(16) / 127 /
583 C
584 C MACHINE CONSTANTS FOR THE HP 2100
585 C 4 WORD DOUBLE PRECISION OPTION WITH FTN4
586 C
587 C DATA IMACH( 1) / 5 /
588 C DATA IMACH( 2) / 6 /
589 C DATA IMACH( 3) / 4 /
590 C DATA IMACH( 4) / 1 /
591 C DATA IMACH( 5) / 16 /
592 C DATA IMACH( 6) / 2 /
593 C DATA IMACH( 7) / 2 /
594 C DATA IMACH( 8) / 15 /
595 C DATA IMACH( 9) / 32767 /
596 C DATA IMACH(10) / 2 /
597 C DATA IMACH(11) / 23 /
598 C DATA IMACH(12) / -128 /
599 C DATA IMACH(13) / 127 /
600 C DATA IMACH(14) / 55 /
601 C DATA IMACH(15) / -128 /
602 C DATA IMACH(16) / 127 /
603 C
604 C MACHINE CONSTANTS FOR THE HP 9000
605 C
606 C DATA IMACH( 1) / 5 /
607 C DATA IMACH( 2) / 6 /
608 C DATA IMACH( 3) / 6 /
609 C DATA IMACH( 4) / 7 /
610 C DATA IMACH( 5) / 32 /
611 C DATA IMACH( 6) / 4 /
612 C DATA IMACH( 7) / 2 /
613 C DATA IMACH( 8) / 32 /
614 C DATA IMACH( 9) / 2147483647 /
615 C DATA IMACH(10) / 2 /
616 C DATA IMACH(11) / 24 /
617 C DATA IMACH(12) / -126 /
618 C DATA IMACH(13) / 127 /
619 C DATA IMACH(14) / 53 /
620 C DATA IMACH(15) / -1015 /
621 C DATA IMACH(16) / 1017 /
622 C
623 C MACHINE CONSTANTS FOR THE IBM 360/370 SERIES,
624 C THE XEROX SIGMA 5/7/9, THE SEL SYSTEMS 85/86, AND
625 C THE PERKIN ELMER (INTERDATA) 7/32.
626 C
627 C DATA IMACH( 1) / 5 /
628 C DATA IMACH( 2) / 6 /
629 C DATA IMACH( 3) / 7 /
630 C DATA IMACH( 4) / 6 /
631 C DATA IMACH( 5) / 32 /
632 C DATA IMACH( 6) / 4 /
633 C DATA IMACH( 7) / 2 /
634 C DATA IMACH( 8) / 31 /
635 C DATA IMACH( 9) / Z7FFFFFFF /
636 C DATA IMACH(10) / 16 /
637 C DATA IMACH(11) / 6 /
638 C DATA IMACH(12) / -64 /
639 C DATA IMACH(13) / 63 /
640 C DATA IMACH(14) / 14 /
641 C DATA IMACH(15) / -64 /
642 C DATA IMACH(16) / 63 /
643 C
644 C MACHINE CONSTANTS FOR THE IBM PC
645 C
646 C DATA IMACH( 1) / 5 /
647 C DATA IMACH( 2) / 6 /
648 C DATA IMACH( 3) / 0 /
649 C DATA IMACH( 4) / 0 /
650 C DATA IMACH( 5) / 32 /
651 C DATA IMACH( 6) / 4 /
652 C DATA IMACH( 7) / 2 /
653 C DATA IMACH( 8) / 31 /
654 C DATA IMACH( 9) / 2147483647 /
655 C DATA IMACH(10) / 2 /
656 C DATA IMACH(11) / 24 /
657 C DATA IMACH(12) / -125 /
658 C DATA IMACH(13) / 127 /
659 C DATA IMACH(14) / 53 /
660 C DATA IMACH(15) / -1021 /
661 C DATA IMACH(16) / 1023 /
662 C
663 C MACHINE CONSTANTS FOR THE IBM RS 6000
664 C
665 C DATA IMACH( 1) / 5 /
666 C DATA IMACH( 2) / 6 /
667 C DATA IMACH( 3) / 6 /
668 C DATA IMACH( 4) / 0 /
669 C DATA IMACH( 5) / 32 /
670 C DATA IMACH( 6) / 4 /
671 C DATA IMACH( 7) / 2 /
672 C DATA IMACH( 8) / 31 /
673 C DATA IMACH( 9) / 2147483647 /
674 C DATA IMACH(10) / 2 /
675 C DATA IMACH(11) / 24 /
676 C DATA IMACH(12) / -125 /
677 C DATA IMACH(13) / 128 /
678 C DATA IMACH(14) / 53 /
679 C DATA IMACH(15) / -1021 /
680 C DATA IMACH(16) / 1024 /
681 C
682 C MACHINE CONSTANTS FOR THE INTEL i860
683 C
684 C DATA IMACH( 1) / 5 /
685 C DATA IMACH( 2) / 6 /
686 C DATA IMACH( 3) / 6 /
687 C DATA IMACH( 4) / 6 /
688 C DATA IMACH( 5) / 32 /
689 C DATA IMACH( 6) / 4 /
690 C DATA IMACH( 7) / 2 /
691 C DATA IMACH( 8) / 31 /
692 C DATA IMACH( 9) / 2147483647 /
693 C DATA IMACH(10) / 2 /
694 C DATA IMACH(11) / 24 /
695 C DATA IMACH(12) / -125 /
696 C DATA IMACH(13) / 128 /
697 C DATA IMACH(14) / 53 /
698 C DATA IMACH(15) / -1021 /
699 C DATA IMACH(16) / 1024 /
700 C
701 C MACHINE CONSTANTS FOR THE PDP-10 (KA PROCESSOR)
702 C
703 C DATA IMACH( 1) / 5 /
704 C DATA IMACH( 2) / 6 /
705 C DATA IMACH( 3) / 5 /
706 C DATA IMACH( 4) / 6 /
707 C DATA IMACH( 5) / 36 /
708 C DATA IMACH( 6) / 5 /
709 C DATA IMACH( 7) / 2 /
710 C DATA IMACH( 8) / 35 /
711 C DATA IMACH( 9) / "377777777777 /
712 C DATA IMACH(10) / 2 /
713 C DATA IMACH(11) / 27 /
714 C DATA IMACH(12) / -128 /
715 C DATA IMACH(13) / 127 /
716 C DATA IMACH(14) / 54 /
717 C DATA IMACH(15) / -101 /
718 C DATA IMACH(16) / 127 /
719 C
720 C MACHINE CONSTANTS FOR THE PDP-10 (KI PROCESSOR)
721 C
722 C DATA IMACH( 1) / 5 /
723 C DATA IMACH( 2) / 6 /
724 C DATA IMACH( 3) / 5 /
725 C DATA IMACH( 4) / 6 /
726 C DATA IMACH( 5) / 36 /
727 C DATA IMACH( 6) / 5 /
728 C DATA IMACH( 7) / 2 /
729 C DATA IMACH( 8) / 35 /
730 C DATA IMACH( 9) / "377777777777 /
731 C DATA IMACH(10) / 2 /
732 C DATA IMACH(11) / 27 /
733 C DATA IMACH(12) / -128 /
734 C DATA IMACH(13) / 127 /
735 C DATA IMACH(14) / 62 /
736 C DATA IMACH(15) / -128 /
737 C DATA IMACH(16) / 127 /
738 C
739 C MACHINE CONSTANTS FOR PDP-11 FORTRAN SUPPORTING
740 C 32-BIT INTEGER ARITHMETIC.
741 C
742 C DATA IMACH( 1) / 5 /
743 C DATA IMACH( 2) / 6 /
744 C DATA IMACH( 3) / 5 /
745 C DATA IMACH( 4) / 6 /
746 C DATA IMACH( 5) / 32 /
747 C DATA IMACH( 6) / 4 /
748 C DATA IMACH( 7) / 2 /
749 C DATA IMACH( 8) / 31 /
750 C DATA IMACH( 9) / 2147483647 /
751 C DATA IMACH(10) / 2 /
752 C DATA IMACH(11) / 24 /
753 C DATA IMACH(12) / -127 /
754 C DATA IMACH(13) / 127 /
755 C DATA IMACH(14) / 56 /
756 C DATA IMACH(15) / -127 /
757 C DATA IMACH(16) / 127 /
758 C
759 C MACHINE CONSTANTS FOR PDP-11 FORTRAN SUPPORTING
760 C 16-BIT INTEGER ARITHMETIC.
761 C
762 C DATA IMACH( 1) / 5 /
763 C DATA IMACH( 2) / 6 /
764 C DATA IMACH( 3) / 5 /
765 C DATA IMACH( 4) / 6 /
766 C DATA IMACH( 5) / 16 /
767 C DATA IMACH( 6) / 2 /
768 C DATA IMACH( 7) / 2 /
769 C DATA IMACH( 8) / 15 /
770 C DATA IMACH( 9) / 32767 /
771 C DATA IMACH(10) / 2 /
772 C DATA IMACH(11) / 24 /
773 C DATA IMACH(12) / -127 /
774 C DATA IMACH(13) / 127 /
775 C DATA IMACH(14) / 56 /
776 C DATA IMACH(15) / -127 /
777 C DATA IMACH(16) / 127 /
778 C
779 C MACHINE CONSTANTS FOR THE SILICON GRAPHICS
780 C
781 C DATA IMACH( 1) / 5 /
782 C DATA IMACH( 2) / 6 /
783 C DATA IMACH( 3) / 6 /
784 C DATA IMACH( 4) / 6 /
785 C DATA IMACH( 5) / 32 /
786 C DATA IMACH( 6) / 4 /
787 C DATA IMACH( 7) / 2 /
788 C DATA IMACH( 8) / 31 /
789 C DATA IMACH( 9) / 2147483647 /
790 C DATA IMACH(10) / 2 /
791 C DATA IMACH(11) / 24 /
792 C DATA IMACH(12) / -125 /
793 C DATA IMACH(13) / 128 /
794 C DATA IMACH(14) / 53 /
795 C DATA IMACH(15) / -1021 /
796 C DATA IMACH(16) / 1024 /
797 C
798 C MACHINE CONSTANTS FOR THE SUN
799 C
800 C DATA IMACH( 1) / 5 /
801 C DATA IMACH( 2) / 6 /
802 C DATA IMACH( 3) / 6 /
803 C DATA IMACH( 4) / 6 /
804 C DATA IMACH( 5) / 32 /
805 C DATA IMACH( 6) / 4 /
806 C DATA IMACH( 7) / 2 /
807 C DATA IMACH( 8) / 31 /
808 C DATA IMACH( 9) / 2147483647 /
809 C DATA IMACH(10) / 2 /
810 C DATA IMACH(11) / 24 /
811 C DATA IMACH(12) / -125 /
812 C DATA IMACH(13) / 128 /
813 C DATA IMACH(14) / 53 /
814 C DATA IMACH(15) / -1021 /
815 C DATA IMACH(16) / 1024 /
816 C
817 C MACHINE CONSTANTS FOR THE SUN
818 C USING THE -r8 COMPILER OPTION
819 C
820 C DATA IMACH( 1) / 5 /
821 C DATA IMACH( 2) / 6 /
822 C DATA IMACH( 3) / 6 /
823 C DATA IMACH( 4) / 6 /
824 C DATA IMACH( 5) / 32 /
825 C DATA IMACH( 6) / 4 /
826 C DATA IMACH( 7) / 2 /
827 C DATA IMACH( 8) / 31 /
828 C DATA IMACH( 9) / 2147483647 /
829 C DATA IMACH(10) / 2 /
830 C DATA IMACH(11) / 53 /
831 C DATA IMACH(12) / -1021 /
832 C DATA IMACH(13) / 1024 /
833 C DATA IMACH(14) / 113 /
834 C DATA IMACH(15) / -16381 /
835 C DATA IMACH(16) / 16384 /
836 C
837 C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES FTN COMPILER
838 C
839 C DATA IMACH( 1) / 5 /
840 C DATA IMACH( 2) / 6 /
841 C DATA IMACH( 3) / 1 /
842 C DATA IMACH( 4) / 6 /
843 C DATA IMACH( 5) / 36 /
844 C DATA IMACH( 6) / 4 /
845 C DATA IMACH( 7) / 2 /
846 C DATA IMACH( 8) / 35 /
847 C DATA IMACH( 9) / O377777777777 /
848 C DATA IMACH(10) / 2 /
849 C DATA IMACH(11) / 27 /
850 C DATA IMACH(12) / -128 /
851 C DATA IMACH(13) / 127 /
852 C DATA IMACH(14) / 60 /
853 C DATA IMACH(15) / -1024 /
854 C DATA IMACH(16) / 1023 /
855 C
856 C MACHINE CONSTANTS FOR THE Z80 MICROPROCESSOR
857 C
858 C DATA IMACH( 1) / 1 /
859 C DATA IMACH( 2) / 1 /
860 C DATA IMACH( 3) / 0 /
861 C DATA IMACH( 4) / 1 /
862 C DATA IMACH( 5) / 16 /
863 C DATA IMACH( 6) / 2 /
864 C DATA IMACH( 7) / 2 /
865 C DATA IMACH( 8) / 15 /
866 C DATA IMACH( 9) / 32767 /
867 C DATA IMACH(10) / 2 /
868 C DATA IMACH(11) / 24 /
869 C DATA IMACH(12) / -127 /
870 C DATA IMACH(13) / 127 /
871 C DATA IMACH(14) / 56 /
872 C DATA IMACH(15) / -127 /
873 C DATA IMACH(16) / 127 /
874 C
875 C***FIRST EXECUTABLE STATEMENT I1MACH
876 IF (I .LT. 1 .OR. I .GT. 16) GO TO 10
877 C
878 I1MACH = IMACH(I)
879 RETURN
880 C
881 10 CONTINUE
882 WRITE (UNIT = OUTPUT, FMT = 9000)
883 9000 FORMAT ('1ERROR 1 IN I1MACH - I OUT OF BOUNDS')
884 C
885 C CALL FDUMP
886 C
887 STOP
888 END
@@ -0,0 +1,102
1 subroutine interv ( xt, lxt, x, left, mflag )
2 c from * a practical guide to splines * by C. de Boor
3 computes left = max( i : xt(i) .lt. xt(lxt) .and. xt(i) .le. x ) .
4 c
5 c****** i n p u t ******
6 c xt.....a real sequence, of length lxt , assumed to be nondecreasing
7 c lxt.....number of terms in the sequence xt .
8 c x.....the point whose location with respect to the sequence xt is
9 c to be determined.
10 c
11 c****** o u t p u t ******
12 c left, mflag.....both integers, whose value is
13 c
14 c 1 -1 if x .lt. xt(1)
15 c i 0 if xt(i) .le. x .lt. xt(i+1)
16 c i 0 if xt(i) .lt. x .eq. xt(i+1) .eq. xt(lxt)
17 c i 1 if xt(i) .lt. xt(i+1) .eq. xt(lxt) .lt. x
18 c
19 c In particular, mflag = 0 is the 'usual' case. mflag .ne. 0
20 c indicates that x lies outside the CLOSED interval
21 c xt(1) .le. y .le. xt(lxt) . The asymmetric treatment of the
22 c intervals is due to the decision to make all pp functions cont-
23 c inuous from the right, but, by returning mflag = 0 even if
24 C x = xt(lxt), there is the option of having the computed pp function
25 c continuous from the left at xt(lxt) .
26 c
27 c****** m e t h o d ******
28 c The program is designed to be efficient in the common situation that
29 c it is called repeatedly, with x taken from an increasing or decrea-
30 c sing sequence. This will happen, e.g., when a pp function is to be
31 c graphed. The first guess for left is therefore taken to be the val-
32 c ue returned at the previous call and stored in the l o c a l varia-
33 c ble ilo . A first check ascertains that ilo .lt. lxt (this is nec-
34 c essary since the present call may have nothing to do with the previ-
35 c ous call). Then, if xt(ilo) .le. x .lt. xt(ilo+1), we set left =
36 c ilo and are done after just three comparisons.
37 c Otherwise, we repeatedly double the difference istep = ihi - ilo
38 c while also moving ilo and ihi in the direction of x , until
39 c xt(ilo) .le. x .lt. xt(ihi) ,
40 c after which we use bisection to get, in addition, ilo+1 = ihi .
41 c left = ilo is then returned.
42 c
43 integer left,lxt,mflag, ihi,ilo,istep,middle
44 real x,xt(lxt)
45 data ilo /1/
46 save ilo
47 ihi = ilo + 1
48 if (ihi .lt. lxt) go to 20
49 if (x .ge. xt(lxt)) go to 110
50 if (lxt .le. 1) go to 90
51 ilo = lxt - 1
52 ihi = lxt
53 c
54 20 if (x .ge. xt(ihi)) go to 40
55 if (x .ge. xt(ilo)) go to 100
56 c
57 c **** now x .lt. xt(ilo) . decrease ilo to capture x .
58 istep = 1
59 31 ihi = ilo
60 ilo = ihi - istep
61 if (ilo .le. 1) go to 35
62 if (x .ge. xt(ilo)) go to 50
63 istep = istep*2
64 go to 31
65 35 ilo = 1
66 if (x .lt. xt(1)) go to 90
67 go to 50
68 c **** now x .ge. xt(ihi) . increase ihi to capture x .
69 40 istep = 1
70 41 ilo = ihi
71 ihi = ilo + istep
72 if (ihi .ge. lxt) go to 45
73 if (x .lt. xt(ihi)) go to 50
74 istep = istep*2
75 go to 41
76 45 if (x .ge. xt(lxt)) go to 110
77 ihi = lxt
78 c
79 c **** now xt(ilo) .le. x .lt. xt(ihi) . narrow the interval.
80 50 middle = (ilo + ihi)/2
81 if (middle .eq. ilo) go to 100
82 c note. it is assumed that middle = ilo in case ihi = ilo+1 .
83 if (x .lt. xt(middle)) go to 53
84 ilo = middle
85 go to 50
86 53 ihi = middle
87 go to 50
88 c**** set output and return.
89 90 mflag = -1
90 left = 1
91 return
92 100 mflag = 0
93 left = ilo
94 return
95 110 mflag = 1
96 if (x .eq. xt(lxt)) mflag = 0
97 left = lxt
98 111 if (left .eq. 1) return
99 left = left - 1
100 if (xt(left) .lt. xt(lxt)) return
101 go to 111
102 end
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
This diff has been collapsed as it changes many lines, (555 lines changed) Show them Hide them
@@ -0,0 +1,555
1 subroutine lagp(plag,wl,r0,dr,nl,nrange)
2 c
3 c predict lagged product matrix using state parameters stored
4 c as cubic b-splines
5 c read weights for numeric integration from a file
6 c
7 c faster version - assumes samples taken at half-integer lags, ranges
8 c
9 include 'fitter.h'
10 include 'spline.h'
11 include 'bfield.h'
12 integer nl,nrange
13 real plag(nl,nrange),taus(nl)
14 parameter(nw=1000)
15 integer ilag(nw)
16 real weight(nw),dtau(nw),drange(nw)
17 logical first
18 real store(2*nl,2*nrange,2)
19 data first/.true./
20 c
21
22 c write(*,*) "dens_before: ",dens
23 c call exit
24 c zero out array
25 c write(*,*) "Starting lagp"
26 do i=1,nrange
27 do j=1,nl
28 plag(j,i)=0.0
29 end do
30 end do
31
32 c
33 c compute all required acfs
34 c
35 do i=1,2*nrange
36 ii=(i-1)/2+1
37 alt=r0+float(i-1)*dr*0.5 ! half integer ranges
38 c write(*,*) "dens_before: ",dens
39 c call exit
40 c write(*,*) "alt: ",alt
41 c write(*,*) "dens: ",dens
42 c write(*,*) "te: ",te
43 c write(*,*) "ti1: ",ti1
44 c write(*,*) "hf: ",hf
45 c write(*,*) "hef: ",hef
46 c call exit
47 call get_spline(alt,dens,te,ti1,hf,hef)
48 c write(*,*) "dens_after: ",dens
49 c call exit
50 do k=1,nion
51 ti(k)=ti1
52 end do
53 fi(2)=hf
54 fi(3)=hef
55 fi(1)=1.0-hf-hef
56
57 do j=1,2*nl
58 tau=float(j-1)*(dr/1.5e5)*0.5 ! half integer lags
59
60 c just consider a single azimuth angle for now
61
62 c call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
63 c & alpha_prof(ii)+1.74e-2,dens,bfld_prof(ii),rho)
64 c store(j,i,1)=rho*dens*(100.0/alt)**2
65
66 c call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
67 c & alpha_prof(ii)-1.74e-2,dens,bfld_prof(ii),rho)
68 c store(j,i,2)=rho*dens*(100.0/alt)**2
69
70 call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
71 & alpha_prof(ii),dens,bfld_prof(ii),rho)
72 store(j,i,1)=rho*dens*(100.0/alt)**2
73 c write(*,*) "store", store(j,i,1)
74 c call exit
75 end do
76 end do
77
78 c construct lagged products
79 c
80 c write(*,*) "before weights"
81 c write(*,*) first
82 c write(*,*) "weight before: ",weight
83 if(first) then
84 open(unit=25,file='/usr/local/lib/faraday/weights.dat',
85 & status='old')
86 read (25,*) nwt
87 do i=1,nwt
88 read(25,*) weight(i),dtau(i),drange(i),ilag(i)
89 c write(*,*) "ilag: ",ilag(i)
90 end do
91 c flush(25)
92 close(25)
93 c first=.false.
94 end if
95
96 c write(*,*) "after weights"
97
98 c write(*,*) "weight(3): ",weight(3)
99 c call exit
100 c write(*,*) "nl: ",nl,"nrange: ",nrange,"nwt: ",nwt
101
102 do i=1+nl,nrange ! don't worry about redundancy here
103
104 do j=1,nwt
105 c write(*,*) "j: ",j
106 alt=r0+(float(i-1)+drange(j))*dr
107 tau=abs(dtau(j)*dr/1.5e5)
108 lag=ilag(j)+1
109 c write(*,*) tau
110
111 k=1+2.0*(tau/(dr/1.5e5))
112 l=1+2.0*(alt-r0)/dr
113
114 do m=1,1 ! 2
115
116 c call exit
117 c write(*,*) i
118 c call exit
119 c if (i .eq. nrange) then
120 c if (j .eq. 227) then
121
122 c write(*,*) "lag: ",lag
123 c write(*,*) "ilag: ",ilag(j)
124 c call exit
125 c write(*,*) "plag: ",plag(lag,i)
126 c write(*,*) "weight: ",weight
127 c
128 c write(*,*) "weight: ",weight(j)
129 c write(*,*) "store: ",store(k,l,m)
130 c call exit
131 c end if
132 c end if
133 plag(lag,i)=plag(lag,i)+weight(j)*store(k,l,m)
134 c if (i .eq. nrange) then
135 c write(*,*) "lag: ",lag
136 c write(*,*) "plag: ",plag(lag,i)
137 c write(*,*) "plag: ",plag(lag,i)
138 c call exit
139 c end if
140 end do
141 c write(*,*) "plag: ",plag(lag,i)
142 c write(*,*) "plag: ",plag(12,72)
143 c call exit
144 end do
145 c call exit
146 c write(*,*) "plag: ",plag(12,72)
147 end do
148 c write(*,*) "plag: ",plag(12,72)
149 c call exit
150 c write(*,*) "End LAGP"
151 return
152 end
153
154 subroutine lagp_old(plag,wl,r0,dr,nl,nrange)
155 c
156 c predict lagged product matrix using state parameters stored
157 c as cubic b-splines
158 c read weights for numeric integration from a file
159 c
160 c general version - samples can be anywhere
161 c
162 include 'fitter.h'
163 include 'spline.h'
164 include 'bfield.h'
165 integer nl,nrange
166 real plag(nl,nrange),taus(nl)
167 parameter(nw=1000)
168 integer ilag(nw)
169 real weight(nw),dtau(nw),drange(nw)
170 logical first
171 data first/.true./
172 c
173
174 c zero out array
175
176 do i=1,nrange
177 do j=1,nl
178 plag(j,i)=0.0
179 end do
180 end do
181
182 c
183 c construct lagged products
184 c
185
186 if(first) then
187 open(unit=25,file='weights.dat',status='old')
188 read (25,*) nwt
189 do i=1,nwt
190 read(25,*) weight(i),dtau(i),drange(i),ilag(i)
191 end do
192 close(25)
193 first=.false.
194 end if
195
196 c can avoid recalculating splines and/or ACFs when parameters repeat
197
198 altp=-1.0
199 taup=-1.0
200
201 do i=1+nl,nrange
202 do j=1,nwt
203 alt=r0+(float(i-1)+drange(j))*dr
204 ii=(alt-r0)/dr+1
205
206 if(alt.ne.altp) then
207 call get_spline(alt,dens,te,ti1,hf,hef)
208
209 c write(*,*) alt,dens,te,ti1,hf,hef
210
211 do k=1,nion
212 ti(k)=ti1
213 end do
214 fi(2)=hf
215 fi(3)=hef
216 fi(1)=1.0-hf-hef
217 end if
218
219 tau=abs(dtau(j)*dr/1.5e5)
220 lag=ilag(j)+1
221
222 c write(*,*) i,alpha_prof(i),bfld_prof(i)
223
224 if(tau.ne.taup.or.alt.ne.altp) then
225
226 c two- or three- point Gauss Hermite quadrature rule
227
228 c call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
229 c & alpha_prof(ii)+1.74e-2,dens,bfld_prof(ii),rho1)
230
231 c call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
232 c & alpha_prof(ii)-1.74e-2,dens,bfld_prof(ii),rho2)
233
234 c call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
235 c & alpha_prof(ii),dens,bfld_prof(ii),rho1)
236
237 c call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
238 c & alpha_prof(ii)+1.9e-2,dens,bfld_prof(ii),rho2)
239
240 c call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
241 c & alpha_prof(ii)-1.9e-2,dens,bfld_prof(ii),rho3)
242
243 call acf2(wl,tau,te,ti,fi,ven,vin,wi,nion,
244 & alpha_prof(ii),dens,bfld_prof(ii),rho)
245
246 c rho=(rho1+rho2)/2.0
247 c rho=(rho2+rho3)*0.29541+rho1*1.18164)/1.77246
248
249 end if
250
251 plag(lag,i)=plag(lag,i)+weight(j)*rho*dens*(100.0/alt)**2
252
253 altp=alt
254 taup=tau
255
256 end do
257 end do
258
259 return
260 end
261
262 function atanh(x)
263 c
264 real atanh,x
265 c
266 atanh=log(sqrt((1.+x)/(1.-x)))
267 return
268 end
269
270 subroutine get_spline(alt,dens,te,ti,hf,hef)
271 c
272 c routines for handling cubic b-spline interpolation
273 c gets values consistent with stored coefficients
274 c
275
276 include 'spline.h'
277
278 c
279 c bspline values from 200-1500 km in 15-km intervals
280 c must specify five knots above ceiling
281 c note offset ... start accessing splines above bottom two knots
282 c
283 c five banks of splines, for Ne, Te, Ti, H+, and He+ versus altitude
284 c need to initialize ta somewhere
285 c
286 c write(*,*) "ta: ",ta
287 c write(*,*) "bcoef(1,1): ",bcoef(1,1)
288 c write(*,*) "nspline: ",nspline
289 c write(*,*) "norder: ",norder
290 c write(*,*) "alt: ",alt
291 dens=bvalue(ta,bcoef(1,1),nspline,norder,alt,0)
292 c write(*,*) "dens_inside_get_spline: ",dens
293 c write(*,*) dens
294 c call exit
295 dens=10.0**MAX(dens,2.0)
296 c write(*,*) dens
297 c call exit
298 te=bvalue(ta,bcoef(1,2),nspline,norder,alt,0)
299 te=t0+t1*(1.0+tanh(te))/2.0 ! DLH 10/14 was 3500
300 c tr=bvalue(ta,bcoef(1,3),nspline,norder,alt,0)
301 c tr=exp(tr)
302 c ti=te/tr
303 ti=bvalue(ta,bcoef(1,3),nspline,norder,alt,0)
304 ti=t0+t1*(1.0+tanh(ti))/2.0 ! DLH 10/14 was 3500
305 hf=bvalue(ta,bcoef(1,4),nspline,norder,alt,0)
306 hf=(1.0+tanh(hf))/2.0
307 hef=bvalue(ta,bcoef(1,5),nspline,norder,alt,0)
308 hef=(1.0+tanh(hef))/2.0
309 return
310 end
311
312
313 real function bvalue ( t, bcoef, n, k, x, jderiv )
314 c from * a practical guide to splines * by c. de boor
315 calls interv
316 c
317 calculates value at x of jderiv-th derivative of spline from b-repr.
318 c the spline is taken to be continuous from the right, EXCEPT at the
319 c rightmost knot, where it is taken to be continuous from the left.
320 c
321 c****** i n p u t ******
322 c t, bcoef, n, k......forms the b-representation of the spline f to
323 c be evaluated. specifically,
324 c t.....knot sequence, of length n+k, assumed nondecreasing.
325 c bcoef.....b-coefficient sequence, of length n .
326 c n.....length of bcoef and dimension of spline(k,t),
327 c a s s u m e d positive .
328 c k.....order of the spline .
329 c
330 c w a r n i n g . . . the restriction k .le. kmax (=20) is imposed
331 c arbitrarily by the dimension statement for aj, dl, dr below,
332 c but is n o w h e r e c h e c k e d for.
333 c
334 c x.....the point at which to evaluate .
335 c jderiv.....integer giving the order of the derivative to be evaluated
336 c a s s u m e d to be zero or positive.
337 c
338 c****** o u t p u t ******
339 c bvalue.....the value of the (jderiv)-th derivative of f at x .
340 c
341 c****** m e t h o d ******
342 c The nontrivial knot interval (t(i),t(i+1)) containing x is lo-
343 c cated with the aid of interv . The k b-coeffs of f relevant for
344 c this interval are then obtained from bcoef (or taken to be zero if
345 c not explicitly available) and are then differenced jderiv times to
346 c obtain the b-coeffs of (d**jderiv)f relevant for that interval.
347 c Precisely, with j = jderiv, we have from x.(12) of the text that
348 c
349 c (d**j)f = sum ( bcoef(.,j)*b(.,k-j,t) )
350 c
351 c where
352 c / bcoef(.), , j .eq. 0
353 c /
354 c bcoef(.,j) = / bcoef(.,j-1) - bcoef(.-1,j-1)
355 c / ----------------------------- , j .gt. 0
356 c / (t(.+k-j) - t(.))/(k-j)
357 c
358 c Then, we use repeatedly the fact that
359 c
360 c sum ( a(.)*b(.,m,t)(x) ) = sum ( a(.,x)*b(.,m-1,t)(x) )
361 c with
362 c (x - t(.))*a(.) + (t(.+m-1) - x)*a(.-1)
363 c a(.,x) = ---------------------------------------
364 c (x - t(.)) + (t(.+m-1) - x)
365 c
366 c to write (d**j)f(x) eventually as a linear combination of b-splines
367 c of order 1 , and the coefficient for b(i,1,t)(x) must then be the
368 c desired number (d**j)f(x). (see x.(17)-(19) of text).
369 c
370 parameter (kmax = 40)
371 integer jderiv,k,n, i,ilo,imk,j,jc,jcmin,jcmax,jj,kmj,km1
372 * ,mflag,nmi,jdrvp1
373 c integer kmax
374 C real bcoef(n),t(1),x, aj(20),dl(20),dr(20),fkmj
375 real bcoef(n),x, aj(kmax),dl(kmax),dr(kmax),fkmj
376 dimension t(n+k)
377 c former fortran standard made it impossible to specify the length of t
378 c precisely without the introduction of otherwise superfluous addition-
379 c al arguments.
380 bvalue = 0.
381 if (jderiv .ge. k) go to 99
382 c
383 c *** Find i s.t. 1 .le. i .lt. n+k and t(i) .lt. t(i+1) and
384 c t(i) .le. x .lt. t(i+1) . If no such i can be found, x lies
385 c outside the support of the spline f , hence bvalue = 0.
386 c (The asymmetry in this choice of i makes f rightcontinuous, except
387 c at t(n+k) where it is leftcontinuous.)
388 call interv ( t, n+k, x, i, mflag )
389 if (mflag .ne. 0) go to 99
390 c *** if k = 1 (and jderiv = 0), bvalue = bcoef(i).
391 km1 = k - 1
392 if (km1 .gt. 0) go to 1
393 bvalue = bcoef(i)
394 go to 99
395 c
396 c *** store the k b-spline coefficients relevant for the knot interval
397 c (t(i),t(i+1)) in aj(1),...,aj(k) and compute dl(j) = x - t(i+1-j),
398 c dr(j) = t(i+j) - x, j=1,...,k-1 . set any of the aj not obtainable
399 c from input to zero. set any t.s not obtainable equal to t(1) or
400 c to t(n+k) appropriately.
401 1 jcmin = 1
402 imk = i - k
403 if (imk .ge. 0) go to 8
404 jcmin = 1 - imk
405 do 5 j=1,i
406 5 dl(j) = x - t(i+1-j)
407 do 6 j=i,km1
408 aj(k-j) = 0.
409 6 dl(j) = dl(i)
410 go to 10
411 8 do 9 j=1,km1
412 9 dl(j) = x - t(i+1-j)
413 c
414 10 jcmax = k
415 nmi = n - i
416 if (nmi .ge. 0) go to 18
417 jcmax = k + nmi
418 do 15 j=1,jcmax
419 15 dr(j) = t(i+j) - x
420 do 16 j=jcmax,km1
421 aj(j+1) = 0.
422 16 dr(j) = dr(jcmax)
423 go to 20
424 18 do 19 j=1,km1
425 19 dr(j) = t(i+j) - x
426 c
427 20 do 21 jc=jcmin,jcmax
428 21 aj(jc) = bcoef(imk + jc)
429 c
430 c *** difference the coefficients jderiv times.
431 if (jderiv .eq. 0) go to 30
432 do 23 j=1,jderiv
433 kmj = k-j
434 fkmj = float(kmj)
435 ilo = kmj
436 do 23 jj=1,kmj
437 aj(jj) = ((aj(jj+1) - aj(jj))/(dl(ilo) + dr(jj)))*fkmj
438 23 ilo = ilo - 1
439 c
440 c *** compute value at x in (t(i),t(i+1)) of jderiv-th derivative,
441 c given its relevant b-spline coeffs in aj(1),...,aj(k-jderiv).
442 30 if (jderiv .eq. km1) go to 39
443 jdrvp1 = jderiv + 1
444 do 33 j=jdrvp1,km1
445 kmj = k-j
446 ilo = kmj
447 do 33 jj=1,kmj
448 aj(jj) = (aj(jj+1)*dl(ilo) + aj(jj)*dr(jj))/(dl(ilo)+dr(jj))
449 33 ilo = ilo - 1
450 39 bvalue = aj(1)
451 c
452 99 return
453 end
454 subroutine interv ( xt, lxt, x, left, mflag )
455 c from * a practical guide to splines * by C. de Boor
456 computes left = max( i : xt(i) .lt. xt(lxt) .and. xt(i) .le. x ) .
457 c
458 c****** i n p u t ******
459 c xt.....a real sequence, of length lxt , assumed to be nondecreasing
460 c lxt.....number of terms in the sequence xt .
461 c x.....the point whose location with respect to the sequence xt is
462 c to be determined.
463 c
464 c****** o u t p u t ******
465 c left, mflag.....both integers, whose value is
466 c
467 c 1 -1 if x .lt. xt(1)
468 c i 0 if xt(i) .le. x .lt. xt(i+1)
469 c i 0 if xt(i) .lt. x .eq. xt(i+1) .eq. xt(lxt)
470 c i 1 if xt(i) .lt. xt(i+1) .eq. xt(lxt) .lt. x
471 c
472 c In particular, mflag = 0 is the 'usual' case. mflag .ne. 0
473 c indicates that x lies outside the CLOSED interval
474 c xt(1) .le. y .le. xt(lxt) . The asymmetric treatment of the
475 c intervals is due to the decision to make all pp functions cont-
476 c inuous from the right, but, by returning mflag = 0 even if
477 C x = xt(lxt), there is the option of having the computed pp function
478 c continuous from the left at xt(lxt) .
479 c
480 c****** m e t h o d ******
481 c The program is designed to be efficient in the common situation that
482 c it is called repeatedly, with x taken from an increasing or decrea-
483 c sing sequence. This will happen, e.g., when a pp function is to be
484 c graphed. The first guess for left is therefore taken to be the val-
485 c ue returned at the previous call and stored in the l o c a l varia-
486 c ble ilo . A first check ascertains that ilo .lt. lxt (this is nec-
487 c essary since the present call may have nothing to do with the previ-
488 c ous call). Then, if xt(ilo) .le. x .lt. xt(ilo+1), we set left =
489 c ilo and are done after just three comparisons.
490 c Otherwise, we repeatedly double the difference istep = ihi - ilo
491 c while also moving ilo and ihi in the direction of x , until
492 c xt(ilo) .le. x .lt. xt(ihi) ,
493 c after which we use bisection to get, in addition, ilo+1 = ihi .
494 c left = ilo is then returned.
495 c
496 integer left,lxt,mflag, ihi,ilo,istep,middle
497 real x,xt(lxt)
498 data ilo /1/
499 save ilo
500 ihi = ilo + 1
501 if (ihi .lt. lxt) go to 20
502 if (x .ge. xt(lxt)) go to 110
503 if (lxt .le. 1) go to 90
504 ilo = lxt - 1
505 ihi = lxt
506 c
507 20 if (x .ge. xt(ihi)) go to 40
508 if (x .ge. xt(ilo)) go to 100
509 c
510 c **** now x .lt. xt(ilo) . decrease ilo to capture x .
511 istep = 1
512 31 ihi = ilo
513 ilo = ihi - istep
514 if (ilo .le. 1) go to 35
515 if (x .ge. xt(ilo)) go to 50
516 istep = istep*2
517 go to 31
518 35 ilo = 1
519 if (x .lt. xt(1)) go to 90
520 go to 50
521 c **** now x .ge. xt(ihi) . increase ihi to capture x .
522 40 istep = 1
523 41 ilo = ihi
524 ihi = ilo + istep
525 if (ihi .ge. lxt) go to 45
526 if (x .lt. xt(ihi)) go to 50
527 istep = istep*2
528 go to 41
529 45 if (x .ge. xt(lxt)) go to 110
530 ihi = lxt
531 c
532 c **** now xt(ilo) .le. x .lt. xt(ihi) . narrow the interval.
533 50 middle = (ilo + ihi)/2
534 if (middle .eq. ilo) go to 100
535 c note. it is assumed that middle = ilo in case ihi = ilo+1 .
536 if (x .lt. xt(middle)) go to 53
537 ilo = middle
538 go to 50
539 53 ihi = middle
540 go to 50
541 c**** set output and return.
542 90 mflag = -1
543 left = 1
544 return
545 100 mflag = 0
546 left = ilo
547 return
548 110 mflag = 1
549 if (x .eq. xt(lxt)) mflag = 0
550 left = lxt
551 111 if (left .eq. 1) return
552 left = left - 1
553 if (xt(left) .lt. xt(lxt)) return
554 go to 111
555 end
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now