Chromebook flip C100PAでArch Linux ARM (mainline kernel編)

目的

 約300ドル+税+送料で買える1 kgを切ったラップトップASUS Chromebook flip C100PAは、プレインストールされたChrome OSに加えcroutonArch Linux ARMによってLinux環境を利用することができる。

 中でもArch Linux ARMは、Chrome OS上からchrootを用いるcroutonとは異なり、Chrome OSから完全に独立したLinux環境を構築できる利点を有している。しかしながら、かつてはメインラインカーネルにおけるハードウェアのサポートが不足しており、結局はChrome OSにて用いられているカーネルを利用する必要があった。

 そして現在、無数のコントリビューターの貢献によってメインラインカーネルでのサポートは充実したものとなり、Chrome OSカーネルを使わずとも実用的になってきたと思われる。以上の経緯から、パワーアップしたCPUやUSB-C給電などを特徴とするASUS Chromebook flip C101がComputexにて展示された今、あえて一年前の記事をアップデートするものである。

f:id:squeuei:20170609160819p:plain

インストー

 相変わらず親切な公式ガイドの通りにインストールすれば特に詰まるところはない。

 ちなみに、Wi-Fiにさえ接続してしまえば、Googleアカウントを用意せずとも、Ctrl-Alt-F1で入れるコンソールからrootユーザでセットアップできる。

初期設定

 インストール後、新しいユーザを作る前に、rootでいる間にやったこと。

locale

vi /etc/locale.gen
# Uncomment:
# en_US.UTF-8
# ja_JP.UTF-8
# 
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8

hostname

vim /etc/hostname

時刻

timedatectl set-timezone Asia/Tokyo

ユーザ設定

passwd
pacman -S sudo
useradd -m -g wheel username
passwd username
visudo
# Uncomment:
# Defaults env_keep += "HOME"
# %wheel ALL=(ALL) ALL
#

 一般ユーザalarmは好みで消してよさそう。

userdel alarm

デスクトップ環境

xorg

sudo pacman -S xorg-server xorg-apps xterm xorg-xclock xorg-twm xorg-xinit
sudo cp /etc/X11/xinit/xinitrc ~/.xinitrc

xfce4 / lightdm環境の構築

 GNOMEは一度試してみて重かったのでXfceに変更。

sudo pacman -S xfce4 xfce4-goodies
sudo pacman -S lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm
sudo pacman -S xarchiver zip unzip p7zip cpio unrar

xfce4のパネルをデフォルト設定に戻したいとき

xfce4-panel --quit
pkill xfconfd
rm -rf ~/.config/xfce4/panel
rm -rf ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
xfce4-panel

mw.hatenablog.jp

日本語関連

 fcitx-mozcはあるけどmozcがないので使えない。

sudo pacman -S fcitx-anthy fcitx-im fcitx-configtool
sudo pacman -S otf-ipafont adobe-source-han-sans-jp-font adobe-source-han-serif-jp-font
vim ~/.xprofile
# add:
# export GTK_IM_MODULE=fcitx
# export QT_IM_MODULE=fcitx
# export XMODIFIERS=@im=fcitx
#

 日本語が入力できずに困ったときは診断ツールを使うと原因がわかりやすい。だいたいはIM MODULEの設定。

fcitx-diagnose

ハードウェア関連

サウンド

 スピーカのミュートを解除すると音が出る。

sudo pacman -S alsa-utils
amixer -c 0 sset "Right Speaker Mixer Right DAC" unmute
amixer -c 0 sset "Left Speaker Mixer Left DAC" unmute
sudo alsactl store
sudo gpasswd -a username audio
speaker-test -c 2

 下手にalsamixerをいじるとスピーカーを破損する恐れがあるので注意、とのこと。

pulseaudio

 Xfceのためにpulseaudioを入れる。

sudo pacman -S pulseaudio pavucontrol pulseaudio-alsa
sudo vi /etc/pulse/default.pa
# add:
# load-module module-alsa-sink device=sysdefault
# 

キーボード

 Chromebook用のキーマップが用意されているので切り替える。

 FnキーやCaps Lockを使うときは右altキーと同時押しする。

localectl set-x11-keymap us chromebook

WiFi

 btsdioブラックリストすることでサスペンド復帰後にWi-Fiが使えなくなることを回避できる、らしい。

sudo vim /etc/modprobe.d/blacklist-btsdio.conf
# add:
# blacklist btsdio
#

Wi-Fiの自動接続

sudo wifi-menu -o
sudo pacman -S wpa_actiond
systemctl enable netctl-auto@wlan0.service

yaourt環境の構築

sudo pacman base-devel make git

git clone http://aur.archlinux.org/package-query
cd package-query
makepkg -s
sudo pacman -U package-query-x-y-armv7h.pkg.tar.xz

git clone http://aur.archlinux.org/yaourt
cd yaourt
makepkg -s
sudo pacman -U yaourt-x-y-any.pkg.tar.xz

 mozcやvscodeのビルドを試したかったけど/tmpが足りなくて失敗。tmpfsを使わないようにしてからビルドすればいける?

 adobe flash playerのpepper pluginもすぐにインストールする方法は見つからない。

余談

  • USBメモリへインストールするとちょっと遅いかも?
  • InstallingDebianOnのAsus C201の項目を試してもうまくいかないのはなんで。

参考文献

欧文フォントインパーフェクトコレクション

はじめに

 あればあったで嬉しいけれど、しかしプロでもない身分で、業務に使うわけでもない、1ファミリー揃えれば計算機が買えてしまうような値段の製品を購入する、その支出を正当化できるほどの用途があるわけでもない。

 それがフォントですね。

 本稿は、欧文フォントに関し、合法的、かつフリーまたは格安で入手する方法について述べるものです。必ずしもメトリック互換ではない旨ご了承ください。

調査対象

PostScript

 PostScriptにはコアフォントが定義されており、PostScript Level 2では35フォント、PostScript 3では136フォントが挙げられています。

PostScript fonts - Wikipedia

『少女と活字 プラチナ・コレクション』

 私がフォントに興味を持つきっかけになった素敵な同人誌です。

16の有名な欧文書体たちを、女の子のイメージに投影しつつ解説した本。

heikinritsu.com

www.youtube.com

入手元

 元ネタはこれです。

Metric-compatible fonts - ArchWiki

TrueTypeフォントパーフェクトコレクション

改訂6版 TrueTypeフォントパーフェクトコレクション (デジタルBOOK)

改訂6版 TrueTypeフォントパーフェクトコレクション (デジタルBOOK)

 買いましょう。わずか3000円強で問題の大部分は解決する……と思っていたら!!

 ウワーッ!

 マジでか……超ショックだ……。

 既に丸善ジュンク堂では店頭在庫もないので、見つけたら極力確保しましょう。

TeX Gyre

TeX Gyre フォントは,Times や Helvetica などの Adobe 基本 35 書体に対応する,高品質でオープンなフォントです.PostScript Type 1 形式と OpenType 形式で配布されています.

TeX Gyre - TeX Wiki

The TeX Gyre (TG) Collection of Fonts — GUST Web Presence

URW++ Fonts

ghostscript - Revision 12425: /trunk/ghostpdl/urwfonts

 GhostScriptに入っているURW++のフォントが使える、らしい。

Ghostscript - Wikipedia

 ただGhostScriptから抜き出して単体で使えるのかはよくわからない……。

 基本35フォントはGPL。Classico、GaramondなどはNon-Commercial用途では使用可能。

 フォントが埋め込まれたPDFの販売はどうなんだろう……。

CTAN: /tex-archive/fonts/urw

MgOpen Fonts

Debian -- wheezy の fonts-mgopen パッケージに関する詳細

 Magenta Inc.のフォント、らしい。debianだからライセンス的には大丈夫でしょう。

 一応ライセンス全文へのリンク。

Licensing:Fonts/MgOpen - FedoraProject

Fira Sans

 FF Metaのデザイナーが作ったMozillaのフォント。

 完全に同一ではないけれど、雰囲気は似ているということで。

github.com

Core fonts for the Web

https://webhttp://mozilla.github.io/Fira/.archive.org/web/20020124085641/http://www.microsoft.com/typography/fontpack/default.htm

 かつてMSが配布していたインターネット用のコアフォント。

 公式サイトでの配布は終了しているのでInternet Archiveから。

 これは果たしてセーフなのか? Wikipediaが言うにはEULA的に改変なし再配布はセーフらしいけど……。

Core fonts for the Web - Wikipedia

調査結果

 サイトからリストをコピペしてむりやりCSVの体裁にして、Excelのフィルター機能とVSCode正規表現置換でgfm tableの形に仕立て上げたのがこちらです。

 ありがとうMicrosoft

PS2 PS3 T&Ds フォント名 Bitstream TeX Gyre URW++ その他 結果
Albertus A028
Antique Olive Antique Olive
Apple Chancery ×
Arial A030 MS Arial
Bodoni Bodoni
Carta ×
Caslon Caslon Old Face
Chicago ×
Clarendon Clarendon Clarendon URW Bold Condensed
Cooper Black Cooper Cooper Black Italic
Copperplate Gothic Copperplate Gothic
Coronet Ribbon 131 Coronet
Courier Cursor Nimbus Mono
Eurostile Square 721
Frutiger Humanist 777 Bitstream Vera Sans, DejaVu Sans
Futura Futura
Garamond Garamond Garamond No.8
Geneva ×
Gill Sans Humanist 521
Goudy ×
Helvetica Swiss 721 Heros Nimbus Sans L
Hoefler Text Hoefler Ornaments
ITC Avant Garde Gothic Adventor URW Gothic
ITC Bookman Bonum Bookman URW
ITC Lubalin Graph ×
ITC Mona Lisa Recut ×
ITC Zapf Chancery Chorus Chancery URW, Z003
ITC Zapf Dingbats ×
Joanna ×
Letter Gothic Letter Gothic 12 Letter Gothic
Marigold Mauritus
Meta Fira Sans
Monaco ×
New Century Schoolbook Schola Century SchoolBook URW, C059
New York ×
OCR-B OCR-B OCR-B
Optima URW Classico MgOpen Cosmetica, Epigrafica
Oxford ×
Palatino Pagella Palladio URW, P052
Rotis ×
Shelley ×
Symbol ×
Tekton ×
Template Gothic ×
Times Dutch 801 Termes
Times New Roman Nimbus Roman No9 L MS Times New Roman
Trajan ×
Univers Zurich U001
Wingdings MS Wingdings

 とまあ、結構な数のフォントが揃えられることがわかった。『TrueTypeフォントパーフェクトコレクション』さえ入手できれば……。

 BodoniHelvetica、Universはどうにかできるだろうけど、Frutiger、Futura、Gill Sansが手に入らなくなるのはあまりにも痛い。特にFrutigerはMacを買っても手に入らないので。いちおうBitstream Vera SansDejaVu Sansが雰囲気は似てるけど。

 ちなみにリストに入っていないフォントでもBaskerville、Franklin GothicはBitstream版があり、BemboはCardo / ET Book、DidotはGFS Didot、InterstateはOverpassという名前で入手できるみたいだ。

 さすがにAkzidenz-GothicとかAvenirとかGothamとかRockwellとかは無理だけど、AvenirとRockwellMacを買えばついてくるし……。

 Optimaに関してはURW Classicoの方がMgOpen Cosmeticaよりオリジナルに近い。特にOとか。ただそれでも完全に同一というわけではなくて、たとえばaとかが違う。ただしURW Classicoはたとえばフォントを埋め込んだPDFを有償配布する際にライセンス違反とならないだろうか。わからない……われわれは法律家ではないので……。

 EpigraficaGPLかつOptimaにより近くていいのかもしれない。

結び

 『TrueTypeフォントパーフェクトコレクション』が絶版になったショックで動けない。もうおしまいだ。冬の時代の到来……。

TeX Live 2016とLuaTeX-jaに関する備忘録

 久しぶりにTeXの環境構築を行ったのでそのメモ。

W32TeXからTex Live 2016への移行

 前回はTeXインストーラ3で環境構築を行ったが、今回はTeX Live 2016を用いることにする。

 なお、Tex Live 2017が2017-05-01にリリース予定であり、そちらではLuaTeXが1.0になるようなので、急ぎでないならそちらを待ってからインストールするのがいいかもしれない。

 Installing TeX Live over the Internet - TeX Users Groupからinstall-tl-windows.exeをダウンロードしてインストール。時間はかかるけど詰まるところはない。

LuaTeXでの日本語環境

 pTeXと同等(互換ではない)の環境を目指して、LuaTeX-ja環境が整備されつつある。

\usepackage{luatexja}

ja.osdn.net

 LuaTeXではjsclasses文書クラスは利用できないので、代替としてltjsclassesが利用できる。

 また、確認していないがBXjsclsBXjscls - TeX Wiki)も利用できるようだ。

 フォントについてはluatexja-fontspecを利用して、英文、和文のそれぞれについて指定できる。

\usepackage{luatexja-fontspec}

\setmainfont[Ligatures=TeX]{TeXGyreTermes}
\setsansfont[Ligatures=TeX]{TeXGyreHeros}

\setmainjfont[BoldFont=IPAexGothic]{IPAexMincho}
\setsansjfont{IPAexGothic}

 プリセットも用意されていて、latexja-presetから利用できる。

\usepackage[ipa]{luatexja-preset}

 ルビ、傍点はluatexja-rubyパッケージ。

\usepackage{luatexja-ruby}

LuaTeX-ja環境での縦書き

 縦書きの文書クラスとして、ltjtarticle.clsltjtreport.clsltjtbook.clsが利用できる。

fugenji.org

 ところでluatexja-presetexpertオプションを設定してもダブルクオーテーションはダブルミニュートにならないのだけど、これはどうすればいいのだろうか。

PDF出力時の見開き方向

 Acrobat Readerで見開き表示をするときの綴じ方向を指定するためにはhyperrefパッケージを使う。

\usepackage[pdfdirection=R2L]{hyperref}

個人的な規約

 バックノウハウ感しかない。

------ %ダーシ
\vspace{1em} %空行

% 上下余白調整
\usepackage[top=20truemm,bottom=10truemm]{geometry}

% openright時用の綴じ側余白調整
\setlength{\oddsidemargin}{-1in} %  set real left margin 0pt
\setlength{\evensidemargin}{-1in} % do
\addtolength{\oddsidemargin}{15mm} % odd page 25mm left margin   
\addtolength{\evensidemargin}{25mm}% even page 15mm left margin

\noindent「行頭の括弧はnoindentで対処する」

TrueTypeフォントパーフェクトコレクション』

改訂6版 TrueTypeフォントパーフェクトコレクション (デジタルBOOK)

改訂6版 TrueTypeフォントパーフェクトコレクション (デジタルBOOK)

 有名どころのフォントが破格値で手に入るすぐれものです。詳しくはリンク参照のこと。

 ちなみに好きな字体はFrutiger、Avenir、Optima、Palatino、Gothamあたりです。Macintoshがほしい。

blog.bi3.jp

 このフォントをTeXで使うにはTrueType Fonts Perfect Collectionの指示に従えばいい、はずなのだけれど、前の環境でうまくいったこれが今回の環境だとうまくいかない。

 サンプルファイルをplatexにかけてdviファイルを作った後、dvipdfmx -f bitstream.map filenameすればpdfはできるのだけれど、何が悪いのだろうか。

カシオ MQ-24-1E

 一時期、BRAUNの腕時計が欲しかった。

 BRAUNというのはあの髭剃りや電動歯ブラシで有名なドイツの家電メーカーのBRAUNで、かつては目覚まし時計や腕時計を作っていた。目覚まし時計ではAB1、腕時計ではAW10(初代MR2ではない)が最も知られているだろうか。

 正確に言えば、今もBRAUNブランドの時計は売られている。でもこれはライセンスを受けた別の企業が作っているものだ。

BRAUN(ブラウン)公式サイト|腕時計・クロック

 オリジナルを買い逃した私は、数年越しのBRAUNブランド復活に大いに喜んだ。でも、アキヨドのショーケースを何度も眺めたにも関わらず、私がそれらを買い求めることはなかった。

 現代風にアレンジされたコレクションは全体的に大きくなっていた。デザインに関しても、どこか好みから外れてしまったという思いが拭えなかったのだ。


 話は変わって。最近、腕時計を買った。

 買ったのはカシオのMQ-24-1E。好みを優先して国内モデルにない色を選んだけど、それでもAmazon.co.jpから簡単に入手できる。

 そうして思ってしまったのだ。腕時計、これでいいのでは?

 確かにこの時計には高級感のかけらもない。

 ケースもバンドもただの樹脂だ。タイマーも時報もストップウォッチもカレンダーさえついてない。ただの3針時計。精度に関しても、セイコーシチズンが誇る年差クォーツのようにはいかないだろう(ところでこの時計はシチズン系列であるミヨタのムーブメントを使っているらしい。サプライチェーンは複雑怪奇なり)。

 でもそれは当たり前だ。なにせ2000円でお釣りがくる値段しかついていないのだから。

 私は腕が細い。腕周りで言うとおそらく15 cm程度しかない。一般的な38 mmの腕時計でさえ大きすぎる。近年の主流である40 mm以上なんてもってのほか。そのような人間にとって、直径33 mmに過ぎないケースは小さすぎる、という批判はまったく当てはまらない。

 小さい、薄い、軽い。一応防水していて、なにより壊しても惜しくない、使い捨ててしまってもいいんじゃないかと思えるくらいの気楽さ。

 そして、何よりこれ以上切り捨てることも難しいほどにシンプルなミニマルデザイン。この時計を眺めていると、BRAUNの時計でなくても、これでいいんじゃないかって思ってしまう。そんなデザイン音痴なことを言ってるとDietrich LubsやDieter Ramsに殴られるのでは?

 そういうわけで私は最低クラスの価格帯で売られているこの時計を結構気に入ってしまったのだ。

 使い捨てだなんてとんでもない、壊れるまでは付き合ってみたいと、今のところは思っている。

 でもまあ、5万円以上する腕時計なんて持ったことがないし、持ったら持ったで、またその時にこの気持ちはいとも簡単に変わってしまうのだろう。

広告を非表示にする

CUDAスタート以前いろいろ

つまらないことしか書いてないです。

Windows PC編

CUDA SamplesをビルドするためにVisualStudioをインストールするとき

 調子こいてVS2017をインストールしてはならない。現時点ではVS2015までがサポート対象。

Installation Guide Windows :: CUDA Toolkit Documentation

VisualStudioでCUDA Samplesをビルドするとき

 プロジェクトのプロパティからターゲットをReleaseにすることを(必要であれば)忘れないようにする。

Jetson編

JetPack 3.0でflash-OSができないとき

 調子こいてホストにUbuntu 16.04 LTSなどをインストールしてはならない。現状14.04 LTSだけがサポート対象。

NVIDIA JetPack Documentation - JetPack L4T

 ただし、OSのflashをしなければ、ホストが16.04 LTSであっても、CUDAなどの転送は可能。

JetPack 3.0でCUDA Samplesがmakeできないとき

 現時点ではcommon/inc/helper_gl.hを下記のように変更する。

- #if !defined(GLX_EXTENSION_NAME) || defined(__arm__) || defined(__aarch64__)
+ #if !defined(GLX_EXTENSION_NAME) || !defined(GL_VERSION_1_3)

JetPack - Compiling oceanFFT on TX2 - NVIDIA Developer Forums

EliteBookとUbuntu 16.04 LTS

HP EliteBook 820 G1にUbuntu 16.04 LTSをインストールした。

precondition

EliteBook 820 G1 F9D92PP#ABJ

 めちゃくちゃ安いときに買ったのでメモリ増設費用込でも10万円は超えてない。

  • Core i5-4300U
  • 4 GB SO-DIMM DDR3L-1600 -> 8 GB x 2 SO-DIMM DDR3L-1600
  • 256 GB SSD
  • 12.5 inch LCD, 1366×768

pre-install

 Ubuntu Desktop 日本語 Remixのisoをダウンロードし、rufusUSBメモリに書き込み。

 UEFI(w/o Legacy)/Secure Boot環境のまま、デフォルト設定でインストール。

post-install

 することがない。Wi-Fiもホットキーの類もほとんどデフォルトで動作する。

 apt installで好きなアプリをインストールしていけば良い。

# homeフォルダ内のフォルダ名を英語に変更する
LANG=C xdg-user-dirs-gtk-update
# 電源管理 
sudo apt install tlp-rdw
# gitとJDKは入ってなかったようなので入れた
sudo apt install git default-jdk
# Noto Sans CJKを入れた
sudo apt install fonts-noto-cjk
# アプリケーションのメニューを常時表示するように設定した 
gsettings set com.canonical.Unity always-show-menus true

 Chromebookを使ったことがあればわかるように、消費することしか能のないインターネッターにとって、モダンなウェブブラウザーさえあれば他に必要なものはほとんどない。故に、FirefoxGoogle Chromeがあれば日常生活で不便することはそうない。

 足が短い、液晶の質が低いなどの欠点はあるが、これはWindowsの時と変わりない。

 あまりにスムーズに進みすぎて書くことがない記事になってしまった。

reference

Make: AVR Programming pt.04

squeuei.hatenablog.com

Chapter 10

タイマを使うときのチェックリスト

  1. どのタイマを使うか決める。8bitでよければTimer 0か2、16bitが必要ならTimer 1。
  2. どのモードが必要なのかを決める。TCCRnAのWGMn0とWGMn1、TCCRnBのWGMn2をセットする。
    1. 数えたかったりタイミングを作りたいのならNormalモード(設定の必要なし)
    2. 時間の基準や周波数を作りたいのならCTCモードを使う。WGMn1をセットする。
    3. PWMを使いたいならfast PWMモード。WGMn0とWGMn1をセットする。PWM周波数を変えなくてもいいならWGMn2もセットする。
  3. 直接出力するならTCCRnAのCOMxAとCOMxBをセットする。
  4. 分周を決めたらTCCRnBのCSnxビットをセットする。
  5. 比較する数値を使うならOCRnAやOCRnBにデフォルトの値を設定する。PWMを使うならDDRの出力設定も忘れないこと。
  6. タイマで割り込みを使う?
    1. Normalモードならカウンタオーバフロー割り込みを有効にするため、TIMSKnのTOIEnをセットする。
    2. PWMやCTCモードなら比較での割り込みを有効にするため、TIMSKnのOCIEnAとOCIEnBをセットする。
    3. sei()するのを忘れないように。

Chapter 11

 サーボのようなデバイスとAVRの電源はなるべく分けた方がいい。AVRの動作が不安定になる恐れがあるから。

Chapter 12

 高い電圧を高分解能で取得したいときは、分圧とオーバーサンプリングを使う。 また、AVRの場合はADC以外のクロックを停止することでノイズを低減するADCノイズリダクションスリープモードがあるので、活用すると良い。

オーバーサンプリング

 オーバーサンプリングは中心極限定理に基づいていて、たとえば10ビットADCで16個のサンプルを取得した後、4で割る(=2ビットシフトする)ことで12ビットの結果が得られる。 nビット余計に欲しいときは、{2^{2^n}}回のサンプリングと{2^n}回の割り算(=n回のビットシフト)が必要。

 オーバーサンプリングは、サンプリング周波数よりもゆっくり変化する信号に対して適用する。 速度、精度、コストはトリレンマだ。 16回のオーバーサンプリングは16倍遅くなるけど2ビット分の精度をただで手に入れられる。 高速で正確なADCが欲しいなら良いADCを買えばいいけど、それにはお金がかかるのだ。

0~5V以外の信号を計りたいときは

  • 1V以下のものを計りたいときはAREFを内蔵の1.1Vリファレンス電源にすればよい。
  • 1V~5Vのものを計りたいときはAREFを内蔵の1.1Vリファレンス電源にして、その上で信号を分圧すればよい。
  • 5V以上のものを計りたいときは信号を分圧すればよい。

スリープ

 avr/sleep.hをインクルードして、set_sleep_mode(SLEED_MODE_ADC);(実はSMCR |= (1 << SM0);するのと同じ)と、ADCSRA |= (1 << ADIE);(ADC割り込み有効化)、sei()をすればよい。ただし、sleepが終わるときにISRが呼ばれるので、EMPTY_INTERRUPT(ADC_vect);なりしておく必要がある。

EWMA(Exponentially Weighted Moving Averages)

 ふつうの移動平均では移動平均する数だけメモリを消費する。 また、C言語の除算では切り捨ての問題があるから、なるべく除算の階数を減らしたい。 EWMAなら2つの変数、現在の値{x_t}と過去の平均値{y_{t-1}}だけでいい。

{\displaystyle y_t=\frac{1}{16}x_t+\frac{15}{16}y_{t-1}}

 また、EWMAは最後に一回だけ除算をすればいいので、除算の問題が少ない。 除算するときの一つのテクニックは、割る数の半分を事前に足してから除算を行うこと。

(16+4)/8 = 2
(20+4)/8 = 3

 これらを考慮したときのEWMAの式は下記の通り。

{\displaystyle 16y_t=x_t+16y_{t-1} -\frac{(16y_{t-1}-\frac{16}{2})}{16}}