tmp <- [0]*25
tmp[1:24] <- frac[0:23]
tmp[0:24] <- tmp[0:24] + inc
- carry_out <- tmp[24]
+ carry_out <- tmp[0]
frac[0:23] <- tmp[1:24]
else # tgt_precision = 'double-precision'
tmp <- [0]*54
tmp[1:53] <- frac[0:52]
tmp[0:53] <- tmp[0:53] + inc
- carry_out <- tmp[53]
- frac[0:52] <- tmp[1:54]
+ carry_out <- tmp[0]
+ frac[0:52] <- tmp[1:53]
if carry_out = 1 then exp <- exp + 1
# TODO, later
# FPSCR[FR] <- inc
frac[0:63] <- frac[1:63] || 0b0
exp <- exp - 1
# round to nearest
- Round_Float( tgt_precision, sign, exp, frac, 0b00 )
+ RN <- 0b00 # TODO, FPSCR[RN]
+ Round_Float( tgt_precision, sign, exp, frac, RN )
# TODO, FPSCR
#if sign = 0 then FPSCR[FPRF] <- '+normal number'
#if sign = 1 then FPSCR[FPRF] <- '-normal number'