--- ais/ai-00095.txt 1999/09/13 21:44:03 1.4 +++ ais/ai-00095.txt 1999/10/08 23:41:05 1.5 @@ -1,4 +1,4 @@ -!standard RM-3.5.4 (07) 99-08-31 AI95-00095/03 +!standard RM-3.5.4 (07) 99-10-06 AI95-00095/04 !standard RM-3.5.4 (27) !class ramification 95-09-29 !status Corrigendum 2000 99-05-25 @@ -14,7 +14,7 @@ !summary Implementation Permission: On a one's complement machine, the -implementation may support non-binary modulii above +implementation may support non-binary moduli above System.Max_Nonbinary_Modulus. !question @@ -52,10 +52,10 @@ modulus, rather than one less than the modulus. It is implementation defined for which powers of 2, if any, this permission is exercised. @dinst -For a one's complement machine, modulus values which are not powers of -2 greater than System.Max_Nonbinary_Modulus may be allowed. It is -implementation defined which values greater than System.Max_Nonbinary_Modulus, -if any, are allowed. +For a one's complement machine, implementations may support non-binary modulus +values greater than System.Max_Nonbinary_Modulus. It is implementation defined +which specific values greater than System.Max_Nonbinary_Modulus, if any, are +supported. !ACATS test @@ -86,7 +86,7 @@ burden. 1's complement compilers should be able to support some (usually one) -additional non-binary modulii above System.Max_Nonbinary_Modulus, in order +additional non-binary moduli above System.Max_Nonbinary_Modulus, in order to avoid the problem. Some argument based on 1.1.3(6) (the old AI-325) probably can be used here, @@ -145,7 +145,7 @@ be, we could write expensive versions of these operations which would work properly. -We would like to match the actual C compiler by supporting modulii up to +We would like to match the actual C compiler by supporting moduli up to 2**35-1 (Integer'Last) and 2**36-1. (2**35 does not pose any particular problem, and we probably will support that, too.) Of course, this does not fit into the model given in 3.5.4. @@ -174,7 +174,7 @@ > ... > 1's complement compilers should be able to support some (usually one) -> additional non-binary modulii above System.Max_Nonbinary_Modulus, in order +> additional non-binary moduli above System.Max_Nonbinary_Modulus, in order > to avoid the problem. Agreed. The implementation permission for 1's complement machines @@ -276,7 +276,7 @@ >> ... >> 1's complement compilers should be able to support some (usually one) ->> additional non-binary modulii above System.Max_Nonbinary_Modulus, in order +>> additional non-binary moduli above System.Max_Nonbinary_Modulus, in order >> to avoid the problem. > >Agreed. The implementation permission for 1's complement machines @@ -383,7 +383,7 @@ That means that the direct hardware OR, XOR, and NOT operations cannot be used, since they could produce the all-ones value. That is OK, as that is in fact what would naturally happen with such a modulus (and they do not have the -overflow problems that add and subtract have with large modulii). We would +overflow problems that add and subtract have with large moduli). We would only have to special case Add and Subtract in generics. I've ignored multiply, for the simple reason that no one yet has been able @@ -458,7 +458,7 @@ Ada 95 compiler for the 2200 platform.) Most of the interesting cases appear for the full word modular type. -Types with smaller modulii are less interesting, so we will concentrate +Types with smaller moduli are less interesting, so we will concentrate on the full word type. (Note that we assume that the full word type is intended to be supported by the standard, although its strict wording would practically prevent that on a one's complement machine. It would @@ -474,11 +474,11 @@ must be chosen. Now, once the modulus of 2**36-1 is chosen, the standard says that -Max_NonBinary_Modulus has to have the value 2**36-1. Of course, modulii +Max_NonBinary_Modulus has to have the value 2**36-1. Of course, moduli like 2**36-2 would then have to be supported, and this would be difficult. The reason that Max_Binary_Modulus and Max_NonBinary_Modulus are different is to avoid the implementation burden of large nonbinary -modulii on the (2's complement) compiler implementor. It would be +moduli on the (2's complement) compiler implementor. It would be unfair, at least, to require that burden on implementors whose hardware happens to be 1's complement.

Questions? Ask the ACAA Technical Agent