Loading...
Searching...
No Matches
dc_scaledsec::assignment(=) Interface Reference

Public Member Functions

subroutine dcscaledseccreater (sclsec, sec)
subroutine dcscaledseccreated (sclsec, sec)
subroutine dcscaledseccreatei (sclsec, sec)
subroutine dcscaledsectonumr (sec, sclsec)
subroutine dcscaledsectonumd (sec, sclsec)
subroutine dcscaledsectonumi (sec, sclsec)

Detailed Description

Definition at line 72 of file dc_scaledsec.f90.

Member Function/Subroutine Documentation

◆ dcscaledseccreated()

subroutine dc_scaledsec::assignment(=)::dcscaledseccreated ( type(dc_scaled_sec), intent(out) sclsec,
real(dp), intent(in) sec )

Definition at line 219 of file dc_scaledsec.f90.

220 use dc_message, only: messagenotify
222 use dc_trace, only: beginsub, endsub
223 use dc_types, only: dp, string
224 implicit none
225 type(DC_SCALED_SEC), intent(out):: sclsec
226 real(DP), intent(in):: sec
227
228 real(DP):: work_sec, print_sec
229 integer:: i, cd, move_up, work_sec_scl_nint
230
231 integer :: stat
232 character(STRING) :: cause_c
233 character(*), parameter:: subname = 'dc_scaledsec'
234 continue
235 !call BeginSub(subname, 'sec=<%f>', d = (/ sec /) )
236 stat = dc_noerr
237 cause_c = ''
238
239 cd = 0
240 if ( sec < 0.0_dp ) then
241 sclsec % flag_negative = .true.
242 work_sec = - sec
243 else
244 sclsec % flag_negative = .false.
245 work_sec = sec
246 end if
247
248 if ( work_sec > scale_factor_xx(imax + 1) ) then
249 call messagenotify( 'W', subname, &
250 & 'input number (%f) is too large.', &
251 & d = (/ sec /) )
252 stat = dc_etoolargetime
253 goto 999
254 end if
255
256 sclsec % sec_ary = 0
257 do i = imax, imin, -1
258
259 work_sec_scl_nint = nint( work_sec * scale_factor_xx(-i) )
260 if ( .not. work_sec < scale_factor_xx(i) &
261 & .or. ( i == imin .and. work_sec_scl_nint >= 1 ) ) then
262
263 if ( i < 0 ) then
264 sclsec % sec_ary(i) = work_sec_scl_nint
265 else
266 sclsec % sec_ary(i) = int( work_sec / scale_factor_xx(i) )
267 end if
268 work_sec = work_sec - sclsec % sec_ary(i) * scale_factor_xx(i)
269 cd = cd + count_digit( sclsec % sec_ary(i) )
270 end if
271 if ( cd > 5 ) then
272 if ( .not. abs( work_sec ) < scale_factor_xx(i-1) ) then
273 print_sec = sclsec
274!!$ call MessageNotify( 'W', subname, &
275!!$ & 'input number (%f) is truncated to (%f).', &
276!!$ & d = (/ sec, print_sec /) )
277 end if
278 exit
279 end if
280 end do
281
282 move_up = 0
283 do i = imin, imax
284 sclsec % sec_ary(i) = sclsec % sec_ary(i) + move_up
285 move_up = 0
286 do while ( sclsec % sec_ary(i) >= scale_factor_int )
287 move_up = move_up + 1
288 sclsec % sec_ary(i) = sclsec % sec_ary(i) - scale_factor_int
289 end do
290 end do
291
292999 continue
293 call storeerror(stat, subname, cause_c=cause_c)
294 !call EndSub(subname)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:830
integer, parameter, public dc_noerr
Definition dc_error.f90:509
integer, parameter, public dc_etoolargetime
Definition dc_error.f90:574
種別型パラメタを提供します。
Definition dc_types.f90:49
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:118
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:83

References dc_error::dc_etoolargetime, dc_error::dc_noerr, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function:

◆ dcscaledseccreatei()

subroutine dc_scaledsec::assignment(=)::dcscaledseccreatei ( type(dc_scaled_sec), intent(out) sclsec,
integer, intent(in) sec )

Definition at line 199 of file dc_scaledsec.f90.

200 implicit none
201 type(DC_SCALED_SEC), intent(out):: sclsec
202 integer, intent(in):: sec
203 continue
204 call dcscaledseccreated(sclsec, real( sec, dp ))

◆ dcscaledseccreater()

subroutine dc_scaledsec::assignment(=)::dcscaledseccreater ( type(dc_scaled_sec), intent(out) sclsec,
real, intent(in) sec )

Definition at line 209 of file dc_scaledsec.f90.

210 implicit none
211 type(DC_SCALED_SEC), intent(out):: sclsec
212 real, intent(in):: sec
213 continue
214 call dcscaledseccreated(sclsec, real( sec, dp ))

◆ dcscaledsectonumd()

subroutine dc_scaledsec::assignment(=)::dcscaledsectonumd ( real(dp), intent(out) sec,
type(dc_scaled_sec), intent(in) sclsec )

Definition at line 325 of file dc_scaledsec.f90.

326 use dc_types, only: dp
327 implicit none
328 real(DP), intent(out):: sec
329 type(DC_SCALED_SEC), intent(in):: sclsec
330
331 integer:: i
332 continue
333 sec = 0.0_dp
334 do i = imax, imin, -1
335 sec = sec + ( sclsec % sec_ary(i) * scale_factor_xx(i) )
336 end do
337 if ( sclsec % flag_negative ) sec = - sec

◆ dcscaledsectonumi()

subroutine dc_scaledsec::assignment(=)::dcscaledsectonumi ( integer, intent(out) sec,
type(dc_scaled_sec), intent(in) sclsec )

Definition at line 299 of file dc_scaledsec.f90.

300 use dc_types, only: dp
301 implicit none
302 integer, intent(out):: sec
303 type(DC_SCALED_SEC), intent(in):: sclsec
304 real(DP):: secd
305 continue
306 call dcscaledsectonumd(secd, sclsec)
307 sec = nint( secd )

◆ dcscaledsectonumr()

subroutine dc_scaledsec::assignment(=)::dcscaledsectonumr ( real, intent(out) sec,
type(dc_scaled_sec), intent(in) sclsec )

Definition at line 312 of file dc_scaledsec.f90.

313 use dc_types, only: dp
314 implicit none
315 real, intent(out):: sec
316 type(DC_SCALED_SEC), intent(in):: sclsec
317 real(DP):: secd
318 continue
319 call dcscaledsectonumd(secd, sclsec)
320 sec = real( secd )

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