Software Carry-Save for Fast Multiple-Precision Algorithms
Texte intégral
(2) Laboratoire de l’Informatique du Parallélisme École Normale Supérieure de Lyon Unité Mixte de Recherche CNRS-INRIA-ENS LYON no 5668.
(3) . .
(4) . .
(5) . École Normale Supérieure de Lyon 46 Allée d’Italie, 69364 Lyon Cedex 07, France Téléphone : +33(0)4.72.72.80.37 Télécopieur : +33(0)4.72.72.80.80 Adresse électronique :
(6).
(7)
(8) .
(9)
(10)
(11) ! " #
(12)
(13) !
(14) $
(15) % ! .
(16) $%
(17) !
(18) " &
(19) % '
(20) !
(21)
(22)
(23)
(24) ("
(25) ! !
(26) ) ! % "
(27)
(28) !
(29) " *
(30)
(31) !
(32)
(33) ! " * %
(34)
(35) $ + ,
(36) " -
(37)
(38) %
(39) ".
(40) . ". .
(41) " / ! ! $ !
(42) 0 "
(43) ( ! / /
(44) " 1 2 ! /0 . 0 . " . 3 !
(45) 4 0
(46) ( 3 4 " 5 ! !
(47) 6
(48) (" 1 / ". . ".
(49)
(50) . 7. %
(51) *55589: ) ! .
(52)
(53)
(54) ;
(55) ,
(56) . !
(57)
(58)
(59)
(60)
(61) ! "
(62)
(63) %
(64) 9< !
(65) "
(66) ! %
(67) . "
(68)
(69)
(70)
(71) % % =>?".
(72) * ; ! , !
(73)
(74) . % $
(75) @!! 0 =? @ %0 =?
(76)
(77)
(78) A =8?
(79) BC B % =<? D
(80)
(81)
(82) . =:? -
(83) =E?"
(84) % % % !
(85) % !%" F ( %
(86) %
(87) % (. ;$
(88)
(89)
(90) !
(91)
(92)
(93)
(94) *55589: " -
(95) % %
(96)
(97)
(98) "
(99)
(100)
(101)
(102) % ' ! *55589: ) ! " - !
(103) %
(104)
(105) .
(106) '
(107)
(108)
(109) , ! ,
(110) " *
(111)
(112) BC B %
(113)
(114)
(115) ! !
(116)
(117) G % < E: " * B
(118)
(119) % ! ! $ !
(120)
(121) % H !
(122)
(123) . I %
(124)
(125) " . ! *55589:
(126) % $ "
(127) @!! 0=? @ %0 =? A 0
(128)
(129) =8?
(130) " -
(131)
(132) % "
(133)
(134)
(135)
(136) ) ! C
(137) !
(138) % G' $ E:
(139) , C F * ) !
(140)
(141) ! " @
(142)
(143)
(144)
(145) ! C
(146) ! " -
(147) !
(148) *55589: ) !
(149) , % %" -
(150) . ' #
(151) ! %! .
(152) .
(153) . !
(154) "
(155) /
(156) . !
(157)
(158)
(159)
(160) % /!
(161)
(162) =9?"
(163)
(164)
(165)
(166)
(167) ".
(168) & !
(169)
(170) " J
(171)
(172) !
(173) ! 0
(174)
(175)
(176) "
(177) % H %
(178)
(179) $ " % -
(180) K
(181) *@
(182) %
(183) ! =7?
(184) !
(185) 0 ; %
(186) + " L!
(187)
(188) $ ! % ;
(189) . !
(190) "
(191) % G " *
(192)
(193)
(194)
(195) " *
(196) /
(197) (
(198)
(199)
(200)
(201)
(202) ! !
(203) " -
(204) %
(205)
(206)
(207) % % !
(208) " *
(209) %
(210) %
(211) ' &
(212) !
(213)
(214) !
(215) $ %
(216) % !
(217)
(218) !" - !
(219) % $% $" *.
(220)
(221)
(222) % , ! "
(223) F
(224) !
(225) " F <
(226) !
(227) I " F 9
(228)
(229) . " F E
(230) ".
(231)
(232)
(233)
(234)
(235) !
(236) "
(237)
(238) !
(239) %
(240) .
(241) <.
(242) . !" 7" *
(243)
(244) !
(245) $
(246) . % $%
(247) L . !
(248)
(249)
(250) % !
(251) !
(252)
(253)
(254) " X1. X2. X3. X4. Y1. Y2. Y3. Y4. Y4 X1 Y3 X1 Y2 X1 Y1 X1. C1 Z1. Z2. Y1 X2. C2. Z3. Y2 X2 Y1 X3. C3. Y3 X2 Y2 X3. Y4 X2 Y3 X3. Y4 X3. Y4 X4. Y3 X4. Y2 X4. Y1 X4. C4. Z4. ! 7'
(255) ;!
(256) X Y
(257) n ! xi yi
(258) n = 4
(259) ;!" 5
(260) ! m '
(261) !
(262) ! B m = 32 64 *55589: @ %0 % m = 53"
(263) !
(264)
(265) ;! ' •
(266) ; % xi yj " 5
(267) 2m " •
(268)
(269)
(270) "
(271) n
(272)
(273)
(274)
(275)
(276) ci
(277) . 2m + log2 n " %
(278) ci % m "
(279) % ! !
(280)
(281) / !
(282) !
(283) m !
(284) , !
(285)
(286) !
(287)
(288) $ "
(289) $ n! 2n! " #
(290)
(291)
(292) n!
(293) !
(294). " *
(295) / %
(296) !
(297) "
(298)
(299)
(300) )
(301) %
(302) " $ ,
(303) !
(304)
(305)
(306) ! " #
(307)
(308)
(309)
(310) % ! !
(311) ! ) ! •.
(312) :.
(313) .
(314)
(315)
(316)
(317) " -!
(318) ,
(319) !
(320) ! " * @ %0 %
(321) ,
(322) !
(323) " *
(324) B ;. % ! ! $ !
(325)
(326) ( %
(327) ; "
(328) , % !
(329) " * B !
(330) % !
(331) " n
(332) %
(333)
(334) (" * @ %0 %
(335) ! ".
(336)
(337)
(338) ; !
(339)
(340) !
(341) ! X Y
(342)
(343) ci ; .
(344) " * mI
(345) ( %
(346)
(347)
(348)
(349) ! % mr
(350)
(351) $ ' 7
(352)
(353)
(354)
(355) . !
(356) $
(357)
(358)
(359) ;
(360)
(361) % ! "
(362) !
(363)
(364)
(365) . " &
(366)
(367)
(368) " @
(369)
(370) ! ! $ %
(371) !
(372) $
(373) $ " 5/ 7
(374) mr
(375)
(376)
(377) ! nr "
(378)
(379) nr ×mr " !
(380)
(381) ! mr " mI > log2 (nr ) + 2mr.
(382) *555 *555 A$ $E A$ $E E: ! E: !. mI. 9M7 9M7 E: E: E: E: . mr. E @ 9 @ < @ > @ < @ > @. nr. 79 E< <7 78 79 E< . $" <> @ 7989 @ >< @ <E< @ :9 @ 78 @. ! ' F $
(383)
(384)
(385)
(386) " #
(387) ! %
(388)
(389) mr ! mI " J %
(390) ( ".
(391)
(392) . 9. -
(393) R
(394) ! <"
(395) F . % F F F.FF R
(396) ! ; '. nr . - nr !
(397) mr !
(398) !
(399)
(400)
(401) H !
(402) N. . - ! !
(403) $
(404) ; !
(405) ! ! <N. . - ! ". - F.FF R
(406)
(407) ! %
(408) mr !; "
(409)
(410) mi mr R.digits ;
(411) % ;" * R
(412) !
(413) % ; ( 0
(414) R " *
(415)
(416) x R ' x = R.sign ×. nr . R.digits[j] × 2mr ∗(R.index−j). . j=1. - ;. X=. Index =. 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 ,1 0 1 0 1 1 1 1 0. 3 3.m r. Value = 2. 2 2.m r. 2. 0 2. mr. −1 2. 0. −2 −mr. 2. −2.mr. 2. R.digits = 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 0 0 0 0 R.index = 3 R.sign = 1. Software Carry Save Structure (SCSS). ! <'
(417) *
(418)
(419)
(420)
(421) $ ; " J , $
(422) ! !
(423)
(424) ; !
(425) *55589:
(426)
(427) %
(428)
(429) $ " A ,
(430) ,
(431) ". . . *
(432) !
(433)
(434) . "
(435) % $ %
(436) . ! ! % $".
(437) E.
(438) .
(439) ! " ""
(440) % ) ! d . F.FF "
(441) ; $
(442) $ dexp d
(443)
(444) ! R.index "
(445) % ,!
(446) ! d2 "
(447) + % 2−m " - 0
(448) $
(449) $ d
(450)
(451) ;
(452)
(453) $
(454) 0" exp mr. r.
(455) ! "
(456)
(457) d #"
(458) R
(459) R.index = 0 $ d +/ − ∞ R = d $ d > 0 R.sign = 1 R.sign = −1 d = −d. d > 2m
(460) R.index + + d = d × 2−m . d < 1
(461) R.index − − d = d × 2m $ i % i ≤ nr % i + + ! r. r. r. = 1. R.digits[i] = d d = (d − R.digits[i]) × 2mr . # $ %
(462)
(463) !
(464) . " * % $ % F.FF. " #,!
(465) !
(466) !
(467) ! . "
(468) mr !
(469) G
(470)
(471) %
(472)
(473)
(474) $ !" ,
(475) !
(476) . ) ! ! , , ! !
(477) ! " #
(478) ,!
(479) !
(480) % ! ! ,". " " ! "
(481) A #"
(482) R
(483) C[nk + 1] = 0 R.index = A.index $ k = nr % k ≥ 0 % k −m −+m! m +m −1 High = (A[k] + (2 i r + 2 i r )) −(2mi +mr + 2mi +mr −1 ) C[k + 1]+ = A[k] − High C[k] = High × 2−mr . . 2mi −1 . .
(484)
(485) . 8. k = 1. & C[k] = 0
(486) k + + R.index − − $ j = 1 % j ≤ nr % j + + ' k + + ! R.digits[j] = C[k] ( m ×(n −1)+1 ! . . 2. r. "#"" . r. $ .
(487)
(488) C.digits[1] $
(489)
(490) (nr − 1) mr
(491) %
(492) % 2mr ×(nr −1)+1.
(493) !
(494) F.FF % !
(495) ! . "
(496) $ !
(497) !
(498) 2m −2 "
(499) !
(500)
(501)
(502) .
(503) ! F.FF !
(504) $ % ! " i. )*" & (). mi = 64 mr = 30 '
(505)
(506) 8 × 109 "#"" . *
(507)
(508) (
(509) . $ O P
(510)
(511) % ; 0"
(512) %
(513)
(514) $
(515) !
(516)
(517) mr mi nr "
(518) %
(519) !
(520)
(521) !
(522) !
(523)
(524) ! " * % % .
(525)
(526) %
(527) $
(528) ".
(529) *
(530) %
(531) !;
(532) " . %
(533) !
(534) ! "
(535) F.FF
(536)
(537) ;! 7' 7" .
(538) "
(539) ! ! " " F
(540) " 5
(541)
(542) !
(543) " <" .
(544) I % ! "
(545) % , $ % % . % %
(546) mr mi nr "
(547) %
(548) G ".
(549) .
(550) .
(551) *
(552)
(553)
(554) , ! %
(555) % " #
(556) F.FF
(557) . "
(558)
(559) F.FF
(560) !
(561) ". + , - " ! " "#"" #"
(562)
(563)
(564) d = A.sign × 2A.index×m × ( r. A.digits[0]+ 2−mr × A.digits[1]+ 2−2.mr × A.digits[2]+ 2−3.mr × A.digits[3]).
(565) ! F.FF
(566) !
(567)
(568)
(569) " *
(570) !
(571) 4 ! !
(572) mi = 53 mr = 26". * / H
(573) "
(574) % (
(575)
(576)
(577) $
(578) %0
(579)
(580) $ " 5
(581) ;
(582) < E: % % " #
(583) . ;
(584) %
(585)
(586) !" *
(587) .
(588)
(589) ! "">9":
(590) %
(591) ! !
(592)
(593)
(594)
(595) ) ! !
(596)
(597) " *
(598) " #
(599)
(600) % B=<? % ) !
(601) @ %0 / % =?
(602) K0 %=7?" 5
(603) % !
(604) $ 106
(605)
(606) " % G F.FF %" 5
(607)
(608) F.FF !
(609) .
(610) % ! " F
(611) ! 0
(612)
(613) %
(614) "
(615) . * %" -
(616) !
(617)
(618) *
(619)
(620) !
(621)
(622) , !
(623) " J
(624)
(625) %
(626)
(627). ,
(628) " - !
(629)
(630) .
(631)
(632) . >. A F.FF " K " @ % " B " * 8<<
(633) G 7 7<"9 7"8< 7"8 $E . 9EE
(634) G 7 9"9 "<< "8: F C 9 :
(635) G 7 7" "< "<8 ! :' . A F.FF " K " @ % " B " * 8<<
(636) G 7 "8: 9"7 7"> $E . 9EE
(637) G 7 "<9 >" 7":7 F C 9 :
(638) G 7 ">8 E"<< 7"<> ! 9' . )
(639) ! %
(640) " *
(641)
(642)
(643) / % .MM ! !
(644)
(645) % ( ". .
(646) . #
(647)
(648) %
(649)
(650) . "
(651) %
(652) !
(653)
(654) %
(655) "
(656)
(657)
(658) ) I!I
(659)
(660) " @!
(661)
(662) !
(663) % " @! % " - ;
(664)
(665)
(666)
(667) !
(668)
(669)
(670) " # % !
(671)
(672)
(673)
(674)
(675) " C ! *55589: G
(676)
(677) B,
(678) ; % G " ,
(679) %
(680) $ ".
(681) =7? -
(682) %".
(683) ". =? A ) !
(684) ".
(685)
(686)
(687)
(688) ". =<? B
(689) BC %" ".
(690) 7.
(691) . A F.FF " K " @ % " B " * 8<<
(692) G 7 8": <8"87 7"< $E . 9EE
(693) G 7 "7 ":9 "< F C 9 :
(694) G 7 <" <":7 7":8 ! E' . A F.FF " K " @ % " B " * 8<<
(695) G 7 8"79 "EE 7"98 $E . 9EE
(696) G 7 E" "7> "<8 F C 9 :
(697) G 7 "E: ":E :"<E ! 8' . =:? "
(698)
(699)
(700) " =9? F% @ A " -
(701) %
(702) / $!
(703) " * *+ # " " #
(704) ; B . 7" =E? -" .% " L @" Q, R" Q" , .
(705) -
(706) 'II " " "II I
(707) I$"
(708) 7" =8? A " 5$ ' !
(709) !
(710)
(711) " * . "
(712)
(713) - ! 7: A !
(714) B % 7>>" =? SG J T % F" 1 A J" @ %" -!
(715) / ) !
(716) " * @! 1! .. .+ $/// "
(717) #
(718) ! 799D7E Q . R 7" =>? Q" 16 R"" -" " % " $/// #
(719) :877'7<9D7:< 7>>".
(720) * J
(721) !
(722)
(723) *
(724) ! % ,!".
(725)
Documents relatifs
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des