Loading...
Searching...
No Matches
dc_scaledsec::operator(>) Interface Reference

Public Member Functions

logical function dcscaledsec_gt_ss (sclsec1, sclsec2)
logical function dcscaledsec_gt_si (sclsec, factor)
logical function dcscaledsec_gt_is (factor, sclsec)

Detailed Description

Definition at line 96 of file dc_scaledsec.f90.

Member Function/Subroutine Documentation

◆ dcscaledsec_gt_is()

logical function dc_scaledsec::operator(>)::dcscaledsec_gt_is ( integer, intent(in) factor,
type(dc_scaled_sec), intent(in) sclsec )

Definition at line 645 of file dc_scaledsec.f90.

646 !
647 ! 2 つの DC_SCALED_SEC 型変数の比較
648 !
649 ! Comparison of two "DC_SCALED_SEC" variables
650 !
651 implicit none
652 integer, intent(in):: factor
653 type(DC_SCALED_SEC), intent(in):: sclsec
654 type(DC_SCALED_SEC):: factor_scl
655 integer:: i, sec1, factor_abs
656 logical:: both_negative
657 continue
658 if ( sclsec % flag_negative .and. .not. factor < 0 ) then
659 result = .true.
660 return
661 elseif ( .not. sclsec % flag_negative .and. factor < 0 ) then
662 result = .false.
663 return
664 elseif ( sclsec % flag_negative .and. factor < 0 ) then
665 both_negative = .true.
666 else
667 both_negative = .false.
668 end if
669
670 factor_abs = abs(factor)
671
672 if ( factor_abs > scale_factor_int_xx(3) ) then
673 factor_scl = factor
674 result = factor_scl > sclsec
675 return
676 else
677 if ( .not. all( sclsec % sec_ary(3:imax) == (/0, 0, 0, 0, 0, 0/) ) ) then
678 result = .false.
679 else
680 sec1 = sclsec % sec_ary(0)
681 do i = 1, 2
682 sec1 = sec1 + sclsec % sec_ary(i) * scale_factor_int_xx(i)
683 end do
684 if ( sec1 == factor_abs ) then
685 result = .false.
686 else
687 result = factor_abs > sec1
688 end if
689 end if
690
691 if ( both_negative ) result = .not. result
692 end if

◆ dcscaledsec_gt_si()

logical function dc_scaledsec::operator(>)::dcscaledsec_gt_si ( type(dc_scaled_sec), intent(in) sclsec,
integer, intent(in) factor )

Definition at line 592 of file dc_scaledsec.f90.

593 !
594 ! 2 つの DC_SCALED_SEC 型変数の比較
595 !
596 ! Comparison of two "DC_SCALED_SEC" variables
597 !
598 implicit none
599 type(DC_SCALED_SEC), intent(in):: sclsec
600 integer, intent(in):: factor
601 type(DC_SCALED_SEC):: factor_scl
602 integer:: i, sec1, factor_abs
603 logical:: both_negative
604 continue
605 if ( sclsec % flag_negative .and. .not. factor < 0 ) then
606 result = .false.
607 return
608 elseif ( .not. sclsec % flag_negative .and. factor < 0 ) then
609 result = .true.
610 return
611 elseif ( sclsec % flag_negative .and. factor < 0 ) then
612 both_negative = .true.
613 else
614 both_negative = .false.
615 end if
616
617 factor_abs = abs(factor)
618
619 if ( factor_abs > scale_factor_int_xx(3) ) then
620 factor_scl = factor
621 result = sclsec > factor_scl
622 return
623 else
624 if ( .not. all( sclsec % sec_ary(3:imax) == (/0, 0, 0, 0, 0, 0/) ) ) then
625 result = .true.
626 else
627 sec1 = sclsec % sec_ary(0)
628 do i = 1, 2
629 sec1 = sec1 + sclsec % sec_ary(i) * scale_factor_int_xx(i)
630 end do
631 if ( sec1 == factor_abs ) then
632 result = .not. all( sclsec % sec_ary(imin:-1) == (/0, 0/) )
633 else
634 result = sec1 > factor_abs
635 end if
636 end if
637
638 if ( both_negative ) result = .not. result
639 end if
640

◆ dcscaledsec_gt_ss()

logical function dc_scaledsec::operator(>)::dcscaledsec_gt_ss ( type(dc_scaled_sec), intent(in) sclsec1,
type(dc_scaled_sec), intent(in) sclsec2 )

Definition at line 547 of file dc_scaledsec.f90.

548 !
549 ! 2 つの DC_SCALED_SEC 型変数の比較
550 !
551 ! Comparison of two "DC_SCALED_SEC" variables
552 !
553 implicit none
554 type(DC_SCALED_SEC), intent(in):: sclsec1, sclsec2
555
556 integer:: i
557 logical:: both_negative, flag_equal
558 continue
559 result = .false.
560 flag_equal = .true.
561
562 if ( sclsec1 % flag_negative .and. .not. sclsec2 % flag_negative ) then
563 result = .false.
564 return
565 elseif ( .not. sclsec1 % flag_negative .and. sclsec2 % flag_negative ) then
566 result = .true.
567 return
568 elseif ( sclsec1 % flag_negative .and. sclsec2 % flag_negative ) then
569 both_negative = .true.
570 else
571 both_negative = .false.
572 end if
573
574 do i = imax, imin, -1
575 if ( sclsec1 % sec_ary(i) > sclsec2 % sec_ary(i) ) then
576 result = .true.
577 flag_equal = .false.
578 exit
579 elseif ( sclsec1 % sec_ary(i) < sclsec2 % sec_ary(i) ) then
580 result = .false.
581 flag_equal = .false.
582 exit
583 end if
584 end do
585
586 if ( .not. flag_equal .and. both_negative ) result = .not. result
587

The documentation for this interface was generated from the following file: