サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
www.takeoka.org/~take
x86における 浮動小数点演算の精度の制御と、 80bit 浮動小数点演算問題 たけおか update: 2023/NOV/02 初出: 2010/NOV/20 0.はじめのはじめに みんな大好き Intel x86, AMD 64の浮動小数点演算のアーキテクチャは、 8087時代からの80bit演算に起因し、IEEE 754から逸脱するという欠点があった。 だが、今では、 gcc は、暗黙のうちに、SIMD(SSE,AVXなど)演算器を使用するコードを 生成するようになり、 SIMDユニットにて浮動小数点演算することで、 80bit演算由来の問題が、解消されるようになっている。 ではあるものの、この文書は、延々と80bit起因の問題について述べている。 現在も、8087由来の、x86伝統の内部80bit演算はCPU内には健在である。 80bit演算の害を体験したい場合は、 gccのオプシ
MITのLispマシン CADR MIT AI Lab. は、Lispを高速に実行する、Lisp専用CPUを開発し、それを使用し た「Lispマシン」を開発していました。 Lispマシンとして、CONSや、CADRが有名です。(英語版Wikipedia) 詳しくは、私の別なページ「CADRについて.MITのLisp マシン」 MIT Lispマシンの商品版の Symblics 3600シリーズは、1000万円ぐらいしました。 私は、廃棄になる Symbolics の最後期型を貰って、所有しています。 しかし、その実機は、コンデンサが劣化して、電源を入れることが躊躇される状態です。 お手軽にLispマシンを体験するには、シミュレータがいいでしょう。 Lispマシン CADRのシミュレータ usim MIT CADRのシミュレータ "usim" というものがあります。 Brad Parker氏
SAN値 Prolog (ver.2)マニュアル last update: 2012/APR/24 初出: 2012/APR/23 たけおか (竹岡尚三) 0. SAN値 Prolog について SAN値 Prologは、たけおかが考案した、SAN値論理に基づく論理型言語である。 a) SAN値論理とは SAN値とは「頭の正気度」を表す数値である。 SAN値が0だと、完全に気が狂っている。 述語論理に「SAN値」というものを導入する。 SAN値論理では、評価時の「頭のおかしさ具合」を「SAN値」と呼ぶ。 各事実(節)ごとに、「SAN度」を設定できる。 評価時にその時点のSAN値に、もっとも近いSAN度を持つ節が選ばれる。 SAN度を持つ述語の節は評価された後、その結果が真であったら、他の節とSAN度が比較される。 よって、SAN度を持つ述語の節はすべて評価される。 評価は、純粋な一階述語論
未来永劫r が成り立つ 2. Temporal Prologの性質 桜川氏の論文では、時制に関するすべての様相は、「一つ前の過去(●で表す)」 に変換できる。 Temporal Prologの処理系は、実行前に、時間に関するすべての様相を、 「一つ前(●)」に変換する。 したがって、実行系は「一つ前」に関する論理だけを扱えれば十分である。 一般的に信じられている、時相論理言語の処理系についての、否定的な話は、 時相論理言語は、過去を参照するために、過去に成立した事実をすべて記憶する よって、実行を続けると、過去の記憶が爆発する。よって、実用言語としては、成立できない というものである。 しかし、Temporal Prologにおいては、そういうことは起きない。 時相論理言語の全般については言及しかねるが、 桜川の Temporal Prologに関しては、 前述のとおり、すべての様相が、一
Lispマシン CADR ドキュメント和訳とか 2011/FEB/20 2010/MAR/20 たけおか@AXE twitter: takeoka たけおかのプロフィール 1980年代: UNIXの仮名漢字変換システムWnnや Temporal Prolog(時 相論理Prolog)を京大数解研の地下辺りで作ったり。渋谷や神保町 辺りで国産X Window端末などの設計開発に携わる。TCP/IPスタッ クを自分で書く 1990年代初頭:豊橋技科大 湯淺研にて、1024PE規模の超並列計算機 “SM-1”のLSIハードウェア、基本ソフトウェアの設計開発に携わる。 現在: 実時間OSを作らせたり、 Linux, BSDのコアな移植をさせている 湯淺研 SM-1 フロントエンドはSparc 開発環境はCommon LispとC 萩谷さんに貰った (サインはしてくれない) ザウルス SH-3版 (
UNIX系OSでの、 浮動小数点演算の丸めについて たけおか 初出: 2010/NOV/20 update: 2010/NOV/23 FreeBSD6に関してと、おまけを追記 0.はじめに 浮動小数点演算を行うにあたって、ユーザ(プログラマ)は、精度を管理しなければならない。 丸めは重要な要素である。 浮動小数点演算を行うごとに、その結果を丸める。 IEEE 754(通称 IEEE Float)は、丸めの方法を制御可能としている。 また、言語処理系 C99では、丸めの指定方法を規定している。 ただし、ハードウェアの制約などで指定や変更が、不可能な場合もある。 ここでは、MacOSX(PPC), x86のFreeBSD, NetBSD, Linuxや C99(ISO C言語規格)の 丸め指定方法について記述している また、末尾におまけとして、ソフトウェアによる四捨五入の方法を記述している。
0.はじめに 浮動小数点演算では、演算の順序が重要である。という、よく知られている話を、 一応、書いておく。 特に、変わったことは述べていない。 このページは、x86 80bit演算問題の補足のために存在するだけである。 1. まだ、はじめに 一般人は、数値の計算は子供の頃からやっていて、 「コンピュータは、数値計算なんかできて当たり前だ」と思っている。 しかし、計算機は、有限の精度で演算や記憶を行っているため、 数値計算はそれほど簡単ではない。 例えば、ある数 a に、bを乗じて、その後 c で除するとき、 C言語で、 x= a*b/c; と書きそうになる。 しかし、C言語でそれは大丈夫だろうか? 実は大丈夫ではない。 軟弱 Cプログラマには、この文書を最後まで読むことをおすすめする。 2. 評価順序 Lispであろうが、Fortranであろうが、C言語であろうが、 評価の順序は重要であ
0. はじめに エンディアンというのは、ワード(語)のばあいは、メモリ上で、ワードを構成 する各バイトが配置される順序、すなわちバイト・オーダ(バイト並び、 バイト順、byte order)についての呼び名である。 また、 bitの場合は、基本語の中のビットの番号が、 MSBか、LSBのどちらから ついているか、を示す呼び名である。 1. ワードのエンディアン ワードのエンディアンとは、 リトル・エンディアン(little endian)が、80x86, VAX 並び ビッグ・エンディアン(big endian)が、680x0, PowePC, SPARC, SH4系 並び である。 エンディアンを変更可能な機械は、バイ・エンディアン(Bi-Endian)という。 リトル・エンディアン x86, VAX, 組込みARM, 組込みMips ビッグ・エンディアン 680x0, Sparc, P
エンディアンについて (ビット編) たけおか 初出: 2010/NOV/01 Update:2010/NOV/03 エンディアンとしての呼び方を削除 Update:2010/NOV/06 TI9900追加 Update:2022/NOV/03 Adaに関する情報を更新 0. はじめに エンディアンというのは、ワード(語)や、ビットの並び方の呼び名である。 ビットの場合、ビット・ナンバリング(ビットの番号づけ)ともいう。 1. ビットのエンディアン ビットのエンディアン、ビット・ナンバリング(ビットの番号づけ)ともいう ものの話をしよう。 80x86 は、ビットの名前が最下位ビットからついている。 つまり、最右ビット(最下位ビット(LSB)) が、bit 0 だ。 古いMacオタクの大好きな PowerPC は、ビットの名前が最上位(最左(MSB))から ついている。最上位ビットが bit
CADRについて MITのLisp マシン たけおか @ AXE 初出: 2010/MAR/20 last update: 2011/SEP/04 MIT AI Lab. とXerox PARCでは、いわゆるAI(人工知能)マシンや、ワークステー ションを開発していました。 MIT AI Lab. は、Lispを高速に実行する、Lisp専用CPUを開発し、それを使用し た「Lispマシン」を開発していました。 CONSや、CADRが有名です。 Xerox PARCは、Inter LispやSmalltalkやMESA(のコンパイルド・コード)を実 行するための、ワークステーションを開発していました。 Alto、 Dolphin, Dorada, Dandelion, Dragon などが有名です。 特に、Dragonは、Snoop Cache、今でいう、コヒーレント・キャッシュを搭載したS
AN ABSTRACT PROLOG INSTRUCTION SET (D.Warrenの抽象Prolog命令セット, WAM) Technical Note 309 Oct 1983 By: David H.D.Warren, Computer Scientist Artificial lntelligence Center Computer Science and Technology Division SRI Project 4776 Client: Digital Equipment Corporation Open Publication. Release of lnformation. 日本語訳: JAN/07/2010 last update: OCT/21/2010 竹岡尚三、安達彰典、林奉行、湯浅信吾、小宮山敦史、森下耕平 和訳について この文書は、Prologコンパイラ
CP/M80のシミュレータは数多くあるようです。また、MSXのシミュレータもよい 物があるようですが、筆者は一つも見ていません。 筆者も大昔に8080のシミュレータを書いたのですが、それにCP/M80の シミュレーションを加えたのがこのCP/Mシミュレータです。 このCP/MシミュレータのCP/MとのコンパチビリティーはMSX-DOS並です。 このシミュレータでは、CP/M のファイル操作をUNIXファイル操作に変換してい ます。 CP/Mの古いプログラムは、ディスクI/Oを直接に色々といじる可能性があ るのですが、MSX-DOS程度にはコンパチビリティーを確保しています。 「Z80に対応しないのか?」という疑問に対しては、「Z80の命令をつけると、 8080の美しさが失われるので、Z80にはしない」のです。 このCP/M80シミュレータを ftp://www.takeoka.org/pu
Erlangの 並列計算の入り口 2007/OCT/23 2010/FEB/16 たけおか Erlanはコミッティド・チョイス言語だ 2010/FEB/16追記 • コミッティド・チョイス言語 – 節の頭にガードがある – ガードを超えた節だけが、選ばれて走行する – Erlanでは、ガード部分が、パターン・マッチングになっている • 多くのプロセスが、チャンネル通信する – ErlangはOccam言語とそっくり – 詳しくは、中身を読もう RPC • RPC: Remote Procedure Call 遠隔手続き呼び出し – 遠隔にある手続きを、同期的に呼び出す(最近は非同期的な RPCもある) – 遠隔の手続きは、仕事が終わると返り値をもどす • 同期的 – 呼ばれた側の仕事が終わるまで、呼び出し側は止まる – バグが出にくい – 素朴な実装の場合、呼ばれる側の関数は、同時に複数
GnuEmacsでPrologを使う prolog.elが新しいもの用ページ(ver. 1.19以降) たけおか@AXE (ex.山本ナヲミ) %% これは、筆者が 技術評論社 刊 ソフトウェアデザイン誌 「つこてなんぼのFreeBSD」 1998年11月 に掲載した原稿をもとにしたものです %% 2022/FEB/226更新 2009/FEB/22更新 2007/FEB/12更新 Prolog処理系を動かして、右も左もわからない時は、 「 Prologを使う(動作確認 程度のProlog入門)」 を見てください。 Gnu EmacsとPrologを一緒に使う Prologは、対話的に使用しますが、そのトップレベルは一般的に貧弱です。 対話的に使用する言語は、Gnu Emacsから使うのが常道です。 Prologもemacs(mule)から起動すると非常に便利です。 0)prolog.el
CRAYのアセンブリ言語(CAL)について CRAYのアセンブリ言語(CAL)は基本的に、 左に操作(演算)結果が入る先を記述する。 一般のマイクロ・プロセッサのアセンブリ言語では、左に命令(オペレーション)を 記述するので、違和感があるだろう。 結果格納先には、レジスタだけではなく、,A0,1 のように、 メモリへのストアも、記述される。 演算(オペレーション)は、右の2つのオペランドの間に、 + (加算) - (加算) > (シフト) などを記述する。 また、第2オペランドの頭に、「f」を付加して、浮動小数点演算を示す。 例えば、 「 v3 v1+fv2 」 は、v1とv2を浮動小数点ベクトル加算して、 結果をv3に格納するこ とを示す。 なお、ジャンプ命令や、特殊な制御命令は、操作(オペレーション)などが 左に書かれる。 Cray X-MP/24の素晴らしい参考書 The Cray
たけおかの Lisp ページ 目次 emacs Common Lispキーバインド GNU Common Lispを使う。Windows版 (GnuEmacsと、Gnu Common Lispを一緒に使うと便利!) GNU Common Lispを使う。UNIX,FreeBSD,Linux版 (GnuEmacsと、Gnu Common Lispを一緒に使うと便利!) Gnu Common Lisp(GCL)/Kyoto Common Lisp(KCL)の最適化について CommonLispで記述した、StarTrek(1976年頃流行した古いゲーム) Scheme版 Star Trek イスカンダルのトーフ屋ゲーム(1978年に発表された、古いゲーム)をCommonLispで記述した CADR(MITのLispマシン)について Lispマシン, CADRドキュメント和訳とか (PDF) C
Lisp, Prolog, Fortranの歌 日本でポピュラーなプログラミング言語の歌とか外国の歌とか Lisp的 不要な情報とか… Lispの歌: Lispの歌 「静かな湖畔」の最後部 かっこ〜かっこ〜かっこ、かっこ、かっこ〜♪ ロックンロール・ウィドウ 山口百恵のヒット曲 かっこ、かっこ、かっこ、かっこ、かっこ、かっこ、 かっこ ばかり、先走りぃ〜♪ ロックンロール・ウィドウの歌詞 YouTubeでロックンロール・ウィドウを見る(音が出ます) (僕は、百恵ちゃんは、割と好きです(なにそれ)) Prologの歌: 「めだかの学校」 めーだーかの学校は川の中〜♪ p(X) :- q(X). の「:-」は、口語で「メダカ」と言われるから。 FORTRANの歌: (「おおブレネリ」とかいう歌?) やっほ〜 ふぉーとらんらんらん♪ やっほ ふぉーとらんらんらん♪… (詳しくは↓とか) http
たけおかの Prologページ 目次 Prologを使ってみる (動作確認 程度のProlog入門) Prologの入門文書に飽きた人に WAM; Warrenの抽象マシンの論文の和訳 GnuEmacsと、Prologを一緒に使うと便利! (新しい prolog.el用) GnuEmacsと、Prologを一緒に使うと便利! (古い prolog.el用) 実際にProlog処理系を使ったときの、あれこれ Prologで記述した、StarTrek(1976年頃流行した古いゲーム) イスカンダルのトーフ屋ゲーム(1978年に発表された、古いゲーム)をPrologで記述した SB-Prologを使う 時相論理言語 Temporal Prolog の一実現について Temporal Prolog(たけおか版)マニュアル Temporal Prolog ソース Temporal Prolog サン
(社)組込みシステム技術協会 (JASA)の 理事/技術本部本部長/OSS活用WG リーダを勤めています OSSコンソーシアムの 副会長と理事を勤めています。 ( Linuxコンソーシアムは、解散し、改めて、OSSコンソーシアムとして発足しました。) PCクラスタ コンソーシアムの 理事を勤めています DEOS協会の 理事/事務局長を勤めています BSD Researchの 理事を勤めています ( NPO法人 日本エンベデッド・リナックス・コンソーシアム (Emblix)の 理事と事務局長を勤めていましたが、解散。資産は、JASA OSS活用委員会で生かしています。) 表紙モデルもやった ・ facebook: takeoka ・ twitter ID: @takeoka ・ メモを記したBlog(アメブロ) ・ 公開ブックマーク(hatena) www.たけおか.jpがあるんです。 ta
Prologの入門文書に飽きた人に たけおか@AXE (竹岡尚三) Update: 2007/DEC/08 Update: 2007/AUG/18 初出: 2007/MAR/10 なんだか、Webの世界には、日本語では、純粋な論理型言語としてのProlog入門の 文書しかなく。 Prologは、実用言語(を目指しているはず)なので、ピュアな論理の話だけでは、 いけないと、思い… で、こういう雑文にて、恥をさらす。 1. 高階による後悔 実用プログラムが、あんまりに高階手続きを使っていると、それはそれで、困り そうなものなのだが… でも、やはり、高階な呼び出しは、必要だ。 aho(X,Z) :- A =.. [plus,1,X,Z], call(A),print(Z). という述語を定義し、 実行とその結果は次のとおり。 ?- aho(4,Z). 5 Z = 5 「call/1」 は、 引数
Prologを使ってみる (動作確認 程度のProlog入門) たけおか@AXE (ex.山本ナヲミ) %% これは、筆者が 技術評論社 刊 ソフトウェアデザイン誌 「つこてなんぼのFreeBSD」 1998年11月 SB-Prologを使う に掲載した原稿をもとにしたものです %% 0. はじめに この文書は、SWI Prolog, GNU Prolog, SB-Prologなどに適用できます。 Gnu Prolog: http://www.gprolog.org/ SWI Prolog: http://www.swi-prolog.org/ GnuProlog, SWI-PrologはISO規格準拠のPrologです。 SB-Prologは、DEC10 Prolog準拠です。 1. Prologとは Lispと同じくPorlogも人工知能用の言語として、1980年代には大いに利用さ れ
English Star Trekゲーム (Scheme版) 昔懐かしい StarTrekゲームを Scheme で書き直しました。 StarTrekゲームの詳しくは Pete Turnbull さんの WebPage を見てください。 最新版(Ver. 1.2.4; 2007/FEB/24) 色々、バグなどを直しました。(Ver. 1.2.3; 2007/FEB/16) Phaser関係を修正しました(Ver. 1.2.1; 2007/JAN/30) 表示(分数が出力される)があまりに酷かったのを修正しました(Ver. 1.1; 2007/JAN/03) 最初のリリース(Ver. 1.0; 2007/JAN/01) 現在は MIT/GNU Scheme でしかテストしていません。 Windows, MacOSX, BSD, Linuxなどに MIT/GNU Scheme をインストールし
GNU Common Lispを使う たけおか@AXE (ex.山本ナヲミ)(竹岡尚三) last update 2018/SEP/10 #| これは、筆者が 技術評論社 刊 ソフトウェアデザイン誌 「つこてなんぼのFreeBSD」 1998年9月 に掲載した原稿をもとにしたものです |# 0. はじめに 筆者がSun3(CPU=68020)のSunOS下で、CommonLispを初めて触った時、あまりに 快適なので驚きました。 当時、ワークステーションと呼ばれる機械の性能が急激に上がり始めた頃です。 CommonLispの様に規模の大きな言語は仮想記憶がなければまともに動かすこと はできません。当然、それまでは、かなり大きなスーパーミニコン(VAX-11や MV-2000などという機械)以上の計算機でしか動作しませんでした。 当時もDOS用に、GoldenCommonLispなどいくつか
このページを最初にブックマークしてみませんか?
『www.takeoka.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く