Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve MSYS2 download in build workflow v2 #625

Merged
merged 2 commits into from
Mar 7, 2020
Merged

Conversation

Hamayama
Copy link
Contributor

@Hamayama Hamayama commented Mar 7, 2020

MSYS2のダウンロードを調整しました。

  • stable (2019-5-24) ではなく latest を優先してダウンロードするようにしました。
    pacman の修正やミラーサイトの追加等がされているようです。
    また、ダウンロード後は、pacman -Syyuu で最新版にアップデートするようにしました。
    ( 安定版でいきたかったのですが、pacman が core dump したりしているので。。。
    https://github.com/shirok/Gauche/runs/488783601?check_suite_focus=true )

  • また、タイムアウト時間を 90 分に増やしました。
    ダウンロードのリトライ等で、時間がかかるケースがあるため。
    ( linux と osx は増やす必要はありませんが、また干渉があるといやなので、合わせました)

  • また、上記変更により、MinGW-w64 の gcc のバージョンが 8.3.0 から 9.2.0 に上がりました。
    このせいか、srfi-144 のテストが 2 件エラーになるようになったため、
    スキップするようにしました。

    test (fl+* fl-greatest fl-greatest neginf): expects -inf.0 => got +nan.0
    test (fl+* fl-greatest (fl- fl-greatest) posinf): expects +inf.0 => got +nan.0
    

<テスト結果>
https://github.com/Hamayama/Gauche/actions/runs/51153221

<関連情報>
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3ABugs#H-1qgtcx1
https://gist.github.com/Hamayama/3cc0e9c0c5283e7fc422360c6e5bd372

関連プルリクエスト #622

@shirok shirok merged commit 1ba1b9c into shirok:master Mar 7, 2020
@shirok
Copy link
Owner

shirok commented Mar 7, 2020

MinGWでのそのエラー、fl+*はCのfmaをそのまま呼んでるだけなので、MinGWのgccランタイムの問題っぽい気がします。

@Hamayama
Copy link
Contributor Author

Hamayama commented Mar 7, 2020

MinGWでのそのエラー、fl+*はCのfmaをそのまま呼んでるだけなので、
MinGWのgccランタイムの問題っぽい気がします。

情報ありがとうございます。

MinGW のランタイムにそれらしいファイルを見つけました。
https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-crt/math/fma.c

2019-12-12 に変更されているようです。
https://sourceforge.net/p/mingw-w64/mingw-w64/ci/fd78dd54e38c5b977cb2b6bab3bc20b63239911d/

以下のコメントがあります。2. に該当するならば、戻り値は +nan.0 でもよいのかも。

+double fma(double x, double y, double z) {
+  /*
+    POSIX-2013:
+    1. If x or y are NaN, a NaN shall be returned.
+    2. If x multiplied by y is an exact infinity and z is also an infinity
+       but with the opposite sign, a domain error shall occur, and either a NaN
+       (if supported), or an implementation-defined value shall be returned.
+    3. If one of x and y is infinite, the other is zero, and z is not a NaN,
+       a domain error shall occur, and either a NaN (if supported), or an
+       implementation-defined value shall be returned.
+    4. If one of x and y is infinite, the other is zero, and z is a NaN, a NaN
+       shall be returned and a domain error may occur.
+    5. If x* y is not 0*Inf nor Inf*0 and z is a NaN, a NaN shall be returned.
+  */

@Hamayama Hamayama deleted the actions9 branch March 17, 2020 06:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants