掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
オーバーフローを直すには? (ID:118634)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下のプログラム中のfai1という式がどうしてもオーバーフローしてしまいます。どなたか直し方を教えて下さい。ちなみにVBは完全な素人です。よろしくお願いします。 Dim n, ii, ie, ih As Integer Dim it As Variant Dim xr(20070), xi(20070) As Integer Dim aa(20070) As Variant n = 64 ii = ie - ih it = (Abs(ii)) / n For i = 0 To n - 1 xr(i) = aa(Int(ih + it * i)) * (Int(ih + it * i) + 1) - (ih + it * i) + aa(Int(ih + it * i) + 1) * ((ih + it * i) - Int(ih + it * i)) xi(i) = 0 Next i Dim n1 As Integer For i = 0 To n1 xi(i) = 0 Next i Dim l, pi As Integer l = Int(Log(n) / Log(2) + 0.5) pi = 3.141592 Dim k, la, theta, c, s, ct, st, nk, r, t, m0, j, m, mk, a1, a2, b1, b2, cx, sx, x, y, z1, fai1, fai, z, v, pre As Integer For k = 1 To la theta = 2 * pi / 2 ^ k c = 1: s = 0 ct = Cos(theta) st = Sin(theta) nk = n / 2 ^ k For r = 0 To n / 2 - nk Step nk t = r / nk m0 = 0 For j = 1 To k m0 = m0 + (t - Int(t / 2) * 2) * n / 2 ^ j t = Int(t / 2) Next j For m = m0 To m0 + nk - 1: mk = m + nk a1 = xr(m): a2 = xi(m) b1 = c * xr(mk) + s * xi(mk) b2 = -s * xr(mk) + c * xi(mk) xr(m) = a1 + b1 xi(m) = a2 + b2 xr(mk) = a1 - b1 xi(mk) = a2 - b2 Next m cx = ct * c - st * s sx = ct * s + st * c c = cx: s = sx Next r Next k For r = 0 To n1 xr(r) = xr(r) / n: xi(r) = xi(r) / n Next r nk = 1: k = l For r = 0 To n1 t = r / nk m0 = 0 For j = 1 To k m0 = m0 + (t - Int(t / 2) * 2) * n / 2 ^ j t = Int(t / 2) Next j If r < m0 Then x = xr(m0): y = xi(m0) xr(m) = xr(r): xi(m0) = xi(r) xr(r) = x: xi(r) = y End If Next r For r = 1 To 10 Next r z1 = Sqr(xr(1) * xr(1) + xi(1) * xi(1)) fai1 = (-xr(1) / Abs(xr(1)) * (Atn(xi(1) / z1 / Sqr(1 - xi(1) * xi(1) / z1 / z1)) - pi / 2)) For r = 1 To 5 x = xr(r): y = xi(r) z = Sqr(x * x + y * y) fai = -x / Abs(x) * (Atn(y / z / Sqr(1 - y * y / z / z)) - pi / 2) If fai > pi Then fai = fai - 2 * pi End If If fai < -pi Then fai = fai + 2 * pi End If If Abs(fai) > pi Then If fai > pi Then fai = fai - 2 * pi End If End If pre = z * v * 0.766 Next r
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.