263 integer,
parameter :: rk = kind(1.0d0)
264 real(kind=rk),
dimension(obs_dim) :: a,s,q,w,e
265 real(kind=rk),
dimension(obs_dim,10) :: aa,ss,qq,ww,ee
266 real(kind=rk) :: dnrm2,rr
267 real(kind=rk),
parameter :: pass = 1.0d-15
268 real(kind=rk),
parameter :: warn = 1.0d-13
269 integer :: pfcount,i,k,l
275 write(6,*)
'TESTING R'
276 write(6,*)
'TESTING R WITH SINGLE RHS'
283 call
r(obs_dim,1,a,s,1)
286 rr = dnrm2(obs_dim,s,1)
287 write(6,
'(A)',advance=
'no')
'Test 1: R(0) ... '
288 if(rr .lt. pass)
then
290 write(6,
'(A)',advance=
'yes')
'passed'
291 elseif(rr .lt. warn)
then
292 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
294 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
298 call
rhalf(obs_dim,1,a,s,1)
300 rr = dnrm2(obs_dim,s,1)
301 write(6,
'(A)',advance=
'no')
'Test 2: Rhalf(0) ... '
302 if(rr .lt. pass)
then
304 write(6,
'(A)',advance=
'yes')
'passed'
305 elseif(rr .lt. warn)
then
306 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
308 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
313 call
r(obs_dim,1,a,q,1)
314 call
rhalf(obs_dim,1,s,w,1)
316 if(all(w .eq. 0.0d0))
then
317 write(6,
'(A)')
'SERIOUS ERROR: Rhalf*e = 0 i.e. Rhalf is the zero&
322 call
rhalf(obs_dim,1,w,e,1)
324 rr = dnrm2(obs_dim,q-e,1)
325 write(6,
'(A)',advance=
'no')
'Test 3: [RhalfRhalf(1)]-[R(1)] ... '
326 if(rr .lt. pass)
then
328 write(6,
'(A)',advance=
'yes')
'passed'
329 elseif(rr .lt. warn)
then
330 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
332 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
337 call
r(obs_dim,1,a,q,1)
338 call
rhalf(obs_dim,1,s,w,1)
339 call
rhalf(obs_dim,1,w,e,1)
341 rr = dnrm2(obs_dim,q-e,1)
342 write(6,
'(A)',advance=
'no')
'Test 4: [RhalfRhalf(-1)]-[R(-1)] ... '
343 if(rr .lt. pass)
then
345 write(6,
'(A)',advance=
'yes')
'passed'
346 elseif(rr .lt. warn)
then
347 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
349 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
354 call
r(obs_dim,1,a,q,1)
355 call
rhalf(obs_dim,1,s,w,1)
356 call
rhalf(obs_dim,1,w,e,1)
358 rr = dnrm2(obs_dim,q-e,1)
359 write(6,
'(A)',advance=
'no')
'Test 5: [RhalfRhalf( N(0,1) )]-[R( N(0,1) )] ... '
360 if(rr .lt. pass)
then
362 write(6,
'(A)',advance=
'yes')
'passed'
363 elseif(rr .lt. warn)
then
364 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
366 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
369 write(6,
'(A)',advance=
'yes')
'TESTING R WITH MULTIPLE RIGHT HAND SIDES'
379 write(6,
'(A,i2,A,i2,A)',advance=
'no')
'Test 6 ',i,
' RHS: R(0)-&
380 &Rhalf(Rhalf(0)) ... '
381 elseif( l .eq. 7)
then
384 write(6,
'(A,i2,A,i2,A)',advance=
'no')
'Test 7 ',i,
' RHS: R(1)-&
385 &Rhalf(Rhalf(1)) ... '
386 elseif( l .eq. 8)
then
389 write(6,
'(A,i2,A,i2,A)',advance=
'no')
'Test 8 ',i,
' RHS: R(-1)-Rha&
392 elseif( l .eq. 9)
then
395 write(6,
'(A,i2,A,i2,A)',advance=
'no')
'Test 9 ',i,
' RHS: R( N(&
397 &Rhalf(Rhalf( N(0,1) )) ... '
399 call
r(obs_dim,i,aa(:,1:i),qq(:,1:i),1)
400 call
rhalf(obs_dim,i,ss(:,1:i),ww(:,1:i),1)
401 call
rhalf(obs_dim,i,ww(:,1:i),ee(:,1:i),1)
405 rr = dnrm2(obs_dim,qq(:,k)-ee(:,k),1)
407 if(rr .lt. pass)
then
409 if(k .eq. 1 .and. i .eq. 1)
then
410 write(6,
'(A,i2)',advance=
'yes')
'passed: ',k
411 elseif(k .eq. 1)
then
412 write(6,
'(A,i2)',advance=
'no')
'passed: ',k
413 elseif(k .eq. i)
then
414 write(6,
'(A,i2)',advance=
'yes')
' ',k
416 write(6,
'(A,i2)',advance=
'no')
' ',k
418 elseif(rr .lt. warn)
then
420 if(k .eq. 1 .and. i .eq. 1)
then
421 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
'passed: ',k,
' warn ',rr
422 elseif(k .eq. 1)
then
423 write(6,
'(A,i2,A,es9.2)',advance=
'no')
'passed: ',k,
' warn ',rr
424 elseif(k .eq. i)
then
425 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
' ',k,
' warn ',rr
427 write(6,
'(A,i2,A,es9.2)',advance=
'no')
' ',k,
' warn ',rr
431 write(6,
'(i2,A,es9.2)',advance=
'yes') k,
' failed with rr = ',rr
438 write(6,*)
'TESTING SOLVE R WITH SINGLE RHS'
442 call
solve_r(obs_dim,pf%count,a,s,1)
445 rr = dnrm2(obs_dim,s,1)
446 write(6,
'(A)',advance=
'no')
'Test 10: R^(-1)(0) ... '
447 if(rr .lt. pass)
then
449 write(6,
'(A)',advance=
'yes')
'passed'
450 elseif(rr .lt. warn)
then
451 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
453 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
459 write(6,
'(A)',advance=
'no')
'Test 11: R^(-1)[R(1)] ... '
460 elseif (l .eq. 12)
then
462 write(6,
'(A)',advance=
'no')
'Test 12: R^(-1)[R(-1)] ... '
463 elseif (l .eq. 13)
then
465 write(6,
'(A)',advance=
'no')
'Test 13: R^(-1)[R( N(0,1) )] ... '
469 call
r(obs_dim,1,a,q,1)
470 call
solve_r(obs_dim,pf%count,q,w,1)
472 rr = dnrm2(obs_dim,w-a,1)
475 if(rr .lt. pass)
then
477 write(6,
'(A)',advance=
'yes')
'passed'
478 elseif(rr .lt. warn)
then
479 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
481 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
486 write(6,*)
'TESTING SOLVE R WITH MULTIPLE RHS'
493 write(6,
'(A)',advance=
'no')
'Test 14: R^(-1)[R(1)] ... '
494 elseif (l .eq. 15)
then
496 write(6,
'(A)',advance=
'no')
'Test 15: R^(-1)[R(-1)] ... '
497 elseif (l .eq. 16)
then
499 write(6,
'(A)',advance=
'no')
'Test 16: R^(-1)[R( N(0,1) )] ... '
503 call
r(obs_dim,i,aa(:,1:i),qq(:,1:i),1)
504 call
solve_r(obs_dim,pf%count,qq(:,1:i),ww(:,1:i),1)
507 rr = dnrm2(obs_dim,ww(:,k)-aa(:,k),1)
509 if(rr .lt. pass)
then
511 if(k .eq. 1 .and. i .eq. 1)
then
512 write(6,
'(A,i2)',advance=
'yes')
'passed: ',k
513 elseif(k .eq. 1)
then
514 write(6,
'(A,i2)',advance=
'no')
'passed: ',k
515 elseif(k .eq. i)
then
516 write(6,
'(A,i2)',advance=
'yes')
' ',k
518 write(6,
'(A,i2)',advance=
'no')
' ',k
520 elseif(rr .lt. warn)
then
522 if(k .eq. 1 .and. i .eq. 1)
then
523 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
'passed: ',k,
' warn ',rr
524 elseif(k .eq. 1)
then
525 write(6,
'(A,i2,A,es9.2)',advance=
'no')
'passed: ',k,
' warn ',rr
526 elseif(k .eq. i)
then
527 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
' ',k,
' warn ',rr
529 write(6,
'(A,i2,A,es9.2)',advance=
'no')
' ',k,
' warn ',rr
533 write(6,
'(i2,A,es9.2)',advance=
'yes') k,
' failed with rr = ',rr
544 write(6,*)
'TESTING SOLVE Rhalf WITH SINGLE RHS'
551 rr = dnrm2(obs_dim,s,1)
552 write(6,
'(A)',advance=
'no')
'Test 17: R^(-1/2)(0) ... '
553 if(rr .lt. pass)
then
555 write(6,
'(A)',advance=
'yes')
'passed'
556 elseif(rr .lt. warn)
then
557 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
559 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
565 write(6,
'(A)',advance=
'no')
'Test 18: R^{-1/2}[R^{1/2}(1)] ... '
566 elseif (l .eq. 19)
then
568 write(6,
'(A)',advance=
'no')
'Test 19: R^{-1/2}[R^{1/2}(-1)] ... '
569 elseif (l .eq. 20)
then
571 write(6,
'(A)',advance=
'no')
'Test 20: R^{-1/2}[R^{1/2}( N(0,1) )] ... '
575 call
rhalf(obs_dim,1,a,q,1)
578 rr = dnrm2(obs_dim,w-a,1)
581 if(rr .lt. pass)
then
583 write(6,
'(A)',advance=
'yes')
'passed'
584 elseif(rr .lt. warn)
then
585 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
587 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
592 write(6,*)
'TESTING SOLVE Rhalf WITH MULTIPLE RHS'
599 write(6,
'(A)',advance=
'no')
'Test 21: R^{-1/2}[R^{1/2}(1)] ... '
600 elseif (l .eq. 22)
then
602 write(6,
'(A)',advance=
'no')
'Test 22: R^{-1/2}[R^{1/2}(-1)] ... '
603 elseif (l .eq. 23)
then
605 write(6,
'(A)',advance=
'no')
'Test 23: R^{-1/2}[R^{1/2}( N(0,1) )] ... '
609 call
rhalf(obs_dim,i,aa(:,1:i),qq(:,1:i),1)
610 call
solve_rhalf(obs_dim,pf%count,qq(:,1:i),ww(:,1:i),1)
613 rr = dnrm2(obs_dim,ww(:,k)-aa(:,k),1)
615 if(rr .lt. pass)
then
617 if(k .eq. 1 .and. i .eq. 1)
then
618 write(6,
'(A,i2)',advance=
'yes')
'passed: ',k
619 elseif(k .eq. 1)
then
620 write(6,
'(A,i2)',advance=
'no')
'passed: ',k
621 elseif(k .eq. i)
then
622 write(6,
'(A,i2)',advance=
'yes')
' ',k
624 write(6,
'(A,i2)',advance=
'no')
' ',k
626 elseif(rr .lt. warn)
then
628 if(k .eq. 1 .and. i .eq. 1)
then
629 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
'passed: ',k,
' warn ',rr
630 elseif(k .eq. 1)
then
631 write(6,
'(A,i2,A,es9.2)',advance=
'no')
'passed: ',k,
' warn ',rr
632 elseif(k .eq. i)
then
633 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
' ',k,
' warn ',rr
635 write(6,
'(A,i2,A,es9.2)',advance=
'no')
' ',k,
' warn ',rr
639 write(6,
'(i2,A,es9.2)',advance=
'yes') k,
' failed with rr = ',rr
681 integer,
parameter :: rk = kind(1.0d0)
682 real(kind=rk),
dimension(state_dim) :: a,s,qqq,w,e
683 real(kind=rk),
dimension(state_dim,10) :: aa,ss,qq,ww,ee
684 real(kind=rk) :: dnrm2,rr
685 real(kind=rk),
parameter :: pass = 1.0d-15
686 real(kind=rk),
parameter :: warn = 1.0d-13
687 integer :: pfcount,i,k,l
693 write(6,*)
'TESTING Q'
694 write(6,*)
'TESTING Q WITH SINGLE RHS'
704 rr = dnrm2(state_dim,s,1)
705 write(6,
'(A)',advance=
'no')
'Test 1: Q(0) ... '
706 if(rr .lt. pass)
then
708 write(6,
'(A)',advance=
'yes')
'passed'
709 elseif(rr .lt. warn)
then
710 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
712 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
718 rr = dnrm2(state_dim,s,1)
719 write(6,
'(A)',advance=
'no')
'Test 2: Qhalf(0) ... '
720 if(rr .lt. pass)
then
722 write(6,
'(A)',advance=
'yes')
'passed'
723 elseif(rr .lt. warn)
then
724 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
726 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
734 if(all(w .eq. 0.0d0))
then
735 write(6,
'(A)')
'SERIOUS ERROR: Qhalf*e = 0 i.e. Qhalf is the zero&
742 rr = dnrm2(state_dim,qqq-e,1)
743 write(6,
'(A)',advance=
'no')
'Test 3: [QhalfQhalf(1)]-[Q(1)] ... '
744 if(rr .lt. pass)
then
746 write(6,
'(A)',advance=
'yes')
'passed'
747 elseif(rr .lt. warn)
then
748 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
750 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
759 rr = dnrm2(state_dim,qqq-e,1)
760 write(6,
'(A)',advance=
'no')
'Test 4: [QhalfQhalf(-1)]-[R(-1)] ... '
761 if(rr .lt. pass)
then
763 write(6,
'(A)',advance=
'yes')
'passed'
764 elseif(rr .lt. warn)
then
765 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
767 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
776 rr = dnrm2(state_dim,qqq-e,1)
777 write(6,
'(A)',advance=
'no')
'Test 5: [QhalfQhalf( N(0,1) )]-[Q( N(0,1) )] ... '
778 if(rr .lt. pass)
then
780 write(6,
'(A)',advance=
'yes')
'passed'
781 elseif(rr .lt. warn)
then
782 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
784 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
787 write(6,
'(A)',advance=
'yes')
'TESTING Q WITH MULTIPLE RIGHT HAND SIDES'
797 write(6,
'(A,i2,A,i2,A)',advance=
'no')
'Test 6 ',i,
' RHS: Q(1)-&
798 &Qhalf(Qhalf(1)) ... '
799 elseif( l .eq. 7)
then
802 write(6,
'(A,i2,A,i2,A)',advance=
'no')
'Test 7 ',i,
' RHS: Q(-1)-Qha&
805 elseif( l .eq. 8)
then
808 write(6,
'(A,i2,A,i2,A)',advance=
'no')
'Test 8 ',i,
' RHS: Q( N(&
809 &0,1) )-Qhalf(Qhalf( N(0,1) )) ... '
811 call
q(i,aa(:,1:i),qq(:,1:i))
812 call
qhalf(i,ss(:,1:i),ww(:,1:i))
813 call
qhalf(i,ww(:,1:i),ee(:,1:i))
817 rr = dnrm2(state_dim,qq(:,k)-ee(:,k),1)
819 if(rr .lt. pass)
then
821 if(k .eq. 1 .and. i .eq. 1)
then
822 write(6,
'(A,i2)',advance=
'yes')
'passed: ',k
823 elseif(k .eq. 1)
then
824 write(6,
'(A,i2)',advance=
'no')
'passed: ',k
825 elseif(k .eq. i)
then
826 write(6,
'(A,i2)',advance=
'yes')
' ',k
828 write(6,
'(A,i2)',advance=
'no')
' ',k
830 elseif(rr .lt. warn)
then
832 if(k .eq. 1 .and. i .eq. 1)
then
833 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
'passed: ',k,
' warn ',rr
834 elseif(k .eq. 1)
then
835 write(6,
'(A,i2,A,es9.2)',advance=
'no')
'passed: ',k,
' warn ',rr
836 elseif(k .eq. i)
then
837 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
' ',k,
' warn ',rr
839 write(6,
'(A,i2,A,es9.2)',advance=
'no')
' ',k,
' warn ',rr
843 write(6,
'(i2,A,es9.2)',advance=
'yes') k,
' failed with rr = ',rr
890 integer,
parameter :: rk = kind(1.0d0)
891 real(kind=rk),
dimension(obs_dim) :: a,s,qq,hqha,hqha_r
892 real(kind=rk),
dimension(state_dim) :: qha,ha
893 real(kind=rk) :: dnrm2,rr
894 real(kind=rk),
parameter :: pass = 1.0d-15
895 real(kind=rk),
parameter :: warn = 1.0d-13
903 write(6,*)
'TESTING (HQH^T+R)^(-1)'
911 rr = dnrm2(obs_dim,s,1)
912 write(6,
'(A)',advance=
'no')
'Test 1: (HQH^T+R)^(-1)[0] ... '
913 if(rr .lt. pass)
then
915 write(6,
'(A)',advance=
'yes')
'passed'
916 elseif( rr .lt. warn)
then
917 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
919 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
926 write(6,
'(A)',advance=
'no')
'Test 2: (HQH^T+R)^(-1)[(HQH^T+R)(1)] ... '
927 elseif (l .eq. 3)
then
929 write(6,
'(A)',advance=
'no')
'Test 3: (HQH^T+R)^(-1)[(HQH^T+R)(1)] ... '
930 elseif (l .ge. 4)
then
932 write(6,
'(A,i2,A)',advance=
'no')
'Test ',l,
': (HQH^T+R)^(-1)[(&
933 &HQH^T+R)( N(0,1) )] ... '
937 call
r(obs_dim,1,a,qq,1)
938 call
ht(obs_dim,1,a,ha,1)
940 call
h(obs_dim,1,qha,hqha,1)
944 rr = dnrm2(obs_dim,s-a,1)
947 if(rr .lt. pass)
then
949 write(6,
'(A)',advance=
'yes')
'passed'
950 elseif(rr .lt. warn)
then
951 write(6,
'(A,es9.2)',advance=
'yes')
'warning rr = ',rr
953 write(6,
'(A,es9.2)',advance=
'yes')
'failed rr = ',rr
971 integer,
parameter :: rk = kind(1.0d0)
972 real(kind=rk),
dimension(state_dim) :: a,s,q,qt,w
973 real(kind=rk),
dimension(state_dim,10) :: aa,qq,qqt,ww
974 real(kind=rk) :: dnrm2,rr
975 real(kind=rk),
parameter :: pass = 1.0d-15
976 real(kind=rk),
parameter :: warn = 1.0d-13
977 integer :: pfcount,i,k,l
983 write(6,*)
'TESTING B'
984 write(6,*)
'TESTING B WITH SINGLE RHS'
994 rr = dnrm2(state_dim,s,1)
995 write(6,
'(A)',advance=
'no')
'Test 1: Bhalf(0) ... '
996 if(rr .lt. pass)
then
998 write(6,
'(A)',advance=
'yes')
'passed'
999 elseif(rr .lt. warn)
then
1000 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
1002 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
1010 if(all(w .eq. 0.0d0))
then
1011 write(6,
'(A)')
'SERIOUS ERROR: Bhalf*e = 0 i.e. Bhalf is the zero&
1018 write(6,*)
'TESTING SOLVE B WITH SINGLE RHS'
1025 rr = dnrm2(state_dim,s,1)
1026 write(6,
'(A)',advance=
'no')
'Test 10: B^(-1)(0) ... '
1027 if(rr .lt. pass)
then
1029 write(6,
'(A)',advance=
'yes')
'passed'
1030 elseif(rr .lt. warn)
then
1031 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
1033 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
1039 write(6,
'(A)',advance=
'no')
'Test 11: B^(-1)[BhalfBhalf(1)] ... '
1040 elseif (l .eq. 12)
then
1042 write(6,
'(A)',advance=
'no')
'Test 12: B^(-1)[BhalfBhalf(-1)] ... '
1043 elseif (l .eq. 13)
then
1045 write(6,
'(A)',advance=
'no')
'Test 13: B^(-1)[BhalfBhalf( N(0,1) )] ... '
1053 rr = dnrm2(state_dim,w-a,1)
1056 if(rr .lt. pass)
then
1058 write(6,
'(A)',advance=
'yes')
'passed'
1059 elseif(rr .lt. warn)
then
1060 write(6,
'(A,es24.17)',advance=
'yes')
'passed with warning rr = ',rr
1062 write(6,
'(A,es24.17)',advance=
'yes')
'failed with rr = ',rr
1067 write(6,*)
'TESTING SOLVE B WITH MULTIPLE RHS'
1074 write(6,
'(A)',advance=
'no')
'Test 14: B^(-1)[BhalfBhalf(1)] ... '
1075 elseif (l .eq. 15)
then
1077 write(6,
'(A)',advance=
'no')
'Test 15: B^(-1)[BhalfBhalf(-1)] ... '
1078 elseif (l .eq. 16)
then
1080 write(6,
'(A)',advance=
'no')
'Test 16: B^(-1)[BhalfBhalf( N(0,1) )] ... '
1084 call
bhalf(i,aa(:,1:i),qqt(:,1:i))
1085 call
bhalf(i,qqt(:,1:i),qq(:,1:i))
1086 call
solve_b(pf%count,qq(:,1:i),ww(:,1:i))
1089 rr = dnrm2(state_dim,ww(:,k)-aa(:,k),1)
1091 if(rr .lt. pass)
then
1093 if(k .eq. 1 .and. i .eq. 1)
then
1094 write(6,
'(A,i2)',advance=
'yes')
'passed: ',k
1095 elseif(k .eq. 1)
then
1096 write(6,
'(A,i2)',advance=
'no')
'passed: ',k
1097 elseif(k .eq. i)
then
1098 write(6,
'(A,i2)',advance=
'yes')
' ',k
1100 write(6,
'(A,i2)',advance=
'no')
' ',k
1102 elseif(rr .lt. warn)
then
1104 if(k .eq. 1 .and. i .eq. 1)
then
1105 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
'passed: ',k,
' warn ',rr
1106 elseif(k .eq. 1)
then
1107 write(6,
'(A,i2,A,es9.2)',advance=
'no')
'passed: ',k,
' warn ',rr
1108 elseif(k .eq. i)
then
1109 write(6,
'(A,i2,A,es9.2)',advance=
'yes')
' ',k,
' warn ',rr
1111 write(6,
'(A,i2,A,es9.2)',advance=
'no')
' ',k,
' warn ',rr
1115 write(6,
'(i2,A,es9.2)',advance=
'yes') k,
' failed with rr = ',rr
subroutine normalrandomnumbers2d(mean, stdev, n, k, phi)
generate two dimensional Normal random numbers
subroutine bhalf(nrhs, x, bx)
subroutine to take a full state vector x and return in state space.
subroutine solve_r(obsDim, nrhs, y, v, t)
subroutine to take an observation vector y and return v in observation space.
Module that stores the dimension of observation and state spaces.
subroutine normalrandomnumbers1d(mean, stdev, n, phi)
generate one dimension of Normal random numbers
subroutine h(obsDim, nrhs, x, hx, t)
subroutine to take a full state vector x and return H(x) in observation space.
subroutine solve_b(nrhs, x, v)
subroutine to take a state vector x and return v in state space.
subroutine solve_rhalf(obsdim, nrhs, y, v, t)
subroutine to take an observation vector y and return v in observation space.
subroutine ht(obsDim, nrhs, y, x, t)
subroutine to take an observation vector y and return x in full state space.
subroutine rhalf(obsDim, nrhs, y, Ry, t)
subroutine to take an observation vector x and return Rx in observation space.
module pf_control holds all the information to control the the main program
subroutine solve_hqht_plus_r(obsdim, y, v, t)
subroutine to take an observation vector y and return v in observation space.
subroutine qhalf(nrhs, x, Qx)
subroutine to take a full state vector x and return in state space.
subroutine q(nrhs, x, Qx)
subroutine to take a full state vector x and return Qx in state space.
subroutine r(obsDim, nrhs, y, Ry, t)
subroutine to take an observation vector x and return Rx in observation space.