RUST勉強中、9/19の積み上げ?

マンデルブロ集合の処理を実装していきます。

まぁ、この処理は難解なので、ここはテキストを写経していきます。

目標はテストコードをパスするところまで。

fn get_n_driverged(x0: f64, y0: f64, max_iter: usize) -> u8 {
    let mut xn = 0.0;
    let mut yn = 0.0;
    for i in 1..max_iter {
        let x_next = xn * xn - yn * yn + x0;
        let y_next = 2.0 * xn * yn + y0;
        xn = x_next;
        yn = y_next;
        if yn * yn + xn * xn > 4.0 {
            return i as u8;
        }
    }
    max_iter as u8
}

pub fn generate_mandalbrot_set(
    canvas_w: usize,
    canvas_h: usize,
    x_min: f64,
    x_max: f64,
    y_min: f64,
    y_max: f64,
    max_iter: usize,
) -> Vec<u8> {
    let canvas_w_f64 = canvas_w as f64;
    let canvas_h_f64 = canvas_h as f64;
    let mut data = vec![];
    for i in 0..canvas_h {
        let i_f64 = i as f64;
        let y = y_min + (y_max - y_min) * i_f64 / canvas_h_f64;
        for j in 0..canvas_w {
            let x = x_min + (x_max - x_min) * j as f64 / canvas_w_f64;
            let iter_index = get_n_driverged(x, y, max_iter);
            let v = iter_index % 8 * 32;
            data.push(v);
            data.push(v);
            data.push(v);
            data.push(255);
        }
    }
    data
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test_get_n_diverged() {
        let max_iter = 10;
        assert_eq!(get_n_driverged(1.0, 0.0, max_iter), 3);
        assert_eq!(get_n_driverged(0.0, 0.0, max_iter), max_iter as u8);
        assert_eq!(get_n_driverged(0.0, 1.0, max_iter), max_iter as u8);
    }
    #[test]
    fn test_generate_mandelbrot_set() {
        let canvas_w = 2;
        let canvas_h = 2;
        let x_min = -1.0;
        let x_max = 1.0;
        let y_min = -1.0;
        let y_max = 1.0;
        let max_iter = 8;
        assert_eq!(
            generate_mandalbrot_set(canvas_w, canvas_h, x_min, x_max, y_min, y_max, max_iter),
            vec![96, 96, 96, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255]
        );
    }
}
:~/rust/mandelbrot$ cargo test
   Compiling mandelbrot v0.1.0 (/home/taki/rust/mandelbrot)
warning: function `set_panic_hook` is never used
 --> src/utils.rs:1:8
  |
1 | pub fn set_panic_hook() {
  |        ^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: function `get_n_driverged` is never used
 --> src/logic.rs:1:4
  |
1 | fn get_n_driverged(x0: f64, y0: f64, max_iter: usize) -> u8 {
  |    ^^^^^^^^^^^^^^^

warning: function `generate_mandalbrot_set` is never used
  --> src/logic.rs:16:8
   |
16 | pub fn generate_mandalbrot_set(
   |        ^^^^^^^^^^^^^^^^^^^^^^^

warning: `mandelbrot` (lib) generated 3 warnings
warning: `mandelbrot` (lib test) generated 1 warning (1 duplicate)
    Finished test [unoptimized + debuginfo] target(s) in 0.46s
     Running unittests src/lib.rs (target/debug/deps/mandelbrot-c2f466aeb790a116)

running 2 tests
test logic::tests::test_generate_mandelbrot_set ... ok
test logic::tests::test_get_n_diverged ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/web.rs (target/debug/deps/web-ca9c3937d615c7ed)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests mandelbrot

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

経済ニュース(09/21)

「Windows 11 2022 Update」が本日より提供開始。一部機能は10月に追加予定 – PC Watch

Microsoftは、9月20日(現地時間)に報道発表を行ない、同社が開発コードネーム「Sun Valley 2」ないしは「Nickel」の開発コードネームで呼んで開発を続けてきた2022年度向けのWindows 11のアップデート(22H2)を「Windows 11 2022 Update」という名称で正式に発表、本日より順次配信が開始された。

ルービニ氏、米国は「長く、厄介な」リセッションへ-株は40%下落も – ブルームバーグ

著名エコノミスト、ヌリエル・ルービニ氏は、2022年末から米国をはじめ世界的に「長く、厄介な」リセッション(景気後退)に突入し、23年いっぱい続く恐れがあると予想した。米S&P500種株価指数については、急激な調整局面を迎えるとの見通しを示した。同氏は2008年の金融危機を正確に予想したことで知られる。

ナチス関連の本を持つ女性の写真掲載…千趣会が「ベルメゾン」など2誌を自主回収 – 読売新聞オンライン

カタログ通販大手の千趣会は20日、通販カタログ「ベルメゾン」と「花笑むとき」の2022年秋号で、モデルがナチス・ドイツに関する本を手にした写真を掲載していたとして、2誌を自主回収すると明らかにした。  同社は会員向けに

GPUを用いた仮想通貨マイニングは「誰も儲からない」とマイナーが続々撤退開始との報道、イーサリアムのマージによる弊害 – GIGAZINE(ギガジン)

イーサリアムの大型アップデート「マージ」が実行されたことにより、GPUを用いた仮想通貨マイニングが「儲からなくなった」と複数メディアが報じています。

米国株、ダウ反落で始まる 一時400ドル超安 長期金利上昇で – 日本経済新聞

【NQNニューヨーク=横内理恵】20日の米株式市場でダウ工業株30種平均は反落で始まり、午前9時50分時点では前日比370ドル09セント安の3万0649ドル59セントで推移している。下げ幅は400ドルを超える場面もあった。米連邦準備理事会(FRB)の金融引き締めの長期化観測を背景に米長期金利が11年ぶりの高水準を連日で更新し、相場の重荷となっている。米連邦公開市場委員会(FOMC)の結果発表を2

電動自転車に乗るあなた!バッテリー泥棒にご用心 – nhk.or.jp

ちょっと止めていただけなのに…バッテリーだけがない!こんな事件が相次いでいます。被害の実態と対策を取材しました。(大阪放…

危機に立つ“中流” – nhk.or.jp

かつて“一億総中流”と呼ばれた日本社会は今、どうなっているのか。独自に行ったアンケート調査の結果も踏まえて考えます。

地価調査 住宅地31年ぶりの上昇 いったい何が – nhk.or.jp

「都道府県地価調査」で住宅地の地価の全国平均は31年ぶりに上昇に。なぜ上昇に転じたのでしょうか

Appleが「App Store」でアプリ価格とアプリ内課金を値上げすると発表、120円が「160円」、1万円は「1万2800円」に。10月5日から – 電ファミニコゲーマー

Appleは、App Storeでのアプリ価格とアプリ内課金(自動更新サブスクリプションを除く)を10月5日から値上げすると発表した。

大阪府が10%もポイント上乗せするワケ – nhk.or.jp

「ポイントを10%上乗せ!」買い物中にそんな案内を見たら、思わず手に取ってしまう人もいるのではないでしょうか。いま、大阪…

NTTデータ、医療情報9.5万人分を不適切取得 匿名化して活用:朝日新聞デジタル – 朝日新聞デジタル

NTTデータは20日、患者に必要な通知をせずに約9万5千人分の医療情報を取得していたと発表した。情報の一部を製薬会社や研究機関などの第三者に提供したが、匿名加工処理をしていたため個人情報の流出はない…

“生搾りモンブラン”に1個600円超の“生ガキ”まで!“値上げの秋”に負けないお得な「食べ放題」続々|TBS NEWS DIG – TBS NEWS DIG Powered by JNN

食欲の秋に始まった豪華な食べ放題。生搾りモンブランに生ガキ。中には開催を1年待っていたお客さんもいました。■「生搾りモンブラン」も!60種類以上のメニュー楽しめるお得ビュッフェ東京・町田市にあるレストラン「STRI」。ランチタイムのビュッフェには多くのお客さんが…お目当ては「マロンフェア」(11月30日まで)です…

【ホンダ ステップワゴン 新型試乗】シフト操作はそろそろユニバーサルデザインにすべきだ…中村孝仁 – レスポンス

このところ、都会の至る所で黒塗りの大型ミニバンを多数見かける。それらはすべて、まあ見事な鉄仮面マスクでその存在を誇示するモデルだ。

【明日の好悪材料】を開示情報でチェック! (9月20日発表分) – Yahoo!ファイナンス

【好材料】  ――――――――――――

■エプコ <2311> [東証P]
8月売上高は前年同月比2%増。

■エス…

パナソニック 10月から新たに家電や電池を値上げへ(2022年9月20日) – ANNnewsCH

パナソニックが新たに家電や電池を値上げします。 パナソニックは10月1日から順次、掃除機やブルーレイレコーダーなど、家電や消耗品合わせて121品目と電池各種の出荷価格を引き上げると発表しました。値上げ幅は最大45%です。 パナソニックは8月に、冷蔵庫や食洗器、9月にドライヤーなどを値上げしています。原材料価格の上…

MBCニュース | 山形屋社主 岩元恭一氏が死去 83歳 「県民に愛される山形屋に」街づくりにも尽力 鹿児島 – MBC 南日本放送

鹿児島のニュース MBC南日本放送

台風の影響について – 日本郵便 – 郵便局

台風の影響について、以下のとおり、お知らせいたします。

シャープのエアコン発火恐れ 1万3000台を無償で点検・修理 – 毎日新聞 – 毎日新聞

シャープは20日、エアコン「エアレスト」約1万3000台を対象に無償で点検や修理を行うと発表した。室内機の中にある制御基板から発煙、発火する恐れがある。基板の部品配置が近接しているため、電流を送ると過度に負荷がかかる可能性があるという。

物価上昇でも現預金志向 日本の家計は5割超、米国は1割 – 日本経済新聞

日銀が20日発表した2022年4~6月期の資金循環統計(速報)によると、6月末時点の家計の金融資産は前年同期比1.3%増の2007兆円だった。内訳では現預金が5割台半ばと最も割合が高かった。米国では高インフレで預金から他の金融商品にマネーを移す動きがある。日本も株式投資や外貨定期預金を始める人が増えているが、多くは円預金や現金として滞留している。家計の金融資産の内訳をみると、最も割合の高い現金

物価上昇、10月にも3%か 食品値上げ集中、家計に重荷 | 共同通信 – 共同通信

総務省が20日公表した8月の全国消費者物価指数(生鮮食品を除く)は、前年同月比2.8%の上昇となり、…