三日坊主ブログ

意外と続いてます。。。

余り

 問1.3 aを5で割ると3余り、bを5で割ると4余る。a+b、abを5で割るといくつ余るか。

a、bを5で割った時の余りがわかってると、a+b、abを5で割った時の余りがわかるらしい。ふーん。

 

a÷5=A+3

b÷5=B+4

だから、

両辺それぞれ加算して、

a÷5+b÷5=A+3+B+4

(a+b)÷5=A+B+3+4=A+B+5+2

だから、a+bを5で割った時の余りは2、

 

両辺それぞれ乗算すると、

a÷5×b÷5=(A+3)×(B+4)

ab÷25=AB+3B+4A+12

???どうまとめていけばいいのかわからん。。。

答えは12を5で割った余りの、2らしい。

 

a+bとabの5で割った時の余りが、どちらも2になるところがミソらしい。

このあと証明されるんだろうけど、ひとまず今日は終わり。

 

ガロア理論の頂を踏む (BERET SCIENCE)

ガロア理論の頂を踏む (BERET SCIENCE)

 

 

osxでext4のマウント

% brew install ext4fuse

って感じでインストールした。Homebrewって便利だなあ。

 

% sudo ext4fuse /dev/disk1s1 ~/hoge

fuse4x kernel extension was not loaded. Please check /var/log/{system|kernel|debug}.log for more information.

あれ?って思ってさかのぼったら、ちゃんと書いてあった。。。

In order for FUSE-based filesystems to work, the fuse4x kernel extension

must be installed by the root user:

  sudo /bin/cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.2/Library/Extensions/fuse4x.kext /Library/Extensions

  sudo chmod +s /Library/Extensions/fuse4x.kext/Support/load_fuse4x

もう一度試したらマウントできた。読み込み専用だけど。

WHR-G301Nを子機にして、ソフトバンクの光BBユニットに繋ぐ -> 無理っぽい

ここ数日格闘してたけど、どうやら無理っぽい。

 

別の部屋にNASを置いて、無線でインターネットに繋ぎたくて、

インターネット→光BBユニット→(無線)→WHR-G301N→NAS

を目指していた。

WHR-G301Nから「エアステーション間接続」で繋がったぽかったけど、

どうしても光BBユニットが反応してくれない。。。

 

そろそろ諦めたくて検索してみたら、こんなのがあった。

価格.com - 『アドホックパーティーをやりたいのですがご享受ください!』 クチコミ掲示板

やっぱダメなんだろう。あきらめました。

 

 

BUFFALO 11n/g/b対応 無線LANルーター 【Wii U動作確認済み、iPhone5・Android端末対応】 WHR-G301N/N(FFP)

BUFFALO 11n/g/b対応 無線LANルーター 【Wii U動作確認済み、iPhone5・Android端末対応】 WHR-G301N/N(FFP)

 

 

AUTOINSERTLISP

仕事でVerilogを書くとき、verilog-modeを使わせてもらっている。AUTO_TEMPLATEやAUTOINSTを使って、インスタンス呼び出しをいい感じにしてた。

 

シミュレータの問題で、2次元配列をいい感じにダンプできなかった。仕方が無いので、1次元配列(というかバス)にassignすることで無理矢理ダンプしてた。

こんな感じ。

reg [7:0] ARRAY [10:0];

wire [7:0] BUS_0 = BUS[0];

wire [7:0] BUS_1 = BUS[1];

....

面倒くさ過ぎてなんとかならんもんかと思って、最近暇だったので調べてみたらなんとかなった。AUTOINSERTLISPなる関数で、lispで生成した文字列を挿入できた。

こんな感じ。

   reg [7:0] BUS [10:0];

/*AUTOINSERTLISP(insert (mapconcat '(lambda (i) (concat "    wire [7:0] BUS_" (number-to-string i) " = BUS[" (number-to-string i) "];")) (number-sequence 0 10) "\n") "\n")*/

// Beginning of automatic insert lisp

    wire [7:0] BUS_0 = BUS[0];

    wire [7:0] BUS_1 = BUS[1];

    wire [7:0] BUS_2 = BUS[2];

    wire [7:0] BUS_3 = BUS[3];

    wire [7:0] BUS_4 = BUS[4];

    wire [7:0] BUS_5 = BUS[5];

    wire [7:0] BUS_6 = BUS[6];

    wire [7:0] BUS_7 = BUS[7];

    wire [7:0] BUS_8 = BUS[8];

    wire [7:0] BUS_9 = BUS[9];

    wire [7:0] BUS_10 = BUS[10];

// End of automatics

 EmacsLispがよくわかってないんで、ここまで来るのにひと苦労。

でもうまく応用すれば、検証で使えそう。これまではRubyとかで条件ぶりしてたけど、Verilogで書いたベンチと別ファイルになるんで管理がめんどかった。lispで書けるんで、ベンチの中に直接埋め込めるようになるから、一つのファイルにまとめられる。

いいかも。

 

一次不等式を互除法で

 

ガロア理論の頂を踏む (BERET SCIENCE)

ガロア理論の頂を踏む (BERET SCIENCE)

 

 

問1.2 次のそれぞれの式を満たす整数x, yを一組求めよ。

(1) 17x+5y=1

(2) 15x+6y=9

(3) 15x+6y=5

一次不定方程式の解を、例の互除法で求めるっぽい。

 

(1)の解き方は、17を5*3+2に置き換えて式変形。

17x+5y=(5*3+2)x+5y=5(3x+y)+2x=5z+2x

z=3x+yと置いてる。さらに

5z+2=(2*2+1)z+2x=2(2z+x)+z=2w+z

w=2z+xとまたもや置く。

2w+z=1から、w=0, z=1が求められる。でもってさかのぼって計算すると、

x=-2, y=7という答えが導きだされるんだって。

 

計算過程が互除法と同じになってる。ふむ。

 

 

 

ユークリッド互除法かあ

 

ガロア理論の頂を踏む (BERET SCIENCE)

ガロア理論の頂を踏む (BERET SCIENCE)

 

 なんとか2日目。

ユークリッド互除法なんて、初めて知ってもうた。噂には聞いていたけど。

 

問1.1 851と185の最大公約数を求めよ。

851÷185=4 余り 111

185÷111=1 余り 74

111÷74=1 余り 37

74÷37=2 余り 0

んで、37が答えって感じで求めるアルゴリズムのことらしい。ふーん。

今日買った本

 今日帰りに2冊の本を買ってしまった。数学の本と回路設計の本。

ガロア理論の頂を踏む (BERET SCIENCE)

ガロア理論の頂を踏む (BERET SCIENCE)

 

 ガロア理論なるもので、

方程式f(x)=0の解が根号で表せる <=> 方程式f(x)=0のガロア群が可解群である

という定理を証明することで、5次方程式が根号で解けないこと示せるそうな。出だしから分けわからんが、この本の特徴として、

  1. 証明がこの本に全部書いてある
  2. 初めから終わりまで同じ丁寧さ
  3. 例から説明している
  4. 高校数学を履修した人であれば読める
  5. 一番易しいルートを選択

ということが挙げられてたので、しばらく付き合ってみる。。。

 

 

 RTLで掛け算を*で書いて、論理合成に任せっぱなしだ。他の実装方法もあることは知ってたけど、知らずにきた。遅いような気もするが、ここでちょっと勉強しとことうと思った。サンプルコードが載っていてわかりやすそうだったし、いいかなと思って。

 

どちらも本棚の肥やしになるかもしれないが、しばらく読み続けてみよう。。。