Hokkaido pm 8 LT

2,553 views

Published on

Hokkaido.pm #8 向けのLT 資料です
浮動小数点数のテストについて (?)

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,553
On SlideShare
0
From Embeds
0
Number of Embeds
1,579
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hokkaido pm 8 LT

  1. 1. Hokkaido.pm #8 Lightning Talk Hachioji.pm / Kokusaitenjijomae.pm @moznionSunday, December 23, 12
  2. 2. @moznion 大学生 アルバイトソフトウェア エンジニア 2年前まで道民でした 2日前に論文が リジェクトされたので ブルー入ってますSunday, December 23, 12
  3. 3. クリスマスらしく Acme の話……Sunday, December 23, 12
  4. 4. クリスマスらしく Acme の話…… はしませんSunday, December 23, 12
  5. 5. 皆さん Perl で数値計算してますか!?Sunday, December 23, 12
  6. 6. 数値計算してると クソ面倒なアイツがいますよねSunday, December 23, 12
  7. 7. 浮動小数点数Sunday, December 23, 12
  8. 8. 浮動小数点数 めんどいSunday, December 23, 12
  9. 9. 浮動小数点数 めんどい 今日はこれについてSunday, December 23, 12
  10. 10. さて 拙作のモジュールで ハマったことSunday, December 23, 12
  11. 11. 浮動小数点数を こんな感じでテスト すると死ねますSunday, December 23, 12
  12. 12. Sunday, December 23, 12
  13. 13. 見るからにやばそうSunday, December 23, 12
  14. 14. こういう事をすると テストがズッコケる 環境が出てくるSunday, December 23, 12
  15. 15. ぐぬぬ…Sunday, December 23, 12
  16. 16. ありがたいことに ISSUE が来る (@syohex さんありがとうございます)Sunday, December 23, 12
  17. 17. ISSUE が来る (ありがたいことに) https://github.com/moznion/Math--PhaseOnlyCorrelation/issues/1Sunday, December 23, 12
  18. 18. 浮動小数は色々めんどいから 普通に比較するとダメよ、 とのこと † 以下が詳しい x86における浮動小数点演算の精度の制御と、 80bit 浮動小数点演算問題 http://www.takeoka.org/~take/cpu/num/float80bit.htmlSunday, December 23, 12
  19. 19. あと CPAN Testers Daily Summary Reportからも 毎日メールが来る (深夜に)Sunday, December 23, 12
  20. 20. そして 夜も眠れない!! CPAN Testers Daily Summary Reportから (Report はありがたいんですが) 毎日メールが来るSunday, December 23, 12
  21. 21. 夜は眠りたいので 直しましょうSunday, December 23, 12
  22. 22. 方法 1Sunday, December 23, 12
  23. 23. 小数点以下を切り捨てて 整数にしてからテストをするSunday, December 23, 12
  24. 24. e.g. TODO こんなかんじSunday, December 23, 12
  25. 25. e.g. まさに外道!!! TODO こんなかんじSunday, December 23, 12
  26. 26. 悪党な方法過ぎて駄目 そもそもテストの正当性が 失われているSunday, December 23, 12
  27. 27. 方法 2Sunday, December 23, 12
  28. 28. $var * 10 ^ $num してから小数点以下を 切り捨ててテストするSunday, December 23, 12
  29. 29. e.g.Sunday, December 23, 12
  30. 30. $num 桁までの精度は 保証される ただ、ちょっとダサい (主観)Sunday, December 23, 12
  31. 31. あと、整数桁数が 莫大に増えたら それもそれで問題な気がSunday, December 23, 12
  32. 32. 方法 3Sunday, December 23, 12
  33. 33. 採択域を設定して、 両者の差がその範囲内かを テストするSunday, December 23, 12
  34. 34. e.g. TODO こんなかんじSunday, December 23, 12
  35. 35. 割と良い感じ。 拙作のモジュールでも 一時期 (3日くらい) やってたSunday, December 23, 12
  36. 36. 方法 4Sunday, December 23, 12
  37. 37. 正規表現でバツンと切って 小数桁数を制限するSunday, December 23, 12
  38. 38. e.g.Sunday, December 23, 12
  39. 39. 結構メイジャーな方法っぽい (特にPhysics のモジュールで) けど、なんかやだ (主観)Sunday, December 23, 12
  40. 40. 方法 5Sunday, December 23, 12
  41. 41. sprintf(“%.${num}f”, $var) を使って桁数を制限するSunday, December 23, 12
  42. 42. e.g.Sunday, December 23, 12
  43. 43. これが一番しっくり来た。 なんか良い感じ (Math のモジュールで 良く見かける)Sunday, December 23, 12
  44. 44. 方法 6Sunday, December 23, 12
  45. 45. Acme::Test を使うSunday, December 23, 12
  46. 46. Sunday, December 23, 12
  47. 47. 例とか無いですSunday, December 23, 12
  48. 48. とまあ こんな感じでSunday, December 23, 12
  49. 49. 浮動小数点数 めんどいSunday, December 23, 12
  50. 50. ただSunday, December 23, 12
  51. 51. 浮動小数点数 めんどいSunday, December 23, 12
  52. 52. 浮動小数点数 めんどい テストめんどいSunday, December 23, 12
  53. 53. 浮動小数点数 めんどい こうなるとまずい テストめんどいSunday, December 23, 12
  54. 54. 「テストこけるけど動くから 大丈夫だよー」 「めんどいからテストしなくて もいいよー」 「“cpanm -f Foo::Bar” でおk」Sunday, December 23, 12
  55. 55. 「テストこけるけど動くから 大丈夫だよー」 破滅待ったなし 「めんどいからテストしなくて もいいよー」 「“cpanm -f Foo::Bar” でおk」Sunday, December 23, 12
  56. 56. テストを ろにしてはならないSunday, December 23, 12
  57. 57. その為には?Sunday, December 23, 12
  58. 58. 1Sunday, December 23, 12
  59. 59. テストがすぐ実行できて軽いこと こまめにテストを走らせられる (物理的 | 心理的)環境を整えるSunday, December 23, 12
  60. 60. 2Sunday, December 23, 12
  61. 61. テストが書きやすいこと 書きやすければ書きやすい程 テストの習慣は定着するSunday, December 23, 12
  62. 62. テストの書きやすさ、 マジ重要!Sunday, December 23, 12
  63. 63. というわけで、 浮動小数点のテストを支える モジュールが有るとハッピーSunday, December 23, 12
  64. 64. 例えば Test::Number::DeltaSunday, December 23, 12
  65. 65. 方法3 として挙げた 採択域うんぬんのテストを サポートしてくれるSunday, December 23, 12
  66. 66. e.g. TODO こんなかんじ (デフォルトだと1-e6 が採択域)Sunday, December 23, 12
  67. 67. Cool !Sunday, December 23, 12
  68. 68. 名前的に Test::Float もイケそうだけど 使ったことないですSunday, December 23, 12
  69. 69. あと今 Test::LimitDecimalPlaces というモジュールを 書いてます https://github.com/moznion/Test--LimitDecimalPlacesSunday, December 23, 12
  70. 70. 方法5 として挙げた sprintf() を使って テスト出来るモジュールです (ヘルパーメソッド的な)Sunday, December 23, 12
  71. 71. こんな感じで使えますSunday, December 23, 12
  72. 72. 内部的にはこんな感じSunday, December 23, 12
  73. 73. ただ問題がSunday, December 23, 12
  74. 74. Test::LimitDecimalPlacesSunday, December 23, 12
  75. 75. Test::LimitDecimalPlaces 名前がダサいSunday, December 23, 12
  76. 76. limit_ok limit_ok_by limit_not_ok limit_not_ok_bySunday, December 23, 12
  77. 77. limit_ok limit_ok_by limit_not_ok limit_not_ok_by メソッド名がダサいSunday, December 23, 12
  78. 78. limit_ok limit_ok_by limit_not_ok limit_not_ok_by メソッド名がダサい そもそも英文法的に怪しいSunday, December 23, 12
  79. 79. とりあえず PrePAN に投げて反応を 待とうかと思っていますSunday, December 23, 12
  80. 80. アドバイス 目下募集中です よろしくお願いします。Sunday, December 23, 12
  81. 81. あと、他にも浮動小数点数 周りの良いテストモジュール があれば教えてくださいSunday, December 23, 12
  82. 82. 了Sunday, December 23, 12

×