<div>In any case, yes, I see the test does not work. Its 1735 (from the Pascal-P5 test catalog):</div>
<div> </div>
<div>{</div>
<div>
<p>PRT test 1735: For trunc(x), the value of trunc(x) is such that if x is<br /> positive or zero then 0 < x-trunc(x) < 1; otherwise 1 <x-<br /> trunc(x) < 0. It is an error if such a value does not exist.</p>
<p>ISO 7185 reference: 6.6.5.3</p>
<p>}</p>
<p>program iso7185prt1735;</p>
<p>var a: integer;<br /> b: real;</p>
<p>begin</p>
<p>{ assign maximum value of integer }<br /> b := maxint;<br /> { now move it completely out of range in floating point only }<br /> b := b+10.0;<br /> { now the assignment is invalid }<br /> a := trunc(b)</p>
<p>end.</p>
<p>I'm open to suggestions. ISO 7185 does not have a "maxreal" or similar.</p>
<p>I guess b := maxint; b := b*2 would do it. I was trying for something more subtle</p>
<p>(which clearly didn't work).</p>
<p>Regards,</p>
<p>Scott Franco</p>
</div>
<blockquote class="threadBlockQuote" style="border-left: 2px solid #C2C2C2; padding-left: 3px; margin-left: 4px;">--------- Original Message ---------
<div>Subject: RE: Floating point<br />From: "scott andrew franco" <samiam@moorecad.com><br />Date: 8/31/20 8:06 pm<br />To: "Waldek Hebisch" <hebisch@math.uni.wroc.pl>, "gpc@gnu.de" <gpc@gnu.de><br /><br />
<div>Waldek,</div>
<div> </div>
<div>Sure, 48 bits vs 64 bits. Why didn't it truncate the mantissa on conversion to float, ie, b := maxint?</div>
<div>I would have expected something like zeros on the right side.</div>
<div> </div>
<div>Thanks,</div>
<div> </div>
<div>Scott</div>
<div> </div>
<blockquote class="threadBlockQuote" style="border-left: 2px solid #C2C2C2; padding-left: 3px; margin-left: 4px;">--------- Original Message ---------
<div>Subject: Floating point<br />From: "Waldek Hebisch" <hebisch@math.uni.wroc.pl><br />Date: 8/31/20 7:58 pm<br />To: "gpc@gnu.de" <gpc@gnu.de><br /><br />On Mon, Aug 31, 2020 at 01:07:42PM -0700, scott andrew franco wrote:<br /> > samiam@samiam-home-pc:~/projects/pascal/pascal-p5$ cat test.pas<br /> > program test(output);<br /> > var b,c: real;<br /> > begin<br /> > b := maxint;<br /> > c := 10.0;<br /> > b := b+c;<br /> > writeln(b:40:1);<br /> > writeln(maxint:38);<br /> > end.<br /> > samiam@samiam-home-pc:~/projects/pascal/pascal-p5$ gpc -o test test.pas<br /> > samiam@samiam-home-pc:~/projects/pascal/pascal-p5$ ./test<br /> > 9223372036854775808.0<br /> > 9223372036854775807<br /> <br /> Note that floating point results are approximate and on<br /> 64-bit machines real accuracy is lower than integer<br /> accuracy.<br /> <br /> -- <br /> Waldek Hebisch<br /> <br /> _______________________________________________<br /> Gpc mailing list<br /> Gpc@gnu.de<br /> https://www.g-n-u.de/mailman/listinfo/gpc</div>
</blockquote>
_______________________________________________ Gpc mailing list Gpc@gnu.de https://www.g-n-u.de/mailman/listinfo/gpc</div>
</blockquote>