gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
Public Member Functions | List of all members
dc_scaledsec::operator(/) Interface Reference

Public Member Functions

type(dc_scaled_sec) function dcscaledsec_div_si (sclsec, factor)
 
type(dc_scaled_sec) function dcscaledsec_div_sr (sclsec, factor)
 
type(dc_scaled_sec) function dcscaledsec_div_sd (sclsec, factor)
 
type(dc_scaled_sec) function dcscaledsec_div_ss (sclsec, factor)
 

Detailed Description

Definition at line 214 of file dc_scaledsec.f90.

Member Function/Subroutine Documentation

◆ dcscaledsec_div_sd()

type(dc_scaled_sec) function dc_scaledsec::operator(/)::dcscaledsec_div_sd ( type(dc_scaled_sec), intent(in)  sclsec,
real(dp), intent(in)  factor 
)

DC_SCALED_SEC を倍精度実数で除算

Parameters
[in]sclsecDC_SCALED_SEC 型変数 (被除数)
[in]factor倍精度実数の除数
Returns
除算の商

Definition at line 1929 of file dc_scaledsec.f90.

1930 use dc_message, only: messagenotify
1931 use dc_types, only: dp_eps
1932 implicit none
1933 type(DC_SCALED_SEC), intent(in):: sclsec
1934 real(DP), intent(in):: factor
1935 integer:: i
1936 real(DP):: factor_abs, move_down, sec_ary_mod(imin+imin:imax)
1937 !logical:: flag_approximate
1938 continue
1939 if ( sclsec % flag_negative ) then
1940 result % flag_negative = .not. factor < 0.0_dp
1941 else
1942 result % flag_negative = factor < 0.0_dp
1943 end if
1944 factor_abs = abs(factor) * scale_factor_xx(2)
1945
1946! flag_approximate = .false.
1947 move_down = 0.0_dp
1948 do i = imax, imax + imin + 1, -1
1949 sec_ary_mod(i) = sclsec % sec_ary(i)
1950 if ( abs(sec_ary_mod(i)) > dp_eps ) then
1951 move_down = sec_ary_mod(i) * scale_factor
1952 else
1953 move_down = 0.0_dp
1954 end if
1955 end do
1956
1957 do i = imax + imin, imin, -1
1958 result % sec_ary(i-imin) = int( ( sclsec % sec_ary(i) + move_down ) / factor_abs )
1959 sec_ary_mod(i) = &
1960 & mod( ( sclsec % sec_ary(i) + move_down ), factor_abs )
1961 if ( abs(sec_ary_mod(i)) > dp_eps ) then
1962 !if ( i < imin ) flag_approximate = .true.
1963 move_down = sec_ary_mod(i) * scale_factor
1964 else
1965 move_down = 0.0_dp
1966 end if
1967 end do
1968
1969 do i = imin - 1, imin + imin, -1
1970 result % sec_ary(i-imin) = int( move_down / factor_abs )
1971 sec_ary_mod(i) = mod( move_down, factor_abs )
1972 if ( abs(sec_ary_mod(i)) > dp_eps ) then
1973 !if ( i < imin ) flag_approximate = .true.
1974 move_down = sec_ary_mod(i) * scale_factor
1975 else
1976 move_down = 0.0_dp
1977 end if
1978 end do
1979
1980!!$ if ( flag_approximate ) then
1981!!$ call MessageNotify( 'W', 'dc_scaledsec#operator(/)', &
1982!!$ & 'result may be calculated approximately' )
1983!!$ end if
1984
メッセージの出力
種別型パラメタを提供します。
Definition dc_types.f90:55
real(dp), parameter, public dp_eps
倍精度実数型変数のマシンイプシロン.
Definition dc_types.f90:97

References dc_types::dp_eps.

◆ dcscaledsec_div_si()

type(dc_scaled_sec) function dc_scaledsec::operator(/)::dcscaledsec_div_si ( type(dc_scaled_sec), intent(in)  sclsec,
integer, intent(in)  factor 
)

DC_SCALED_SEC を整数で除算

Parameters
[in]sclsecDC_SCALED_SEC 型変数 (被除数)
[in]factor整数の除数
Returns
除算の商

Definition at line 1905 of file dc_scaledsec.f90.

1906 use dc_message, only: messagenotify
1907 implicit none
1908 type(DC_SCALED_SEC), intent(in):: sclsec
1909 integer, intent(in):: factor
1910 continue
1911 result = sclsec / real( factor, dp )

◆ dcscaledsec_div_sr()

type(dc_scaled_sec) function dc_scaledsec::operator(/)::dcscaledsec_div_sr ( type(dc_scaled_sec), intent(in)  sclsec,
real, intent(in)  factor 
)

DC_SCALED_SEC を単精度実数で除算

Parameters
[in]sclsecDC_SCALED_SEC 型変数 (被除数)
[in]factor単精度実数の除数
Returns
除算の商

Definition at line 2002 of file dc_scaledsec.f90.

2003 use dc_message, only: messagenotify
2004 implicit none
2005 type(DC_SCALED_SEC), intent(in):: sclsec
2006 real, intent(in):: factor
2007 continue
2008 result = sclsec / real( factor, dp )

References dc_types::dp.

◆ dcscaledsec_div_ss()

type(dc_scaled_sec) function dc_scaledsec::operator(/)::dcscaledsec_div_ss ( type(dc_scaled_sec), intent(in)  sclsec,
type(dc_scaled_sec), intent(in)  factor 
)

DC_SCALED_SEC を DC_SCALED_SEC で除算

注意: Fortran コンパイラの精度制限により, factor は 10^12 未満である必要があります.

Parameters
[in]sclsecDC_SCALED_SEC 型変数 (被除数)
[in]factorDC_SCALED_SEC 型変数 (除数)
Returns
除算の商

Definition at line 1869 of file dc_scaledsec.f90.

1870 use dc_message, only: messagenotify
1871 implicit none
1872 type(DC_SCALED_SEC), intent(in):: sclsec, factor
1873 real(DP):: factor_abs
1874 continue
1875
1876 ! frt, ifort などでは, 1.0e+23 などの実数とすると,
1877 ! 9.9999e+22 などとなってしまうため,
1878 ! factor として指定するものは 10e+12 までとする.
1879 !
1880 if ( .not. all( factor % sec_ary (imax-4:imax) == (/ 0, 0, 0, 0, 0 /) ) ) then
1881 call messagenotify( 'E', 'dc_scaledsec#mod', &
1882 & 'factor must be smaller than 10^12' )
1883 end if
1884
1885 factor_abs = factor
1886 result = sclsec / factor_abs
1887

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