2025-03-01から1ヶ月間の記事一覧
箱ティッシュとハンドソープは、それぞれ「次の要素を取得する」という操作ができます。つまりイテレータですね。 しかし、一言でイテレータと言っても両者は少し性質が違います。 箱ティッシュは、要素の取得と同時に(ユーザから観測できる形で)次の要素…
前回 は、主に自分で考えた素朴なアルゴリズムを実装・証明しましょうというスタンスの回でした。 今回は(今後は?)既存の実装をなぞる形で勉強していきます。 紹介 実装 資料 ツール おわび 本題 考察 手順 おまけ 所感 おわり 紹介 実装 LLVM のものを参…
ここにテスト用の画像を貼る ここにテスト用の画像を貼ります。
いろいろな数学関数たちの correct rounding な実装をしていこうという遊びです。 丸め方向については一旦は tiesToEven のみを考えています。 $\sin$ や $\log$ のような超越関数 (transcendental functions) は大変ではありますが、さまざまな典型テクがあ…
えびちゃんです。お気持ち表明記事です。最近「お気持ち表明」というフレーズをあまり聞かなくなった気がしますね。 出会い 整数型との対比 固定小数点型や十進浮動小数点型など 誤差 比較 数式での証明 数学関数たちについて 実務? 所感 おわり 各章はそれ…
Rust で言うところの下記のような関数です。 fn is_square(nn: u64) -> bool { let n = (nn as f64).sqrt() as u64; n.wrapping_mul(n) == nn } fn is_square(nn: u64) -> bool { ((nn as f64).sqrt() as u64).wrapping_pow(2) == nn } これが問題ないという…
「そろそろ四則演算の誤差評価も飽きたな〜」「数学関数の計算とかもやってみてよ」という声が聞こえてきた*1ので、今日はそれをします。 導入 glibc 実装 精度? まえおき 方針 定数の計算 近似多項式 念のためもう少し近づけておく 完成 余談 参考文献 感…
C++ で #include <limits> をして std::numeric_limits<__float128>::digits をすると 0 と返ってきました。 よって、__float128 は float にすら劣る桁数しかないことがわかりました。いかがでしたか? コード #include <math.h> #include <stdio.h> #define MAGIC 0x7EEE #define PRECISION(F) l</stdio.h></math.h></__float128></limits>…