Gauche > Archives > 2020/10/31

2020/10/31 10:28:18 UTCiriyak
#
こんばんわ、ご無沙汰しております。CentOS 7 (x86_64-pc-linux-gnu) 上で 0.9.9 をコンパイルして試験をしましたところ flonum flremquo の試験 32 項目が失敗することに気づきましてご一報です。何かこちら側で切り分けできることがありましたらおっしゃって頂ければトライしてみます。

> test (f (flonum 15.875) (flonum 0.5)): expects (-0.125 0) => got (11.875 0)
2020/10/31 11:46:11 UTCshiro
#
flremquoはlibmのremquoを呼んでるだけなんで、remquoの戻り値が違ってると思うんですが、規格を読む限りそうはならないような… 次のt.cをコンパイルして実行したらどうなりますか?
#
shiro@scherzo:~/src/Gauche$ cat t.c
#include <stdio.h>
#include <math.h>

double X = 15.875;
double Y = 0.5;

int main(void)
{
    int q;

    printf("remainder = %lf, remquo = %lf\n",
           remainder(X, Y),
           remquo(X, Y, &q));
    return 0;
}
shiro@scherzo:~/src/Gauche$ cc t.c -lm
shiro@scherzo:~/src/Gauche$ ./a.out
remainder = -0.125000, remquo = -0.125000
2020/10/31 11:58:20 UTCiriyak
#
はい、こんな感じになりました。
#
[root@li1551-190 ~]# cat t.c
#include <stdio.h>
#include <math.h>

double X = 15.875;
double Y = 0.5;

int main(void)
{
    int q;

    printf("remainder = %lf, remquo = %lf\n",
           remainder(X, Y),
           remquo(X, Y, &q));
    return 0;
}
[root@li1551-190 ~]# cc t.c -lm
[root@li1551-190 ~]# ./a.out
remainder = -0.125000, remquo = 11.875000
[root@li1551-190 ~]#
#
[root@li1551-190 ~]# cc --version
cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2020/10/31 12:03:32 UTCiriyak
#
macmini (10.13.6) ではパスしていましてそちらではこのようになりました。
#
macmini[Sat]$ ./a.out
remainder = -0.125000, remquo = -0.125000
macmini[Sat]$ cc --version
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
2020/10/31 12:04:00 UTCshiro
#
gcc古い… remquoの戻り値はremainderと同じはず https://en.cppreference.com/w/c/numeric/math/remquo
2020/10/31 12:06:55 UTCiriyak
#
了解です、ちょっと最新化してみます。ご指摘ありがとうございます。(普段あまりビルド環境として運用していなかったものでして・・・)
2020/10/31 13:37:43 UTCiriyak
#
対象のOS環境はひとまず置いてCentOS 8環境を新規に構築し GCC 8.3.1 ベース, glibc 2.28 ベースで t.c, Gauche 0.9.9 ともに問題ないところまで確認できました。ありがとうございました。

CentOS 7 の特定バージョンに起因している可能性が高そうですので remquo が正しく動作するようにもう少しいじってみます。