四核DR域错误

时间:2015-10-13 04:38:58

标签: apl

在什么情况下⎕DR会间歇性地失败?

虽然它已经运行多年了,但我们最近不时从文件中读取二进制数据的系统在⎕DR时崩溃了一个DOMAIN ERROR。

有问题的应用程序代码从本机文件中读取数据,如下所示:

[0]  r ← convert data
[1]  r ← 0 0 0 0 0
[2]  r[1] ← 323 ⎕DR data[1 2 3 4]
[3]  r[2] ← 323 ⎕DR data[5 6 7 8]
[4]  r[3] ← 645 ⎕DR data[9 10 11 12 13 14 15 16]
[5]  r[4] ← 645 ⎕DR data[17 18 19 20 21 22 23 24]
[6]  r[5] ← 645 ⎕DR data[25 26 27 28 29 30 31 32]

这是程序崩溃的645⎕DR线之一,以下是导致它最后一次崩溃的原因:

645 ⎕DR ⎕AV[157 43 52 44 1 1 215 96]

另一方面,以下工作:

645 ⎕DR ⎕AV[1 1 1 1 2 71 134 232]

我们使用Dyalog APL版本10.

1 个答案:

答案 0 :(得分:3)

否则将包含在

中的浮点值
In [16]: peq = {
   ....: 'sg':{'code':9, 'perror':0},
   ....: '6e':{'code':17, 'perror':0},
   ....: 'g8':{'code':25, 'perror':0},
   ....: 'i7':{'code':33, 'perror':0},
   ....: '9h':{'code':41, 'perror':0},
   ....: 'it':{'code':49, 'perror':0},
   ....: 'ic':{'code':57, 'perror':0},
   ....: '9w':{'code':65, 'perror':0},
   ....: 's2':{'code':73, 'perror':0},
   ....: 'ai':{'code':81, 'perror':0}
   ....: }

In [17]: import pandas as pd

In [18]: data = pd.DataFrame.from_dict(peq)

In [19]: data
Out[19]:
        6e  9h  9w  ai  g8  i7  ic  it  s2  sg
code    17  41  65  81  25  33  57  49  73   9
perror   0   0   0   0   0   0   0   0   0   0

In [20]: data.iloc[0]
Out[20]:
6e    17
9h    41
9w    65
ai    81
g8    25
i7    33
ic    57
it    49
s2    73
sg     9
Name: code, dtype: int64

In [21]:

是NaN(非数字),有效载荷值为2.251799834E15或20150831(2015年8月31日??),具体取决于您的查看方式。

据我所知,现在没有现有的APL处理NaNs作为其浮点数组的一部分(IBM 360浮点数没有这个),因此DOMAIN ERROR。

https://en.wikipedia.org/wiki/NaN

https://en.wikipedia.org/wiki/Double-precision_floating-point_format

Why does IEEE 754 reserve so many NaN values?

并搜索" Double NaN有效载荷"。

APL提供了一种轻松检查NaN内容的方法。请尝试以下方法:

645 ⎕DR ⎕AV[157 43 52 44 1 1 215 96]

当数字在内存中存储为 little endian 时,⊖是必需的。与维基百科文章中的64位双模式图相比,答案开始有意义。

有效载荷是指数中的任何东西。

       ⊖ 8 8 ⍴ 11 ⎕DR ⎕AV[157 43 52 44 1 1 215 96]
0               ⍝ sign bit, does not matter for NaN
  1 1 1 1 1 1 1 ⍝ 11 bit exponent, should be all 1
1 1 1 1 
        1 0 0 0 ⍝ the rest is the exponent
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 1 1 0 0 1 1
0 1 1 1 1 0 1 0
0 0 1 0 1 1 1 1

负和正无穷大是相似的。

创建此数据的软件或语言是什么?