> > 110 defdbl a-z '倍精度指定
> > ここを単精度指定にしたらどうなるか、
> この結果を教えてください。
> よろしくお願いいたします。
もちろん 169 が素数と表示されます。
元々単精度でそういう表示になるところから始まった話題ですから。
色々試していった結果結構ソースが変わってしまいましたが。(^^;
ところで、USING を使ってみたら違いが表示されました。
000 'pn88.bas
010 ' defdbl a-z '倍精度指定
020 'defdbl n '倍精度指定
030 OPEN "SQR.dat" FOR OUTPUT AS #1
040 INPUT N
050 IF (N/2 <> INT(N/2))=0 THEN IF N=2 THEN PRINT "素数" ELSE PRINT "合成数"
060 J!=SQR(N) 'ELSE
070 FOR I!=3 TO SQR(N) STEP 2
080 IF N/I! = INT(N/I!) THEN 1100 '*EXIT1
090 NEXT I!
100 ' *EXIT1
110 PRINT USING " .##################";I!-SQR(N) '.14
120 PRINT#1, USING " .##################";I!-SQR(N) '.14
130 IF I!<=SQR(N) THEN PRINT "合成数";I!;J!
140 IF I!<=SQR(N) THEN PRINT#1, "合成数";I!;J!
150 IF I!>SQR(N) THEN PRINT "素数";I!;J!
160 IF I!>SQR(N) THEN PRINT#1, "素数";I!;J!
170 INPUT A
180 END
この結果は
.000001907350000000
素数 13 13
このように単精度の時
I!-SQR(N)
で誤差が表示されました。
倍精度ではゼロになりました。
98実機ではどうなるでしょうね。