タグ

qiitaとmathematicsに関するslay-tのブックマーク (3)

  • p進Newton法で平方数判定 - Qiita

    use std::num::Wrapping; pub fn is_square(x: u64) -> bool { let xtz = x.trailing_zeros(); if x == 0 { return true; } else if xtz & 1 != 0 { return false; } let x = Wrapping(x >> xtz); let mut y = Wrapping(1_u64); for _ in 0..5 { y = ((Wrapping(3_u64) - y * y * x) * y) >> 1; } let mut xrt = x * y; if xrt.0 & (1 << 32) != 0 { xrt = -xrt; } let xrt = xrt.0 & ((1 << 32) - 1); xrt * xrt == x.0 } 結論から言うと

    p進Newton法で平方数判定 - Qiita
  • 浮動小数点数の足し算と掛け算は可換か - Qiita

    読むのが面倒な人向けの結論:可換です。 「可換です」以外の答えを知りたい人はこの記事を最後まで読んでください。 結合法則と交換法則 実数の足し算や掛け算については結合法則 $x+(y+z)=(x+y)+z$ が成り立ちます。これに対し、浮動小数点数の足し算・掛け算が結合的でないことはとても有名な話です。 例えば、倍精度で (0x1p-200 + 1) + (-1) を計算すると、結合法則が成り立てば答えは 0x1p-200 となるはずですが、実際には 0 が返ってきます。 浮動小数点演算が結合的でないことは有名な話なので、ここではこれ以上詳しくは取りあげません。 一方で、交換法則(可換性)はどうでしょうか?「浮動小数点演算はこういう法則を満たさない!クソ!」みたいな話題で槍玉に上がるのはほとんどの場合結合法則で、交換法則に言及するものはあまり見かけない気がします。 交換法則が成り立つとどう

    浮動小数点数の足し算と掛け算は可換か - Qiita
  • 劣微分・劣勾配と共役関数の可視化 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 最適化や凸解析ののわりと序盤に登場するトピックに 劣微分・劣勾配 と 共役関数 があります。いずれも凸関数にとって特に重要な概念ですが、通常の書籍だと当然動きのない図でしか描かれていないため、イメージしづらい方もいるでしょう。そこで代表的な凸関数について、劣微分・劣勾配および共役関数のアニメーションを作りました(初めて格的にGoogle Colabを使いました)。の図よりはもっと鮮やかにイメージでき理解が深まるかと思います。なお、厳密には「閉真凸関数」などと呼ぶべき箇所を簡単のために単に「凸関数」と記述しています。厳密な定義などは

    劣微分・劣勾配と共役関数の可視化 - Qiita
  • 1