Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
コマンドライン電卓bcコマンド
Osumi, Yusuke
July 19, 2020
Technology
0
220
コマンドライン電卓bcコマンド
「新しいLinuxの教科書」を読む会 オンライン #3
での発表資料です。
https://linuxbook.connpass.com/event/180887/
Osumi, Yusuke
July 19, 2020
Tweet
Share
More Decks by Osumi, Yusuke
See All by Osumi, Yusuke
本の紹介の補足
ozuma
1
110
gitサービス3兄弟
ozuma
0
110
簡体字は楽
ozuma
0
120
ソフトウェアは固定資産
ozuma
0
150
ASCIIコードの小話
ozuma
0
140
今いるディレクトリを消すとどうなる
ozuma
1
86
名前付きパイプ FIFO
ozuma
0
170
文章、作文技法 リモートワーク
ozuma
1
490
CentOSの今後のリリース(簡易説明)
ozuma
0
150
Other Decks in Technology
See All in Technology
疎ベクトル検索と密ベクトル検索: 第68回 Machine Learning 15minutes! Broadcast
keyakkie
1
250
psql, my favorite tool!
nuko_yokohama
1
180
DeFiChain Tech Talk - DFI Uniswap Staking, DeFi Options & DeFi Meta Chain
uzyn
0
120
Amazon Comprehendで始める感情分析
46ta
0
200
Sysdig Secure/Falcoの活用術! ~Kubernetes基盤の脅威モデリングとランタイムセキュリティの強化~
owlinux1000
0
290
Goで実装するブランドネットワークとの接続ポイント
pongzu
2
280
品質特性のすすめ
honamin09
0
180
サイバー攻撃を想定したクラウドネイティブセキュリティガイドラインとCNAPP及びSecurity Observabilityの未来
sakon310
4
470
A3-1 IBM Championが本音で語る「IBM Cloud」
kolinz
0
310
AWS CLI でやってみる ~ AWS Hands-on for Beginners ECS ハンズオン ~
kentosuzuki
1
520
Power Automate for desktopで 配信環境を改善してみた話
akiika
0
320
Getting Started in Product Management
thatjeffsmith
0
130
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
127
5.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
18
40k
Mobile First: as difficult as doing things right
swwweet
213
7.6k
Stop Working from a Prison Cell
hatefulcrawdad
262
17k
Documentation Writing (for coders)
carmenintech
48
2.6k
How to name files
jennybc
40
63k
How New CSS Is Changing Everything About Graphic Design on the Web
jensimmons
213
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Unsuck your backbone
ammeep
659
55k
Done Done
chrislema
174
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_i
25
15k
Transcript
コマンドライン電卓 bc コマンド @ozuma5119 1 「新しいLinuxの教科書」を読む会 オンライン #3 2020/07/19
Linuxのコマンドラインで計算したい 2 3 + 7 = ? sin(π/2) = ?
(4.3)3 = ?
Linuxのコマンドラインで計算したい 3 • exprコマンド : expr 1 + 1 •
bashの算術式展開 $((1+1))) • bcコマンド : echo "1 + 1" | bc
基本的な四則演算:もちろんできる 4 $ bc bc 1.06.95 ..(略)... 1+1 2 1-1
0 2*3 6 赤文字が入力、黒文字が出力
基本的な四則演算:もちろんできる 5 $ bc bc 1.06.95 ..(略)... 1+1 2 1-1
0 2*3 6 ※割り算は注意 デフォルトでは小数点切り捨て なので、scaleでケタ数を指定する 2/3 0 scale=5 2/3 .66666 ↑ 小数点の最初の0は省略される (他のプログラミング言語でも 一般的) 赤文字が入力、黒文字が出力
シェルスクリプトで使うとき 6 $ echo "1 + 1" | bc 2
$ 計算式をechoなどでパイプで渡してあげれば良いだけ もうちょっとちゃんと言うと…… → bcコマンドは標準入力を算術式として評価し、計算結果を標準出力へ出力 する
数式をファイルに書いてもOK 7 $ cat math.txt (1+3+5+90)*3 $ bc < math.txt
297 ※標準入力に数式を与えている
for などあるのでプログラムも書けます 8 $ cat math2 for (i=1; i <
10; i++) { i^2 } $ bc < math2 1 4 9 16 25 36 49 64 81 i=1から9までの、 iの2乗を出力
ここからおまけ:高度な計算 9 bc -l オプションを付けて起動すると、数学ライブラリがロードされる。 これにより以下の関数が使える • s(x) : sin(x)
[正弦関数] • c(x) : cos(x) [余弦関数] • a(x) : arctan(x) (または tan-1(x)) [逆正接関数] • l(x) : log e (x) = ln(x) [自然対数] • e(x) : ex (eは自然対数の底) [自然指数関数] • j(n,x) : [n次ベッセル関数]
タンジェント tan(x) なんて軟弱なものはない 10 自分で作れるでしょ!! • tan(x) = sin(x)/cos(x) なので……
◦ t(x) = s(x)/c(x) ※ 三角関数・自然対数・指数関数exp・べき乗があれば、 世の中の関数はだいたい作れる
例題:急にコマンドラインで円周率が20ケタ必要になった!!!!! 11 どうする!
例題:急にコマンドラインで円周率が20ケタ必要になった!!!!! 12 1. tan(π/4) = 1 である 2. よって、tanの逆関数を4倍すれば円周率πが出てくる 45度
= π/4 tan(π/4) = b/a = 1 tan-1(1) = arctan(1) = π/4 よって、 4 * arctan(1) = π $ bc -l scale=20 4 * a(1) 3.14159265358979323844 a b