SLATEC - 编译错误

时间:2016-06-28 12:05:47

标签: fortran equivalence

我想编译在netlike.org下载的slatec库。 我写了一个简单的Makefile来编译所有例程。但是,在编译包含机器特定值的d1mach.f等** mach.f文件时出错。 只有当我(我应该,如果我理解正确的描述)取消注释我的机器(英特尔)的值时,才会出现错误。如果我不这样做,编译不会产生错误,但是例程dsos不起作用,即迭代没有启动,而是始终在以下评估测试函数起点。

错误消息:

src/d1mach.f:85:37:

       EQUIVALENCE (DMACH(5),LOG10(1))
                                     1
Error: Expecting a comma in EQUIVALENCE at (1)
make: *** [obj/d1mach.o] Error 1

我想我的原因是If a variable name is also a function name (15.5.1), that name must not appear in the list.我在Fortran77标准中的8.2.1点找到了什么。 有没有人遇到过这个问题并解决了它?

编辑:

d1mach.f的简短版本是:

      DOUBLE PRECISION FUNCTION D1MACH (I)

C
      INTEGER SMALL(4)
      INTEGER LARGE(4)
      INTEGER RIGHT(4)
      INTEGER DIVER(4)
      INTEGER LOG10(4)
C
      DOUBLE PRECISION DMACH(5)
      SAVE DMACH
C
      EQUIVALENCE (DMACH(1),SMALL(1))
      EQUIVALENCE (DMACH(2),LARGE(1))
      EQUIVALENCE (DMACH(3),RIGHT(1))
      EQUIVALENCE (DMACH(4),DIVER(1))
      EQUIVALENCE (DMACH(5),LOG10(1))
C
C
     DATA DMACH(1) / Z'0010000000000000' /
     DATA DMACH(2) / Z'7FEFFFFFFFFFFFFF' /
     DATA DMACH(3) / Z'3CA0000000000000' /
     DATA DMACH(4) / Z'3CB0000000000000' /
     DATA DMACH(5) / Z'3FD34413509F79FF' /
C
C
      IF (I .LT. 1 .OR. I .GT. 5) CALL XERMSG ('SLATEC', 'D1MACH',
     +   'I OUT OF BOUNDS', 1, 2)
C
      D1MACH = DMACH(I)
      RETURN
C
      END

0 个答案:

没有答案