Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

次世代数値演算 ライブラリ Decimal という再発明の意義

3,806 views

Published on

rubykaigi2009 LT

Published in: Technology
  • Be the first to comment

次世代数値演算 ライブラリ Decimal という再発明の意義

  1. 1. matzり、終了!
  2. 2. 次世代数値演算 ライブラリ Decimal という再発明の意義 筑波大学 斎藤 匡
  3. 3. 「Ruby逆引きレシピ」 by Ruby札幌
  4. 4. 「小数の計算」
  5. 5. 拙作ライブラリ Decimalが載っ ております
  6. 6. 目の前のジュ ンク堂書店で 売っています
  7. 7. 「Ruby逆引きレシピ」 by Ruby札幌
  8. 8. !買ってね!
  9. 9. Decimal
  10. 10. Decimal??
  11. 11. 「任意精度 小数演算 ライブラリ」
  12. 12. Floatより正確 な小数の計算
  13. 13. でも
  14. 14. 今日、俺は宣伝し に来たんじゃない (建前)
  15. 15. 前提
  16. 16. ソフトウェア
  17. 17. ウェアソフトウェアソ フトウェアソフトウェ アソフトウェアソフト ウェアソフトウェアソ フトウェアソフトウェ アソフトウェアソフト ウェアソフトウェアソ フトウェアソフトウェ
  18. 18. コモディティ
  19. 19. みんな「再発明」
  20. 20. より良い「再発 明」のしかた
  21. 21. Decimalは「具 体例」の一つ
  22. 22. 一般的な「定 理」を探りたい ↑目的 (建前)
  23. 23. Decimal?? (2)
  24. 24. 標準添付 「BigDecimal」 を作り直した感 じの何か
  25. 25. BigDecimalの 再発明
  26. 26. “Better BigDecimal” ↓ Decimal (ヲレヲレ)
  27. 27. 何故?
  28. 28. 二点
  29. 29. 実装がダサい
  30. 30. 設計がダサい
  31. 31. 133,553 vs 38,649
  32. 32. (1)
  33. 33. 実装 について。
  34. 34. BigDecimal: 133,553 bytes vs Decimal: 38,649 bytes
  35. 35. 実装量の違い
  36. 36. 約 3.5 倍 コンパクト!!
  37. 37. 何故?
  38. 38. 再利用!
  39. 39. (原理はじめ)
  40. 40. そもそも
  41. 41. 小数は 整数の組 で表せる
  42. 42. 3.14
  43. 43. (314, 2)
  44. 44. 「314」の 「下から2桁」 に小数点
  45. 45. 3.14159265358979
  46. 46. (314159265358979, 14)
  47. 47. (大きい整数, 小さい整数)
  48. 48. 小数の計算 ≒ 整数の計算
  49. 49. (原理ここまで)
  50. 50. 小さな整数
  51. 51. 問題無し
  52. 52. 大きな整数
  53. 53. がんばる必要
  54. 54. BigDecimalは どうしてる?
  55. 55. 自前!
  56. 56. 133,553 – 38,649 = 94,904 ←ココ!
  57. 57. Decimalは?
  58. 58. 大きな整数 ↓ Bignum
  59. 59. 他人の褌!
  60. 60. 副作用
  61. 61. 安定・高速
  62. 62. いいことばっか
  63. 63. 定理1 再利用重要
  64. 64. 設計について
  65. 65. x.sqrt
  66. 66. BigDecimalで 平方根
  67. 67. 普通 sqrt(x) だろjk
  68. 68. BigDecimal(”1.1”).to_s
  69. 69. #=> 0.11E1
  70. 70. “1.1” じゃない の?
  71. 71. Rails (ActiveSupport)
  72. 72. “1.1” になるよう上書き
  73. 73. 違和感
  74. 74.
  75. 75. 使い辛さ
  76. 76. Decimalでは
  77. 77. sqrt(x) # 予定 x.to_s # => “1.1”
  78. 78. 自然
  79. 79. 脳の互換性重要
  80. 80. 定理2 慣習重要
  81. 81. そのうえで
  82. 82. 再発明が受け入れ られるには
  83. 83. 定理3 シンプル
  84. 84. 定理4 速い
  85. 85. 必要
  86. 86. シンプル
  87. 87. BigDecimal.instance_methods(false).size vs Decimal.instance_methods(false).size
  88. 88. 50 vs 37
  89. 89. 作る方も 使う方も 楽
  90. 90. スピード
  91. 91. ほとんどのケース で 数割〜数十倍以上
  92. 92. Decimalが高速
  93. 93. ということで
  94. 94. 再利用 慣習 シンプル 速度
  95. 95. Decimalは 「再発明」として 十分な価値をもった
  96. 96. 再利用 慣習 シンプル 速度
  97. 97. Happy reinvention!
  98. 98. Decimal プロジェクト歌

×