[multiple changes]
2010-06-22 Matthew Heaney <heaney@adacore.com> * a-convec.adb, a-coinve.adb: Removed 64-bit types Int and UInt. 2010-06-22 Paul Hilfinger <hilfinger@adacore.com> * s-rannum.adb (Random_Float_Template): Replace with unbiased version that is able to produce all representable floating-point numbers in the unit interval. Remove template parameter Shift_Right, no longer used. * gnat_rm.texi: Document the period of the pseudo-random number generator under the description of its algorithm. * gcc-interface/Make-lang.in: Update dependencies. From-SVN: r161202
This commit is contained in:
parent
5087048c12
commit
5bec9717c3
@ -1,3 +1,16 @@
|
||||
2010-06-22 Matthew Heaney <heaney@adacore.com>
|
||||
|
||||
* a-convec.adb, a-coinve.adb: Removed 64-bit types Int and UInt.
|
||||
|
||||
2010-06-22 Paul Hilfinger <hilfinger@adacore.com>
|
||||
|
||||
* s-rannum.adb (Random_Float_Template): Replace with unbiased version
|
||||
that is able to produce all representable floating-point numbers in the
|
||||
unit interval. Remove template parameter Shift_Right, no longer used.
|
||||
* gnat_rm.texi: Document the period of the pseudo-random number
|
||||
generator under the description of its algorithm.
|
||||
* gcc-interface/Make-lang.in: Update dependencies.
|
||||
|
||||
2010-06-22 Thomas Quinot <quinot@adacore.com>
|
||||
|
||||
* exp_aggr.adb (Rewrite_Discriminant): Fix predicate used to identify
|
||||
|
1647
gcc/ada/a-coinve.adb
1647
gcc/ada/a-coinve.adb
File diff suppressed because it is too large
Load Diff
1480
gcc/ada/a-convec.adb
1480
gcc/ada/a-convec.adb
File diff suppressed because it is too large
Load Diff
@ -1574,7 +1574,8 @@ ada/einfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
|
||||
ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
|
||||
ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
|
||||
ada/urealp.adb
|
||||
|
||||
ada/elists.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/elists.ads \
|
||||
@ -1735,29 +1736,20 @@ ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
|
||||
ada/exp_cg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
|
||||
ada/einfo.adb ada/elists.ads ada/elists.adb ada/err_vars.ads \
|
||||
ada/errout.ads ada/erroutc.ads ada/exp_cg.ads ada/exp_cg.adb \
|
||||
ada/exp_ch11.ads ada/exp_dbug.ads ada/exp_disp.ads ada/exp_tss.ads \
|
||||
ada/exp_util.ads ada/fname.ads ada/freeze.ads ada/get_targ.ads \
|
||||
ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/interfac.ads \
|
||||
ada/lib.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/nlists.ads \
|
||||
ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads ada/rident.ads \
|
||||
ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
|
||||
ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_eval.ads ada/sem_res.ads ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
|
||||
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
|
||||
ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
|
||||
ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
|
||||
ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
|
||||
ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
|
||||
ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
|
||||
ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
|
||||
ada/elists.adb ada/exp_cg.ads ada/exp_cg.adb ada/exp_dbug.ads \
|
||||
ada/exp_disp.ads ada/exp_tss.ads ada/gnat.ads ada/g-htable.ads \
|
||||
ada/hostparm.ads ada/lib.ads ada/namet.ads ada/nlists.ads \
|
||||
ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads ada/sem_aux.ads \
|
||||
ada/sem_aux.adb ada/sem_disp.ads ada/sem_type.ads ada/sem_util.ads \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
|
||||
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
|
||||
ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
|
||||
ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
|
||||
ada/unchdeal.ads ada/urealp.ads
|
||||
|
||||
ada/exp_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -1833,8 +1825,8 @@ ada/exp_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
|
||||
ada/exp_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
ada/casing.ads ada/checks.ads ada/checks.adb ada/csets.ads \
|
||||
ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads ada/elists.adb \
|
||||
ada/casing.ads ada/checks.ads ada/checks.adb ada/debug.ads \
|
||||
ada/einfo.ads ada/einfo.adb ada/elists.ads ada/elists.adb \
|
||||
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
|
||||
ada/exp_aggr.ads ada/exp_atag.ads ada/exp_ch11.ads ada/exp_ch2.ads \
|
||||
ada/exp_ch3.ads ada/exp_ch3.adb ada/exp_ch4.ads ada/exp_ch6.ads \
|
||||
@ -1842,27 +1834,24 @@ ada/exp_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/exp_pakd.ads ada/exp_smem.ads ada/exp_strm.ads ada/exp_tss.ads \
|
||||
ada/exp_tss.adb ada/exp_util.ads ada/exp_util.adb ada/fname.ads \
|
||||
ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
|
||||
ada/g-htable.ads ada/hostparm.ads ada/inline.ads ada/interfac.ads \
|
||||
ada/itypes.ads ada/lib.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb \
|
||||
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
|
||||
ada/output.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
|
||||
ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
|
||||
ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
|
||||
ada/g-htable.ads ada/hostparm.ads ada/inline.ads ada/itypes.ads \
|
||||
ada/lib.ads ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
|
||||
ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
|
||||
ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/sem.ads \
|
||||
ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_cat.ads \
|
||||
ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads \
|
||||
ada/sem_eval.ads ada/sem_mech.ads ada/sem_res.ads ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads \
|
||||
ada/sprint.ads ada/stand.ads ada/stringt.ads ada/style.ads \
|
||||
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
|
||||
ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
|
||||
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
|
||||
ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
|
||||
ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
|
||||
ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_warn.ads ada/sinfo.ads \
|
||||
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
|
||||
ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads \
|
||||
ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
|
||||
ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
|
||||
ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
|
||||
ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
|
||||
ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
|
||||
ada/urealp.ads ada/validsw.ads ada/widechar.ads
|
||||
ada/urealp.ads ada/validsw.ads
|
||||
|
||||
ada/exp_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -1949,21 +1938,21 @@ ada/exp_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
|
||||
ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/rtsfind.adb \
|
||||
ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
|
||||
ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch12.ads ada/sem_ch13.ads \
|
||||
ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_dist.ads ada/sem_eval.ads ada/sem_mech.ads \
|
||||
ada/sem_res.ads ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads \
|
||||
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
|
||||
ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
|
||||
ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
|
||||
ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch12.ads \
|
||||
ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch7.ads \
|
||||
ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_eval.ads \
|
||||
ada/sem_mech.ads ada/sem_res.ads ada/sem_scil.ads ada/sem_type.ads \
|
||||
ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads \
|
||||
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
|
||||
ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
|
||||
ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
|
||||
ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
|
||||
ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
|
||||
ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
|
||||
ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
|
||||
ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
|
||||
ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
|
||||
ada/widechar.ads
|
||||
|
||||
@ -2030,21 +2019,21 @@ ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
|
||||
ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/scans.ads \
|
||||
ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_attr.ads \
|
||||
ada/sem_aux.ads ada/sem_ch11.ads ada/sem_ch6.ads ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_elab.ads ada/sem_eval.ads ada/sem_res.ads \
|
||||
ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
|
||||
ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
|
||||
ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
|
||||
ada/widechar.ads
|
||||
ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch11.ads ada/sem_ch6.ads \
|
||||
ada/sem_ch8.ads ada/sem_disp.ads ada/sem_elab.ads ada/sem_eval.ads \
|
||||
ada/sem_res.ads ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads \
|
||||
ada/sem_util.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
|
||||
ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
|
||||
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
|
||||
ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
|
||||
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
|
||||
ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
|
||||
ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
|
||||
ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
|
||||
ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
|
||||
ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
|
||||
ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
|
||||
ada/urealp.ads ada/validsw.ads ada/widechar.ads
|
||||
|
||||
ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -2108,10 +2097,10 @@ ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
|
||||
ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/scans.ads \
|
||||
ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_attr.ads \
|
||||
ada/sem_aux.ads ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_eval.ads ada/sem_res.ads ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
|
||||
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch6.ads ada/sem_ch7.ads \
|
||||
ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_res.ads \
|
||||
ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
|
||||
ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
|
||||
@ -2126,33 +2115,26 @@ ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
|
||||
ada/exp_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
|
||||
ada/einfo.adb ada/elists.ads ada/elists.adb ada/err_vars.ads \
|
||||
ada/errout.ads ada/erroutc.ads ada/exp_atag.ads ada/exp_ch11.ads \
|
||||
ada/exp_disp.ads ada/exp_dist.ads ada/exp_dist.adb ada/exp_strm.ads \
|
||||
ada/exp_tss.ads ada/exp_util.ads ada/fname.ads ada/freeze.ads \
|
||||
ada/get_targ.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \
|
||||
ada/hostparm.ads ada/interfac.ads ada/lib.ads ada/lib.adb \
|
||||
ada/lib-list.adb ada/lib-sort.adb ada/lib-xref.ads ada/namet.ads \
|
||||
ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
|
||||
ada/opt.ads ada/output.ads ada/restrict.ads ada/rident.ads \
|
||||
ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
|
||||
ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
|
||||
ada/sem_ch3.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
|
||||
ada/sem_eval.ads ada/sem_res.ads ada/sem_scil.ads ada/sem_type.ads \
|
||||
ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads ada/sinfo.adb \
|
||||
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
|
||||
ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
|
||||
ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
|
||||
ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
|
||||
ada/elists.adb ada/exp_atag.ads ada/exp_disp.ads ada/exp_dist.ads \
|
||||
ada/exp_dist.adb ada/exp_strm.ads ada/exp_tss.ads ada/exp_util.ads \
|
||||
ada/fname.ads ada/get_targ.ads ada/gnat.ads ada/g-hesorg.ads \
|
||||
ada/g-htable.ads ada/hostparm.ads ada/lib.ads ada/lib.adb \
|
||||
ada/lib-list.adb ada/lib-sort.adb ada/namet.ads ada/nlists.ads \
|
||||
ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
|
||||
ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/sem.ads \
|
||||
ada/sem_aux.ads ada/sem_aux.adb ada/sem_cat.ads ada/sem_ch3.ads \
|
||||
ada/sem_ch8.ads ada/sem_dist.ads ada/sem_eval.ads ada/sem_util.ads \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
|
||||
ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
|
||||
ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
|
||||
ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
|
||||
ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
|
||||
ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
|
||||
ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
|
||||
ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
|
||||
ada/urealp.ads ada/widechar.ads
|
||||
ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
|
||||
|
||||
ada/exp_fixd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -2203,7 +2185,7 @@ ada/exp_imgv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
|
||||
|
||||
ada/exp_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -2767,31 +2749,23 @@ ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
|
||||
ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
|
||||
ada/einfo.adb ada/elists.ads ada/elists.adb ada/err_vars.ads \
|
||||
ada/errout.ads ada/erroutc.ads ada/exp_ch11.ads ada/exp_disp.ads \
|
||||
ada/exp_tss.ads ada/exp_util.ads ada/fname.ads ada/freeze.ads \
|
||||
ada/get_targ.ads ada/gnat.ads ada/g-hesorg.ads ada/g-hesorg.adb \
|
||||
ada/g-htable.ads ada/hostparm.ads ada/interfac.ads ada/lib.ads \
|
||||
ada/lib-util.ads ada/lib-util.adb ada/lib-xref.ads ada/lib-xref.adb \
|
||||
ada/namet.ads ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads \
|
||||
ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads \
|
||||
ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
|
||||
ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_attr.ads \
|
||||
ada/sem_aux.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads \
|
||||
ada/sem_prag.ads ada/sem_res.ads ada/sem_scil.ads ada/sem_type.ads \
|
||||
ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads \
|
||||
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
|
||||
ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
|
||||
ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
|
||||
ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
|
||||
ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
|
||||
ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
|
||||
ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
|
||||
ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
|
||||
ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
|
||||
ada/elists.ads ada/elists.adb ada/err_vars.ads ada/errout.ads \
|
||||
ada/erroutc.ads ada/gnat.ads ada/g-hesorg.ads ada/g-hesorg.adb \
|
||||
ada/g-htable.ads ada/hostparm.ads ada/lib.ads ada/lib-util.ads \
|
||||
ada/lib-util.adb ada/lib-xref.ads ada/lib-xref.adb ada/namet.ads \
|
||||
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/opt.ads ada/osint.ads \
|
||||
ada/osint-c.ads ada/output.ads ada/restrict.ads ada/rident.ads \
|
||||
ada/sem.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_prag.ads \
|
||||
ada/sem_util.ads ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
|
||||
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
|
||||
ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
|
||||
ada/s-rident.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
|
||||
ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
|
||||
ada/widechar.ads
|
||||
|
||||
ada/lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
|
||||
ada/alloc.ads ada/atree.ads ada/atree.adb ada/casing.ads ada/debug.ads \
|
||||
@ -3328,26 +3302,26 @@ ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
|
||||
ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
|
||||
ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads \
|
||||
ada/scng.adb ada/sdefault.ads ada/sem.ads ada/sem_aggr.ads \
|
||||
ada/sem_attr.ads ada/sem_attr.adb ada/sem_aux.ads ada/sem_cat.ads \
|
||||
ada/sem_ch10.ads ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch4.ads \
|
||||
ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
|
||||
ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads ada/sem_eval.adb \
|
||||
ada/sem_intr.ads ada/sem_res.ads ada/sem_res.adb ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
|
||||
ada/snames.ads ada/snames.adb ada/sprint.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
|
||||
ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
|
||||
ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
|
||||
ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
|
||||
ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
|
||||
ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
|
||||
ada/tbuild.adb ada/tree_io.ads ada/ttypef.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
|
||||
ada/validsw.ads ada/widechar.ads
|
||||
ada/sem_attr.ads ada/sem_attr.adb ada/sem_aux.ads ada/sem_aux.adb \
|
||||
ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch13.ads ada/sem_ch3.ads \
|
||||
ada/sem_ch4.ads ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads \
|
||||
ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads \
|
||||
ada/sem_eval.adb ada/sem_intr.ads ada/sem_res.ads ada/sem_res.adb \
|
||||
ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
|
||||
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
|
||||
ada/sinput.adb ada/snames.ads ada/snames.adb ada/sprint.ads \
|
||||
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
|
||||
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
|
||||
ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
|
||||
ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypef.ads \
|
||||
ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
|
||||
ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
|
||||
ada/urealp.adb ada/validsw.ads ada/widechar.ads
|
||||
|
||||
ada/sem_aux.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -3546,23 +3520,23 @@ ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
|
||||
ada/output.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
|
||||
ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
|
||||
ada/sem_attr.ads ada/sem_aux.ads ada/sem_case.ads ada/sem_case.adb \
|
||||
ada/sem_cat.ads ada/sem_cat.adb ada/sem_ch13.ads ada/sem_ch3.ads \
|
||||
ada/sem_ch3.adb ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_dist.ads ada/sem_elim.ads ada/sem_eval.ads \
|
||||
ada/sem_eval.adb ada/sem_mech.ads ada/sem_res.ads ada/sem_scil.ads \
|
||||
ada/sem_smem.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
|
||||
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
|
||||
ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
|
||||
ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
|
||||
ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
|
||||
ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_case.ads \
|
||||
ada/sem_case.adb ada/sem_cat.ads ada/sem_cat.adb ada/sem_ch13.ads \
|
||||
ada/sem_ch3.ads ada/sem_ch3.adb ada/sem_ch6.ads ada/sem_ch7.ads \
|
||||
ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_elim.ads \
|
||||
ada/sem_eval.ads ada/sem_eval.adb ada/sem_mech.ads ada/sem_res.ads \
|
||||
ada/sem_scil.ads ada/sem_smem.ads ada/sem_type.ads ada/sem_util.ads \
|
||||
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
|
||||
ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
|
||||
ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
|
||||
ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
|
||||
ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
|
||||
ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
|
||||
ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
|
||||
ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
|
||||
ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
|
||||
ada/validsw.ads ada/widechar.ads
|
||||
|
||||
@ -3647,25 +3621,25 @@ ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
|
||||
ada/output.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
|
||||
ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
|
||||
ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
|
||||
ada/sem_ch10.ads ada/sem_ch12.ads ada/sem_ch3.ads ada/sem_ch4.ads \
|
||||
ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch6.adb ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_dist.ads ada/sem_elim.ads ada/sem_eval.ads \
|
||||
ada/sem_mech.ads ada/sem_prag.ads ada/sem_res.ads ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
|
||||
ada/sinput.adb ada/snames.ads ada/snames.adb ada/stand.ads \
|
||||
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
|
||||
ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
|
||||
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
|
||||
ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
|
||||
ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
|
||||
ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
|
||||
ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
|
||||
ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
|
||||
ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
|
||||
ada/urealp.ads ada/validsw.ads ada/widechar.ads
|
||||
ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb \
|
||||
ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch12.ads ada/sem_ch3.ads \
|
||||
ada/sem_ch4.ads ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch6.adb \
|
||||
ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_elim.ads \
|
||||
ada/sem_eval.ads ada/sem_mech.ads ada/sem_prag.ads ada/sem_res.ads \
|
||||
ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
|
||||
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
|
||||
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/snames.adb \
|
||||
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
|
||||
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
|
||||
ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
|
||||
ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
|
||||
ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
|
||||
ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
|
||||
ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
|
||||
ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
|
||||
ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
|
||||
ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
|
||||
|
||||
ada/sem_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -3778,11 +3752,11 @@ ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
|
||||
ada/output.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
|
||||
ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
|
||||
ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch3.ads \
|
||||
ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_disp.ads \
|
||||
ada/sem_disp.adb ada/sem_eval.ads ada/sem_res.ads ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
|
||||
ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb \
|
||||
ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_disp.adb ada/sem_eval.ads ada/sem_res.ads \
|
||||
ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
|
||||
ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
|
||||
ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
@ -3843,29 +3817,19 @@ ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
|
||||
ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads ada/einfo.ads \
|
||||
ada/einfo.adb ada/elists.ads ada/err_vars.ads ada/errout.ads \
|
||||
ada/erroutc.ads ada/exp_ch11.ads ada/exp_disp.ads ada/exp_tss.ads \
|
||||
ada/exp_util.ads ada/fname.ads ada/freeze.ads ada/get_targ.ads \
|
||||
ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
|
||||
ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/fname.ads \
|
||||
ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads ada/hostparm.ads \
|
||||
ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
|
||||
ada/lib-sort.adb ada/lib-xref.ads ada/namet.ads ada/namet.adb \
|
||||
ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \
|
||||
ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads \
|
||||
ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads \
|
||||
ada/scng.adb ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads \
|
||||
ada/sem_ch8.ads ada/sem_disp.ads ada/sem_elim.ads ada/sem_elim.adb \
|
||||
ada/sem_eval.ads ada/sem_prag.ads ada/sem_res.ads ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \
|
||||
ada/sem.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_elim.ads \
|
||||
ada/sem_elim.adb ada/sem_prag.ads ada/sem_util.ads ada/sinfo.ads \
|
||||
ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
|
||||
ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
|
||||
ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
|
||||
ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
|
||||
ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
|
||||
ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
|
||||
ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
|
||||
ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
|
||||
ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
|
||||
ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-strhas.ads \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
|
||||
ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
|
||||
ada/urealp.ads ada/widechar.ads
|
||||
|
||||
@ -3882,23 +3846,24 @@ ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
|
||||
ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
|
||||
ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_aggr.ads \
|
||||
ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch13.ads \
|
||||
ada/sem_ch4.ads ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads \
|
||||
ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads \
|
||||
ada/sem_eval.adb ada/sem_intr.ads ada/sem_res.ads ada/sem_res.adb \
|
||||
ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
|
||||
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
|
||||
ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
|
||||
ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
|
||||
ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
|
||||
ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
|
||||
ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
|
||||
ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
|
||||
ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
|
||||
ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
|
||||
ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
|
||||
ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
|
||||
ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_cat.ads \
|
||||
ada/sem_ch13.ads ada/sem_ch4.ads ada/sem_ch6.ads ada/sem_ch8.ads \
|
||||
ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads \
|
||||
ada/sem_eval.ads ada/sem_eval.adb ada/sem_intr.ads ada/sem_res.ads \
|
||||
ada/sem_res.adb ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads \
|
||||
ada/sem_util.adb ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
|
||||
ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
|
||||
ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
|
||||
ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-exctab.ads \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
|
||||
ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
|
||||
ada/widechar.ads
|
||||
|
||||
ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
|
||||
@ -3949,25 +3914,25 @@ ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
|
||||
ada/nmake.adb ada/opt.ads ada/output.ads ada/par_sco.ads \
|
||||
ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
|
||||
ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
|
||||
ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
|
||||
ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch4.ads \
|
||||
ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
|
||||
ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads ada/sem_eval.adb \
|
||||
ada/sem_intr.ads ada/sem_mech.ads ada/sem_prag.ads ada/sem_prag.adb \
|
||||
ada/sem_res.ads ada/sem_res.adb ada/sem_scil.ads ada/sem_type.ads \
|
||||
ada/sem_util.ads ada/sem_util.adb ada/sem_vfpt.ads ada/sem_warn.ads \
|
||||
ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
|
||||
ada/sinput.adb ada/snames.ads ada/snames.adb ada/stand.ads \
|
||||
ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
|
||||
ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
|
||||
ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
|
||||
ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
|
||||
ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
|
||||
ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
|
||||
ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
|
||||
ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
|
||||
ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
|
||||
ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb \
|
||||
ada/sem_cat.ads ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch3.ads \
|
||||
ada/sem_ch4.ads ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads \
|
||||
ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads \
|
||||
ada/sem_eval.adb ada/sem_intr.ads ada/sem_mech.ads ada/sem_prag.ads \
|
||||
ada/sem_prag.adb ada/sem_res.ads ada/sem_res.adb ada/sem_scil.ads \
|
||||
ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_vfpt.ads \
|
||||
ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
|
||||
ada/sinput.ads ada/sinput.adb ada/snames.ads ada/snames.adb \
|
||||
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
|
||||
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
|
||||
ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb \
|
||||
ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
|
||||
ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
|
||||
ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
|
||||
ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
|
||||
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
|
||||
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
|
||||
ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
|
||||
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
|
||||
ada/validsw.ads ada/widechar.ads
|
||||
|
||||
|
@ -8869,7 +8869,8 @@ A.5.2(32).
|
||||
@end cartouche
|
||||
@noindent
|
||||
The algorithm is the Mersenne Twister, as documented in the source file
|
||||
@file{s-rannum.adb}.
|
||||
@file{s-rannum.adb}. This version of the algorithm has a period of
|
||||
2**19937-1.
|
||||
|
||||
@sp 1
|
||||
@cartouche
|
||||
|
@ -191,17 +191,21 @@ package body System.Random_Numbers is
|
||||
generic
|
||||
type Unsigned is mod <>;
|
||||
type Real is digits <>;
|
||||
with function Shift_Right (Value : Unsigned; Amount : Natural)
|
||||
return Unsigned is <>;
|
||||
with function Random (G : Generator) return Unsigned is <>;
|
||||
function Random_Float_Template (Gen : Generator) return Real;
|
||||
pragma Inline (Random_Float_Template);
|
||||
-- Template for a random-number generator implementation that delivers
|
||||
-- values of type Real in the half-open range [0 .. 1), using values from
|
||||
-- Gen, assuming that Unsigned is large enough to hold the bits of
|
||||
-- a mantissa for type Real.
|
||||
-- values of type Real in the range [0 .. 1], using values from Gen,
|
||||
-- assuming that Unsigned is large enough to hold the bits of a mantissa
|
||||
-- for type Real.
|
||||
|
||||
function Random_Float_Template (Gen : Generator) return Real is
|
||||
|
||||
pragma Compile_Time_Error
|
||||
(Unsigned'Last <= 2**(Real'Machine_Mantissa - 1),
|
||||
"insufficiently large modular type used to hold mantissa");
|
||||
|
||||
begin
|
||||
-- This code generates random floating-point numbers from unsigned
|
||||
-- integers. Assuming that Real'Machine_Radix = 2, it can deliver all
|
||||
-- machine values of type Real (as implied by Real'Machine_Mantissa and
|
||||
@ -210,69 +214,118 @@ package body System.Random_Numbers is
|
||||
-- integer>) / (<max random integer>+1). To do so, we first extract an
|
||||
-- (M-1)-bit significand (where M is Real'Machine_Mantissa), and then
|
||||
-- decide on a normalized exponent by repeated coin flips, decrementing
|
||||
-- from 0 as long as we flip heads (1 bits). This yields the proper
|
||||
-- geometric distribution for the exponent: in a uniformly distributed
|
||||
-- set of floating-point numbers, 1/2 of them will be in [0.5, 1), 1/4
|
||||
-- will be in [0.25, 0.5), and so forth. If the process reaches
|
||||
-- Machine_Emin (an extremely rare event), it uses the selected mantissa
|
||||
-- bits as an unnormalized fraction with Machine_Emin as exponent.
|
||||
-- Otherwise, it adds a leading bit to the selected mantissa bits (thus
|
||||
-- giving a normalized fraction) and adjusts by the chosen exponent. The
|
||||
-- algorithm attempts to be stingy with random integers. In the worst
|
||||
-- case, it can consume roughly -Real'Machine_Emin/32 32-bit integers,
|
||||
-- but this case occurs with probability 2**Machine_Emin, and the
|
||||
-- expected number of calls to integer-valued Random is 1.
|
||||
-- from 0 as long as we flip heads (1 bits). This process yields the
|
||||
-- proper geometric distribution for the exponent: in a uniformly
|
||||
-- distributed set of floating-point numbers, 1/2 of them will be in
|
||||
-- (0.5, 1], 1/4 will be in (0.25, 0.5], and so forth. It makes a
|
||||
-- further adjustment at binade boundaries (see comments below) to give
|
||||
-- the effect of selecting a uniformly distributed real deviate in
|
||||
-- [0..1] and then rounding to the nearest representable floating-point
|
||||
-- number. The algorithm attempts to be stingy with random integers. In
|
||||
-- the worst case, it can consume roughly -Real'Machine_Emin/32 32-bit
|
||||
-- integers, but this case occurs with probability around
|
||||
-- 2**Machine_Emin, and the expected number of calls to integer-valued
|
||||
-- Random is 1. For another discussion of the issues addressed by this
|
||||
-- process, see Allen Downey's unpublished paper at
|
||||
-- http://allendowney.com/research/rand/downey07randfloat.pdf.
|
||||
|
||||
begin
|
||||
if Real'Machine_Radix /= 2 then
|
||||
declare
|
||||
Val : constant Real :=
|
||||
Real'Machine
|
||||
return Real'Machine
|
||||
(Real (Unsigned'(Random (Gen))) * 2.0**(-Unsigned'Size));
|
||||
begin
|
||||
if Val < 1.0 then
|
||||
return Real'Base (Val);
|
||||
else
|
||||
return Real'Pred (1.0);
|
||||
end if;
|
||||
end;
|
||||
|
||||
else
|
||||
declare
|
||||
Mant_Bits : constant Integer := Real'Machine_Mantissa - 1;
|
||||
Mant_Mask : constant Unsigned := 2**Mant_Bits - 1;
|
||||
Adjust32 : constant Integer := Real'Size - Unsigned_32'Size;
|
||||
Leftover : constant Integer :=
|
||||
Unsigned'Size - Real'Machine_Mantissa + 1;
|
||||
V : constant Unsigned := Random (Gen);
|
||||
Mant : constant Unsigned := V and Mant_Mask;
|
||||
Rand_Bits : Unsigned_32;
|
||||
Exp : Integer;
|
||||
Bits_Left : Integer;
|
||||
Result : Real;
|
||||
type Bit_Count is range 0 .. 4;
|
||||
|
||||
subtype T is Real'Base;
|
||||
|
||||
Trailing_Ones : constant array (Unsigned_32 range 0 .. 15)
|
||||
of Bit_Count
|
||||
:= (2#00000# => 0, 2#00001# => 1, 2#00010# => 0, 2#00011# => 2,
|
||||
2#00100# => 0, 2#00101# => 1, 2#00110# => 0, 2#00111# => 3,
|
||||
2#01000# => 0, 2#01001# => 1, 2#01010# => 0, 2#01011# => 2,
|
||||
2#01100# => 0, 2#01101# => 1, 2#01110# => 0, 2#01111# => 4);
|
||||
|
||||
Pow_Tab : constant array (Bit_Count range 0 .. 3) of Real
|
||||
:= (0 => 2.0**(0 - T'Machine_Mantissa),
|
||||
1 => 2.0**(-1 - T'Machine_Mantissa),
|
||||
2 => 2.0**(-2 - T'Machine_Mantissa),
|
||||
3 => 2.0**(-3 - T'Machine_Mantissa));
|
||||
|
||||
Extra_Bits : constant Natural :=
|
||||
(Unsigned'Size - T'Machine_Mantissa + 1);
|
||||
-- Random bits left over after selecting mantissa
|
||||
|
||||
Mantissa : Unsigned;
|
||||
X : Real; -- Scaled mantissa
|
||||
R : Unsigned_32; -- Supply of random bits
|
||||
R_Bits : Natural; -- Number of bits left in R
|
||||
|
||||
K : Bit_Count; -- Next decrement to exponent
|
||||
begin
|
||||
Rand_Bits := Unsigned_32 (Shift_Right (V, Adjust32));
|
||||
Exp := 0;
|
||||
Bits_Left := Leftover;
|
||||
Result := Real (Mant + 2**Mant_Bits) * 2.0**(-Mant_Bits - 1);
|
||||
while Rand_Bits >= 2**31 loop
|
||||
if Exp = Real'Machine_Emin then
|
||||
return Real (Mant) * 2.0**Real'Machine_Emin;
|
||||
end if;
|
||||
|
||||
Result := Result * 0.5;
|
||||
Exp := Exp - 1;
|
||||
Rand_Bits := 2 * Rand_Bits;
|
||||
Bits_Left := Bits_Left - 1;
|
||||
Mantissa := Random (Gen) / 2**Extra_Bits;
|
||||
R := Unsigned_32 (Mantissa mod 2**Extra_Bits);
|
||||
R_Bits := Extra_Bits;
|
||||
X := Real (2**(T'Machine_Mantissa - 1) + Mantissa); -- Exact
|
||||
|
||||
if Bits_Left = 0 then
|
||||
Bits_Left := 32;
|
||||
Rand_Bits := Random (Gen);
|
||||
end if;
|
||||
if Extra_Bits < 4 and then R < 2**Extra_Bits - 1 then
|
||||
-- We got lucky and got a zero in our few extra bits
|
||||
K := Trailing_Ones (R);
|
||||
|
||||
else
|
||||
Find_Zero : loop
|
||||
|
||||
-- R has R_Bits unprocessed random bits, a multiple of 4.
|
||||
-- X needs to be halved for each trailing one bit. The
|
||||
-- process stops as soon as a 0 bit is found. If R_Bits
|
||||
-- becomes zero, reload R.
|
||||
|
||||
-- Process 4 bits at a time for speed: the two iterations
|
||||
-- on average with three tests each was still too slow,
|
||||
-- probably because the branches are not predictable.
|
||||
-- This loop now will only execute once 94% of the cases,
|
||||
-- doing more bits at a time will not help.
|
||||
|
||||
while R_Bits >= 4 loop
|
||||
K := Trailing_Ones (R mod 16);
|
||||
|
||||
exit Find_Zero when K < 4; -- Exits 94% of the time
|
||||
|
||||
R_Bits := R_Bits - 4;
|
||||
X := X / 16.0;
|
||||
R := R / 16;
|
||||
end loop;
|
||||
|
||||
return Result;
|
||||
-- Do not allow us to loop endlessly even in the (very
|
||||
-- unlikely) case that Random (Gen) keeps yielding all ones.
|
||||
|
||||
exit Find_Zero when X = 0.0;
|
||||
R := Random (Gen);
|
||||
R_Bits := 32;
|
||||
end loop Find_Zero;
|
||||
end if;
|
||||
|
||||
-- K has the count of trailing ones not reflected yet in X.
|
||||
-- The following multiplication takes care of that, as well
|
||||
-- as the correction to move the radix point to the left of
|
||||
-- the mantissa. Doing it at the end avoids repeated rounding
|
||||
-- errors in the exceedingly unlikely case of ever having
|
||||
-- a subnormal result.
|
||||
|
||||
X := X * Pow_Tab (K);
|
||||
|
||||
-- The smallest value in each binade is rounded to by 0.75 of
|
||||
-- the span of real numbers as its next larger neighbor, and
|
||||
-- 1.0 is rounded to by half of the span of real numbers as its
|
||||
-- next smaller neighbor. To account for this, when we encounter
|
||||
-- the smallest number in a binade, we substitute the smallest
|
||||
-- value in the next larger binade with probability 1/2.
|
||||
|
||||
if Mantissa = 0 and then Unsigned_32'(Random (Gen)) mod 2 = 0 then
|
||||
X := 2.0 * X;
|
||||
end if;
|
||||
|
||||
return X;
|
||||
end;
|
||||
end if;
|
||||
end Random_Float_Template;
|
||||
|
Loading…
Reference in New Issue
Block a user