Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

macOS10.15 Catalinaでdockerでpandas環境で米国のファイナンス情報を取得する

Docker Desktop on Macをインストールする。Install Docker Desktop on Mac | Docker Documentationpython3.7が入ったDocker イメージをpullする。 $ docker pull python:3.7 起動する。 $ docker run -it --name pytest python:3.7 /bin/bash yfinanceをイ…

C++アプリケーションの高速化

ボトルネックの計測 まずはどこが遅いか計測しよう。全体の時間の1%の処理を50%高速化しても、0.5%高速化したことにしかならない。 std::chronoを使うのがよいだろう。 シビアなケースでは計測結果をメモリ上に配置しておき、あとでまとめて標準出力やログフ…

swift Intのオーバーフロー演算について

swiftは整数のオーバーフローに関して厳しめの仕様になっている。 Double, Floatには最大値はほぼない。 Double, Floatは不動小数点表現なので、最大値はほぼないと考えて良い。オーバーフロー制御構文は用意されていない。 DoubleをIntに変換するときにオー…

UIColor色のRGB値

(red, green, blue, alpha)UIColor.gray (0.5, 0.5, 0.5, 1) UIColor.lightGray (0.666, 0.666, 0.666, 1) UIColor.darkGray (0.333, 0.333, 0.333, 1) UIColor.magenta (1, 0, 1, 1)

仮想通貨取引の納税

会社の給与以外の所得があり、それが20万円を超えた場合は確定申告を行う必要があります。 この時、国税を国へ、市民県民税を市へ支払う必要があります。 No.1900 給与所得者で確定申告が必要な人|国税庁 例えば、2019年1月1日から2019年12月31日に行った仮…

let's encrypt のACMEv1終了に関するお知らせに対応した

let's encrypt から次のようなメールがきた。 According to our records, the software client you're using to get Let's Encrypt TLS/SSL certificates issued or renewed at least one HTTPS certificate in the past two weeks using the ACMEv1 protoco…

C++でstd::mutexの使い方の誤りを検出するThread Safety Analysis

C++でstd::mutexの使い方の誤りを検出するThread Safety Analysisというのがclangにあるそうです。 Thread Safety Analysis — Clang 10 documentationbitcoin coreのソースで使われていて知ったのですが、xcode でも使えました。 導入手順 1. 192行の mutex.…

secp256k1のベースポイントをn倍した点をsagemathで求める

ベースポイントを2倍した点,3倍した点は以下で求めます。 sage: E = EllipticCurve(GF(2 ** 256 - 2 ** 32 - 977), [0, 7]) sage: G = E([55066263022277343669578718895168534326250603453777594175500187360389116729240,32670510020758816978083085130507…

rust でignoreアトリビュートを指定したテストを実行する

rustでignoreアトリビュートを指定したテストを実行するには以下のコマンドを実行します。 $ cargo test -- --ignored

bitcoinのgenesis blockの情報を見てみる

ビットコインのgenesis blockつまり、最初のブロックの情報を見てみます。 まず、0番めつまり、genesis block のブロックハッシュを取得します。 $ bitcoin-cli getblockhash 0 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f 指定ブロ…

Velu's Formula

isogeny関連でvelu's formulaというものがあります。 まずは、体についてのおさらいをしておきます。 体Kは標数が0または素数pです。 標数の定義 体Kの乗法の単位元を標数個加算したものが加法の単位元になるということです。 をどれだけ足してもにならない…

sagemath で古典モジュラー多項式(Classical modular polynomial)を使いたい

sagemath で古典モジュラー多項式を使いたい場合は、以下のコマンドを叩いて、 インストール作業を行う必要があるようです。 すでに計算済みのモジュラー多項式の係数のデータベースのようです。 まあ、計算するだけでも恐ろしく時間がかかるので、データベ…

rustでモジュラー多項式の係数を求めてみる

こちらモジュラー多項式の定義と係数の求め方 - Pebble Codingで モジュラー多項式の係数を求めるアルゴリズムについて書きましたが、rustでの実装が完成しました。 めちゃくちゃ遅く実用化には程遠いですが、解説しておきます。 SageMathでの実装のアルゴリ…

macOSにてrustプロジェクトのprofileを取る

### cargo-profiler インストール $ cargo install cargo-profiler実行するにはbinを含むrustプロジェクトの存在するディレクトリで、 $ cargo profiler callgrind を実行します。 ライブラリモジュールの場合のやり方が分かっていません。参考: cargo-profi…

cargo testを高速化する

rustでは通常以下のコマンドで単体テストを実行します。 $ cargo testテストの実行に時間がかかる場合はreleaseビルドでテストを実行させることが可能です。 $ cargo test --release体感ですが、10倍ほど速度が違います。

j関数と正規化されたアイゼンシュタイン級数

正規化されたアイゼンシュタイン級数を以下で定義する。 は以下で定義されるベルヌーイ数である。 シグマはnの全ての約数dのべきの和を取る約数関数である。 次数の小さい方から例を書くと、 j関数を以下で定義します。 このj関数は複素数体上の関数ですが、…

数論的約数関数(number theoretic divisor function)

数論的約数関数に対して成り立つ恒等式を証明します。 と定義します。 自然数nに対してその約数dについて和をとります。 例: 次の恒等式が成り立ちます。 証明: LHSと比較するにはqのべきが等しいものをまとめる必要があります。 同じべきとなる ij = n は n…

ある曲線のグラフ

このグラフは楕円曲線を別の変数でパラメトライズした曲線です。 つまり水平線と1点または3点で交わることが分かります。

macにbrew caskでMacVimを入れる

vim

今まではbrewコマンドでmacvimをインストールしていましたが、アプリケーションとして入れられなくなったため、 brew caskを使います。$ brew uninstall macvim $ brew cask $ brew cask install macvim

SEAアルゴリズムで使う漸化式を導く

Elliptic Curves in Cryptography の VII.23の等式から、VII.24の漸化式を導く計算 証明すべき等式は以下です。 ここからVII.24が得られます。 使う材料は以下です。 (式A) 最初の等式の両辺のwの0乗からd乗までの多項式を計算し、係数を等しいと置くことが…

Doud's method

楕円曲線を満たすxを表す式の一つにDoud's methodがあります。 これを使い、モジュラー多項式の次数を下げた多項式を得るSEA法のロジックのうちの一つを計算してみます。 ぺー関数を以下のように表すのがDoud's methodです。 頭についている定数は以後の計算…

macOS 10.15 catalina zshrcのgitプロンプト設定

macOS 10.15 catalina からデフォルトシェルがbashからzshrcになりました。 今までいい感じだったコマンドプロンプトを作り直さないといけません。やれやれですね。 今までのbashの設定とほぼ変わらない形で以下を作ってみました。 ブランチ名の右側の記号が…

nが素数の時に成り立つ1のn乗根に関する等式

nが素数の時に成り立つ1のn乗根に関する等式 を証明します。 以下の事実を使います。 (式A) (式B) n is prime (式A)の右辺をzの同じ次数のべきでまとめると、の係数は0なので、 以下が成り立ちます。 pick k different element from 次に から一つの要素を除…

楕円曲線のsupersingular

標数pの楕円曲線Eがp等倍点を無限遠点しか持たないとき、その楕円曲線をsupersingularであると呼ぶ。 定理1 qを奇数でであるとし、とするとき、 はsupersingularである。 定理2 完全体上の標数pのsupersingularな楕円曲線はj-invariantが内にある。 (J. H. S…

等倍点とn乗根

定理1 n等倍点がE(K)に全て含まれるなら、n乗根は体Kに含まれる。 この定理から以下が言える。定理2 Eを(有理数体)上の楕円曲線とするとき、n=3以上のn等倍点でに含まれないものが存在する。 定理1は、体上のEを考えるとき(pは素数)、n等倍点がE(K)に含まれ…

数学洋書におけるif and only if

数学洋書で使われるif and only if の使い方です。 定理 a, bを実数とする。 方程式が2つの異なる実数解をもつ場合、 が成り立つ。かつ成り立つのはその時のみである。 これを英語で書くと次のようになります。 Theorem Let a and b be real numbers. The e…

モジュラー形式その4

j関数は重さ0のモジュラーです。つまり、 zで微分します。 ここで、 これを使うと、 これは、 が重さ2のモジュラーであることを意味します。 jの微分がモジュラーになるというのは、Math Overflowという数学専用質問サイトで発見しました。 モジュラー形式そ…

モジュラー形式その3

fを複素上半面の有理関数(meromorphic function)とする。 が全ての について成り立つとき、fを重さ(weight)の弱モジュラー(weakly modular)と呼ぶ。 と定義する。 kが負の値のときは発散するので考えない。 kが奇数のときは右辺は0になるので考えない。 k=2…

モジュラー形式 その2

証明に使う数学公式のメモ。 であるとき、両辺のlogを取り、 微分して、 logを取り、 微分して、 で左辺を書き換えると、 ここで和の順序を変えていないことに注意。

モジュラー形式(modular forms) その1

j関数の定理を証明するのにmodular formsの知識が必要なので、勉強し始めました。 とりあえず、教科書が届くまではネットのPDFで勉強します。 一般線型群のモジュラー形式 とし、 として、 と定義する。 というのは複素数から実数を取り除いた集合という意味…