Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コマンドライン電卓bcコマンド
Search
Osumi, Yusuke
July 19, 2020
Technology
0
600
コマンドライン電卓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
320
gitサービス3兄弟
ozuma
0
330
簡体字は楽
ozuma
0
390
ソフトウェアは固定資産
ozuma
0
350
ASCIIコードの小話
ozuma
0
360
今いるディレクトリを消すとどうなる
ozuma
1
280
名前付きパイプ FIFO
ozuma
0
410
文章、作文技法 リモートワーク
ozuma
1
780
CentOSの今後のリリース(簡易説明)
ozuma
0
330
Other Decks in Technology
See All in Technology
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
4
560
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
180
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
350
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
190
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
17
4.7k
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
110
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
190
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
5分でわかるDuckDB
chanyou0311
10
3.2k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
65
11k
Producing Creativity
orderedlist
PRO
341
39k
The Cost Of JavaScript in 2023
addyosmani
45
7k
GitHub's CSS Performance
jonrohan
1030
460k
Being A Developer After 40
akosma
87
590k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
The Invisible Side of Design
smashingmag
298
50k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Code Reviewing Like a Champion
maltzj
520
39k
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