-
- [0]
Apple Silicon (M1プロセッサ)での動作
- 投稿者:管理人
- 投稿日:2021年 1月22日(金)09時27分9秒
-
-
Apple Silicon (M1プロセッサ)搭載MACでの動作を確認しています。
M1 Macでの動作に疑義があるとき書き込みをお願いします。
-
- [1]
(1+1/n)^n
- 投稿者:SHIRAISHI Kazuo
- 投稿日:2021年 1月22日(金)09時30分2秒
-
-
INTEL PCで(1+1/n)^nを計算
LET e=exp(1)
FOR i=1 TO 16
LET n=10^i
LET x=(1+1/n)^n
PRINT n,x,x-e
NEXT i
END
実行結果
10 2.5937424601 -.12453936835905
100 2.70481382942153 -.01346799903752
1000 2.71692393223589 -.00135789622316
10000 2.71814592682522 -.00013590163383
100000 2.71826823717449 -.00001359128456
1000000 2.71828046931938 -.00000135913967
10000000 2.71828169254497 -.00000013591408
100000000 2.71828181486764 -.00000001359141
1000000000 2.7182818270999 -.00000000135915
10000000000 2.71828182832313 -.00000000013592
100000000000 2.71828182844545 -.0000000000136
1000000000000 2.71828182845769 -.00000000000136
10000000000000 2.71828182845891 -.00000000000014
100000000000000 2.71828182845903 -.00000000000002
1.E15 2.71828182845904 -.00000000000001
1.E16 2.71828182845905 0
-
- [2]
Apple Silicon
- 投稿者:SHIRAISHI Kazuo
- 投稿日:2021年 1月22日(金)09時33分28秒
-
-
M1 Macでの実行結果
10 2.5937424601 -.12453936835905
100 2.70481382942153 -.01346799903752
1000 2.71692393223589 -.00135789622316
10000 2.71814592682523 -.00013590163382
100000 2.7182682371745 -.00001359128455
1000000 2.71828046931944 -.00000135913961
10000000 2.71828169254356 -.00000013591549
100000000 2.71828181488096 -.00000001357809
1000000000 2.7182818271427 -.00000000131635
10000000000 2.71828182925008 .00000000079103
100000000000 2.71828181758374 -.00000001087531
1000000000000 2.71828181759597 -.00000001086308
10000000000000 2.71828122816384 -.00000060029521
100000000000000 2.71829006967759 .00000824121854
1.E15 2.71817218519387 -.00010964326518
1.E16 2.71728821450559 -.00099361395346
-
- [3]
FYL2XP1
- 投稿者:SHIRAISHI Kazuo
- 投稿日:2021年 1月22日(金)09時39分40秒
-
-
Intel FPUのFYL2XP1命令のエミュレーションが正確にできていないのだろうと思います。
FYL2XP1は,x≒0のときにLOG2(1+x)*yを求める命令です。
-
- [4]
FRACTAL/MANDELBL.BAS
- 投稿者:SHIRAISHI Kazuo
- 投稿日:2021年 1月23日(土)14時11分50秒
-
-
サンプルプログラムのFRACTAL/MANDELBL.BASを2進モードで実行すると桁あふれのエラーを生成しません。
次に示すようにPRINT文を挿入すると正しく動作します(350行)。
100 ! マンデルブローのλ-map
110 ! f(z)=λz(1-z) の反復が有界となる複素数λの集合
120 ! λ=u+iv, z=x+y ,f(z)=x1+iy1 とおくと,
130 ! x1=ux0-vy0, y1=vx0-uy0, ここで x0=x(1-x)+y^2, y0=y(1-2x)
140 ! となることを利用して複素数の演算を行う。
150 OPTION ARITHMETIC native
160 LET left = -2
170 LET right = 4
180 LET h = (right - left) ! height
190 SET WINDOW left, right,-h/2,h/2
200 ASK PIXEL SIZE(left,-h;right,h) px,py
210 LET px=px-1
220 LET py=py-1
230 DRAW grid
240 SET POINT STYLE 1
250 FOR u= left TO right step (right-left)/px
260 FOR v = 0 to h/2 step h/py
270 LET x = 0.5
280 LET y = 0
290 WHEN EXCEPTION IN
300 FOR n = 1 TO 250
310 LET x0=x*(1-x)+y^2
320 LET y0=y*(1-2*x)
330 LET x =u*x0 - v*y0
340 LET y =v*x0 + u*y0
350 PRINT n,x,y
360 NEXT n
370 PLOT POINTS: u,v
380 PLOT POINTS: u,-v
390 USE
400 END WHEN
410 NEXT v
420 NEXT u
430 END
-
- [5]
2進モード時の0除算
- 投稿者:SHIRAISHI Kazuo
- 投稿日:2021年 1月23日(土)14時24分10秒
-
-
サンプルプログラムのFRACTAL/CAYLEY.BASを2進モードで実行するとBASICシステムを異常終了させます。
次に示すようにIF文で0除算を回避すると問題なく実行できるので、0除算の例外状態処理に問題がありそうです(350行)。
100 ! Cayleyの問題
110 ! f(z)=z^3-1 として,
120 ! Newton法の反復
130 ! z←z-f(z)/f'(z)
140 ! によって1の3乗根のうちのいずれに収束するか?
150 OPTION ARITHMETIC native
160 LET left=-4
170 LET right=4
180 LET h=(right-left)/2
190 SET WINDOW left,right,-h,h
200 DRAW axes
210 SET POINT STYLE 1
220 FOR px=0 TO PIXELX(right)
230 FOR py=0 TO PIXELY(h)
240 WHEN EXCEPTION IN
250 LET x0=PROBLEMX(px)
260 LET y0=PROBLEMY(py)
270 LET x=x0
280 LET y=y0
290 FOR i=1 to 100 ! 最大繰り返し回数
300 LET a=2*(x^3-3*x*y^2)+1
310 LET b=2*(3*x^2*y-y^3)
320 LET c=3*(x^2-y^2)
330 LET d=6*x*y
340 LET den=c^2+d^2
350 IF den<>0 THEN
360 LET x=(a*c+b*d)/den
370 LET y=(b*c-a*d)/den
380 IF (x-1)^2+y^2<0.0001 THEN ! 収束先によって色分け
390 SET POINT COLOR 3
400 PLOT POINTS : x0, y0
410 EXIT FOR
420 ELSEIF (x+0.5)^2+(y-sqr(3)/2)^2<0.0001 THEN
430 SET POINT COLOR 2
440 PLOT POINTS : x0, y0
450 EXIT FOR
460 ELSEIF (x+0.5)^2+(y+sqr(3)/2)^2<0.0001 THEN
470 SET POINT COLOR 4
480 PLOT POINTS : x0, y0
490 EXIT FOR
500 END IF
510 END IF
520 NEXT i
530 USE
540 END WHEN
550 NEXT py
560 NEXT px
570 END
-
- [7]
Ver 0.8.1.2
- 投稿者:SHIRAISHI Kazuo
- 投稿日:2021年 1月26日(火)10時25分44秒
-
-
FYL2XP1を代替ルーチンに置き換えました。
LET e=exp(1)
FOR i=1 TO 16
LET n=10^i
LET x=(1+1/n)^n
PRINT n,x,x-e
NEXT i
END
10 2.5937424601 -.12453936835905
100 2.7048138240566 -.01346800440245
1000 2.71692393223535 -.0013578962237
10000 2.71814592682522 -.00013590163383
100000 2.71826823717449 -.00001359128456
1000000 2.71828046931938 -.00000135913967
10000000 2.71828169254497 -.00000013591408
100000000 2.71828181486764 -.00000001359141
1000000000 2.7182818270999 -.00000000135915
10000000000 2.71828182832313 -.00000000013592
100000000000 2.71828182844545 -.0000000000136
1000000000000 2.71828182845769 -.00000000000136
10000000000000 2.71828182845891 -.00000000000014
100000000000000 2.71828182845903 -.00000000000002
1.E15 2.71828182845904 -.00000000000001
1.E16 2.71828182845905 0
戻る