約 1,324,649 件
https://w.atwiki.jp/wiki6_777/pages/630.html
#blognavi take です。 ビール1本のアルコールを体内で処理するのに、 3時間かかる、といわれているそうです。 昨夜のこと. 【 あぁ、ボク、どうやら酔ったらしい 】 と、思う頃には、 体内のアルコールを、1日では消化できない身体になっていました。 泥酔、いや、酩酊というやつです。 体内のアセトアルデヒド君、暴走モード。 人並みを掻き分け、掻き分け、 ここはドコ ?! あ、スロ屋だ。 (途中省略) ボクはどうして、こんなレシートを持っているの ?! ありがとう店員さん! はい、このプレミア・レシートは、宝物にします。 と心に決めたのに、帰りに落としてなくしちゃったんだ orz カテゴリ [Slot] - trackback- 2006年06月14日 23 50 08 その(途中省略)の間が凄く気になる...なんで 1 枚だけなの !? -- maf (2006-06-15 13 41 12) ひゃっひゃっひゃ!さぁさぁ白状せい! -- y-ta (2006-06-16 16 22 23) 【突然の出来事にどこまで冷静に対応できるか】スロ屋の店員に求められるのはコレですよ。恒例のカニ歩き業務を終えて、店員さんと北斗話をしていたんです。突然おもむろにメダル流しにチョリン!と1枚入れてみたんですヨ、先生!したら、ニッコリ頷いてレシートにしてくれました。店員評価SA級。 -- take (2006-06-16 17 37 49) そして一枚の景品と交換したら神だと思います.あはは -- maf (2006-06-19 11 22 11) 名前 コメント #blognavi
https://w.atwiki.jp/wiki11_hibiki/pages/123.html
- 年金問題の欺瞞 この先、10人に4人は年寄りになる。算数の上では、若い人が二人分稼いで(一方で生み出すほうも二人分)、一人分を年寄りに分けてあげなきゃなんない。もう破綻だ。 な訳ゃないだろ... 戻る 年金ってもんを金科玉条にして、その財源を云々する話じゃない。本来は国民同士の相互扶助はどうあるべきかって話。そうすれば世代間扶助の問題だけをその範囲内で処理する必要なんて全然ない。結局、材やサービスがどれだけ産まれてて、誰もが納得いくように分配できるかっていう問題のほんの一部だ。年金担当の行政官が慌ててるのには同情するけどそれじゃ本末転倒だ。いいかな?今、日本の大企業は史上空前の経常利益を得てるんだぜ?何で将来の心配しなきゃなんないの?どっかに論理のすり替えが紛れ込んでる。 もし問題が生じるとすれば、材やサービスが足りない場合か、相互扶助の精神(生産して稼げる人はサボらないという意味も含めて)が失われてる場合かどちらかしかない。 コメント どこかで見かけたアイデアだが、格差が拡大しているのなら、年寄り同士の相互扶助も可能だ。 -- 筆者追記 (2007-02-06 15 43 47) そしてとうとう、普通車の登録台数が頭打ちになってしまった。買って欲しかったら相互扶助しなきゃ。 -- 筆者追記 (2007-02-06 15 45 16) 名前 コメント
https://w.atwiki.jp/cmatome/pages/14.html
ニコニコ動画 http //www.nicovideo.jp/watch/sm8399213 Visual Studioについて Visual StudioはC#を作りやすくするための開発環境です。 開発環境はほかにはEclipseなどがあるらしいですが使ったことないので知りません・・・ 開発環境とは、プログラムを作るのに便利なツール。 メモ帳だと using System; class test{ (Mainの部分) Consloe.WriteLine("あいうえお"); } これらは全部文字の色が真っ黒・・・。 Visual Studioを使うと usingやclass(予約語とか言います)が青色の文字で表示されて、見やすいです。 何か文字を間違って入力しちゃった場合(Consle.Writelineみたいに)、その部分に赤い線が引かれ「文字間違ってますよ!」って教えてくれたり ただ黒い文字しか表示されないメモ帳よりいいこといっぱいしてくれて使いやすいです。 http //www21.atwiki.jp/cmatome?cmd=upload act=open pageid=14 file=%E7%84%A1%E9%A1%8C.jpg なんか文字の色変わってたり行数が表示されてます。 でもしばらくはメモ帳でがんばろう! 変数 数値を入れる箱です。 intは-2147483648~2147483647の整数 doubleはかなり大きな数からかなり小さな小数(±1.7*10^308±5*10^-308)程度まで可能です。 科学技術でもやるんじゃなきゃこんな数値こえることはまずないので「doubleはとにかくすごい」って覚えとけばおk。 参考URL http //www.algolab.co.jp/~lum/pcnyumon/nyu032.htm http //pc.nikkeibp.co.jp/pc21/special/gosa/ http //pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml using System; class Test2{ public static void Main(){ int i=398; Console.WriteLine(i); } } 動画のほうではint iとi=398が別でしたが合体させました。 また、変数はまとめて宣言することができます。 int a,b,c,d; //aとbとcとdの4つの変数を作った int a=100,b=200,c=250,d=1000; //a、b、c、d4つつくり、それぞれ100,200,250,1000を入れた。 これ、知っておくとちょっと便利だけど動画に書いてなかったので補足。 右クリックで「編集」がないですね。プログラムから開く→ワードパットとかやってください。 拡張子をある知ってる程度ひとは、csをメモ帳に関連付けしてもおk。 if文 もし~~ならってやつ。もしxが10以上なら~とか。 ifのあとの()にはTrue/False(ホント/ウソ)が入ります。 if文でつかうときに=と==を間違えやすいです!気をつけてください using System; class Test3{ public static void Main(){ int marisa=100; if(marisa==100){ Console.WriteLine("魔理沙"); } } } 変数名は英文字じゃなくて日本語も使えます!Mainの中は int まりさ=100; if(まりさ==100) でもおk ここからちょっと応用話です、わからなかったり面倒ならswitchまで飛ばしておk ifの中にはbool型の変数も入ります。動画の2 10くらいを見てください。型にboolってあるよね。 bool型(という箱)にはTrue/False(ほんとう/うそ)が入ってます。 bool flag; flag = (1+1==3); これを実行すれば、1+1==3はウソなのでflagにはfalse(うそ)が入ります。 if(flag){//処理} これは、flagがウソなので処理されません。 flag = (1+1==2); if(flag){//処理} これは、flagがホントウなので処理されます。 else ifは特に補足ありません。 switch~case switch(変数) case 変数 で同じ変数の場所にジャンプする。 using System; class Test4{ public static void Main(){ int reimu=3535; switch(reimu){ case 398 Console.WriteLine("398じゃないよ"); break; case 3535 Console.WriteLine("霊夢"); break; default Console.WriteLine("魔理沙"); break; } } } switch~case文でできることはif文を使えば絶対に書き換えられますが if文でできることでもcase文ではできないことがあります。 なるべくif文で済ませるようにしたほうが良いです。 ここからもちょっと応用っぽいはなし~goto文 case ○○ dafault とかのコロン( )についてるやつは、ラベルといいます。 ラベルはgoto文でジャンプできます。そしてcaseの後にgoto文を使うときはbreakは要りません。 複数のcaseで同じ処理をしたいときに、いちいちコピペしなくても済みます。 使用例:xが0のときは「こんにちは」「今日もいい天気です」「魔理沙」 1のときは「今日もいい天気です」「魔理沙」 それ以外のときに「魔理沙」と表示したいときは int x=0; //なんかxをいろいろ変える処理 switch(x){ case 0 Console.WriteLine("こんにちは"); goto case 1; case 1 Console.WriteLine("今日もいい天気です"); goto default; default Console.WriteLine("魔理沙"); break; } これでOK。 ちなみにgotoはswitch~case文じゃなくても使えますが あまりあちこちとんじゃうとわかりづらいので 今はswitch~case文以外で使用しないほうが良。 Anonymous Coward追記 なので、いろんな言語は混乱しないような形でしか使えない/使いづらいように、機能を制限してきた。C言語でいうポインタ然り、goto→breakや繰り返し然り。(基本的にコードは上から下に流れるように読めるようにする。 文の流れ ラストのほうにあった話で、文は改行しないで一行に複数書くことができます。 int x,y; x=3; y=4; Console.WriteLine("ああああ");Console.WriteLine("いいいい"); できるってだけで推奨はしません。
https://w.atwiki.jp/dorenowiki/pages/348.html
カード名 ハーデス 二つ名 決戦型超々ド級プルート ログコスト 3 クラスタ 【青】 構築条件 【青黒】 BP 120 サイズ M SP B+ アビリティ1 《Fast》 冥影【黒】 コスト 手札1枚捨札 同じバトルエリアのユニットが「黒」の場合、バトルエリア1つのすべての敵軍ユニットにそれぞれ「衰弱」を1枚エンチャントする。 アビリティ2 《Trigger》 冥氷 コスト ② [「衰弱」をエンチャント中のユニットがブレイクして捨札になった時にプレイしてもよい]敵軍キャスター1体のHP1枚を別の敵軍キャスター1体のHPにする。このとき、基本HPを超えてはならない。 TYPE プルート冥神 Sub Effect - レアリティ SR 収録 Chapter3 ネザーワールド フレーバー 「冥府へようこそ。アンタら同士で足を引っ張り合ってもらうぜ」 片方のバトルエリアすべてのユニットにそれぞれ「衰弱エンチャント」を1枚づつつけ、 さらに「衰弱エンチャント」の付いたユニットがブレイクした時にコストを支払うことで敵軍キャスターのHPを移動させてしまうユニット。 敵軍キャスターのHPコントロールは初出、というよりもHPコントロールそのものが初出となる。 ドレノでは、HPが片方全損する状態よりも、1枚でもいいので両方に残っていたほうが戦いが有利になる。 「冥氷」はそんな相手の戦術を覆してしまうアビリティである。 Q A Q. HP0側のバトルエリアのユニットが最後の1枚になりました。 そのユニットには「衰弱」がついています。 アタックしてブレイク出来ました。 この時「冥氷」をプレイして、隣のキャスターからHPカードを持ってきた場合どうなりますか? A. アタックボーナスの処理より先に、「ハーデス」の「冥水」の処理が行われます。 ご質問の例ですと、次の順序で処理されます。 〔1〕左バトルエリアにいる、「衰弱」をエンチャント中の敵軍ユニットが1体がブレイクして捨札になった。 〔2〕「冥水」が誘発条件を満たす。「冥水」をプレイした場合、敵軍の右バトルエリアのHP1枚を、左バトルエリアへ移動させる。 〔3〕アタックボーナスが発生し、左バトルエリアのHPがブレイクする。 〔4〕自軍がゲームに勝利する。 公式ブログ
https://w.atwiki.jp/kittyhawktennis/pages/81.html
今日はちょっと不思議なアドバイスかもしれません。 テニスはボールを打ち合うスポーツです。 ですから、「ボールをよく見なさい」とか、 「ボールから目を離さない」とか、アドバイスをされた経験は 皆さん持っていることでしょう。 でも、その意味を本当に理解できていますか? 当たり前ですが、人間は目でものを見ます。 しかし、実際には目から入った情報が脳で処理されて 「見えた」と感じているのです。 ですから、ボールを見ながら別のこと(例えば打ち方のこと)を考えていると、 脳は、その別なことを考えるために作動をしてしまい、 目から入ってきた情報を処理できなくなってしまうことがあるのです。 つまり、目はボールを追っていたにもかかわらず、 意識の中では「ボールが消えた」ように感じてしまうことがあるということです。 もしあなたが「ボールをよく見ている」にもかかわらず、 空振りをしたり、振り遅れたりすることが多いのであれば、 ぜひ、ボールを見ながら別のことを考えてはいないかチェックしてみてください。 きっと思い当たることがあるのではないでしょうか? さてあなたは本当に「ボールを見て」プレーできていますか? ぜひもう一度考えてみてくださいね。
https://w.atwiki.jp/letsplaygame/pages/3.html
カウンター 今日 - 人 昨日 - 人 合計 - 人 現在-人が閲覧中。 更新履歴 取得中です。
https://w.atwiki.jp/mugencns/pages/83.html
戻る→ステートコントローラーの一覧 ※解説修正情報※ ●2015-05-26:absoluteの説明の間違いを修正。 ■LifeAdd【体力増減】 ▼概要 T-/Lifeの値を指定値分、増減させる。ただし0~T-/LifeMaxまで。 指定値にしたい場合はSC-/LifeSetを使用。 ▼必須記述 Value = (Int型) ;Life増減値 指定した数値がLifeに加算される。 0未満にはならず、T-/LifeMaxより大きくはならない。 0になっても自身のステート読み込み終了前に1以上に戻せば生存できる。SC-/HitDefなどのただし攻撃を受けた場合はこの限りでない。 ▼オプション kill = (bool型) ;殺害可能フラグ 省略時:1 殺害可能0に指定した場合、処理後にLifeが0だとLifeが1になり生き延びる。既にLifeが0で増減値が0の場合も1になる。 ただし通常のダメージとは別計算のため通常のダメージが重なった場合Kill=0でも死ぬ。 しかも、重なった場合は両方Kill=0でも死ぬ。詳しくはダメージのページを参照 absolute = (bool型) ;絶対量フラグ 省略時:0 キャラの防御力で減少量が変化する。1に指定した場合、指定値分増減。 攻撃力は影響しない。 Valueが正数(回復)の場合、Absolute設定は無視され絶対量で処理される。 ■Lv1-記述例・補足・注意点 記述例 [State 830, life add] Type = LifeAdd Trigger1 = Time = 30 Value = -100 体力を100減らす 補足 自爆などで体力を減らしたい場合に使用。 あるいは回復するときに使用 ステートを奪った際にも使用できる。 注意点 HitDefなど通常の攻撃によるダメージとは別計算。HitDefがKill=0にもライフ量によって死ぬケースがある。 ダメージのページを参照
https://w.atwiki.jp/earthquakematome/pages/129.html
避難所情報 救助・支援・インフラ情報 安否情報(個別要望) 安否まとめ 安否情報(未確定含) 安否確認方法 被害情報 市役所からのお知らせ ページ最終更新日時:2011/03/18 09 51 49 救助・支援・インフラ情報 【報道:NHK】3/15 12 40 ジョイス 大船渡店 釜石店 営業 【報道:IBC】3/15 9 00 陸上自衛隊の今日の人命救助活動は、陸前高田市気仙町、釜石市の白浜海岸地区、大船渡市の大船渡湾海岸線沿い、山田町川向の4ヶ所で集中的に行われています。 電気 【報道:IBC】 【停電】停電の復旧が進んでいます。 13日午後11時現在の県内の停電は17万5306戸となりました。 【報道:NHK】 岩手42万世帯 停電 3/14 10 23 【twitter:岩手県広聴広報課】 13日(日)8時現在、県内で断水件数は92,000戸ほど。停電戸数は約41万7千戸となっています。 水道 【報道:NHK】 岩手県沿岸部 被害状況把握不可 復旧の見通し立たず 3/14 10 23 電話 【twitter NHK生活情報部】 東北地方のすべての県を含む17の都道県で公衆電話を無料で利用可能。 交通 【twitter @IBCラジオ】 岩手、主要道路通行止め。 ガソリンスタンドも開いていません。沿岸地区には電話・メールは通じにくい 人工透析 人工透析が必要な皆様への窓口を設置しました。県庁健康国保課内。 電話 019-629-5468-5469 019-629-5471 FAX 019-629-5474 24時間受付 携帯・メール 【twitter:未確認情報】3/17 固定電話は未通のところが大半 auは大船渡病院付近に中継車が入っているので中継車付近なら通じる ドコモは日頃市なら通じる 交通 【報道:毎日新聞】3/17 バスの運行状況 http //w.mainichi.jp/eq/news/20110318k0000m040132000c.html いろいろ 【twitter:HandsNet】 集めたいのは「震災情報」ではなく、「生のサバイバル情報」です!どこにはまだ水が売っている、ここの体育館にはまだ避難ができるなど。県ごとに項目を分けて作りました! http //bit.ly/heR44C #jishin 【twitter:岩手県広報課】 海外から救助隊が入ります。 13日(日)~2週間程度。アメリカ隊70人×2隊。中国隊15人×1隊。トルコ隊8人×1隊。大船渡市、陸前高田市が受け入れ被災地。}
https://w.atwiki.jp/godlessthedungeon/pages/47.html
オーバーフロー クエストモードのダメージ処理やHP数値などは符号付整数型16ビットで管理されているようで、 数値が32768を越えるとオーバーフローし、マイナス領域に入ってしまう。(32767に1を足すと-32768) 例えば、レベルを上げて攻撃力を10000程度に上げ、防御力0の敵に対してジャンプ攻撃を仕掛け、 ダメージが32768を超えると本来なら死ぬはずの敵が死なない…という現象が起こる。 その敵は、あと30000程度のダメージを与えないと倒せなくなってしまう。 おそらくマイナスダメージが減算されたため(すなわちプラス処理されたので)、最大HPが増えたものと思われる。 プレイヤーキャラの最大体力も同じような理由でオーバーフローする。 守護つき武器防具を4つかませれば、素のHPが5000台でも32768まで到達可能。 そういった装備品を装備させ、最大体力を32768以上にした瞬間、画面下のHPバーがカラになってしまう。 だが、データ上では現在HPはそのまま残っているので、カラの状態で敵の攻撃を受けても死ぬことはない。 HPバーは最大体力と現在HPとの割合で長さを決めていると思われるので、 最大体力がマイナスになると割合計算の処理がおかしくなり、描画不能となるのが原因かと思われる。 いわゆる見かけ上カラになっているだけ。 しかし、最大体力オーバーフローには大きな弊害が伴う。 特に2番目はいろいろと面白いことに発展する。 1.HPバーが表示されないので、どの程度HPが残っているかの視認が出来なくなる 2.最大体力をオーバーフローさせた状態で現在HPを32768以上まで回復させるとバグる *このバグはホテル強制送還バグを参照 攻撃力上げすぎによる弊害 上記でも軽く触れたが、与えるダメージが32768を超えるとマイナスになってしまうので、敵を一撃で倒せなくなってしまう。 とくに小型敵は総じて防御力が低いので、こいつらを一撃で倒せなくなるとうっとうしくなる。 防御力が高い敵に対してはそう簡単にはオーバーしないが、ジャンプ攻撃やクリティカル倍率(×3など)などが発生すると割と容易に超えてしまうので、攻撃力の上げ過ぎはほどほどに。 また、ジャンプ攻撃するとたまにダメージが3桁程度に激減した おそらく65536で1周しているらしい 最大体力が65536を超えると0に戻る 最大体力の合計が70000超えてるはずなのに5000とかに減るバグ。 これもオーバーフローの一種。 ゼウス・バッカス・マモン(いずれも×6)だけを付けた装備品4種を揃えればそこそこ早い段階で可能。 総括すると、ステータス画面の最大体力の数値表示は符号なし整数で、内部は符号付整数型で処理されている。 経験値のオーバーフロー オートレベルアップをしていると、気がついたら総獲得経験値がオーバーフローしてマイナスになっていた。 どの数値を境にマイナスになったのかは分からなかったが、20億まではマイナスではなかったことを確認済み。 おそらく、総経験値が2147483648を超えたのでマイナスになったと思われる。 (32ビットにおける符号付整数型の最大値が2147483647。2147483647に1を足すと-2147483648になる) というわけで、経験値の数値はHPとは違い32ビットで表現されているらしい。 よって、総数が4294967296を越えたらまた0スタートになる。 そのほか、気づいた点は以下のとおり。 マイナスでもレベルアップはしていく マイナスでもレベルアップ頻度は徐々に減少 このままマイナス分を減らすと0に戻る マイナス分が2117816を超えると永久レベルアップのバグが発生する 0に戻ると、以後一切レベルアップしなくなる(永久レベルアップバグも止まる) 特に4つ目の永久レベルアップバグは、ゲーム進行に支障をきたすほどのバグ ▲永久レベルアップバグ
https://w.atwiki.jp/imops-forth/pages/38.html
小数用のワードセットは、対応する整数用ワードの名前の前にFを付けただけのものが多い。 オプションであるので、商品forthかgForthでなければ、規格に含まれた全てのワードが完備されていることは期待できない。Mopsもかなりズレがある。基本的に必要と思われるものについてのみ説明する。 なお、PowerMopsとiMopsでは、浮動小数点数は標準でダブル精度(64ビット)である。 FVARIABLE FVALUE FCONSTANT 浮動小数点数(以下、小数と略す)は、1セル幅が整数と異なる場合もある。そのために、小数用の変数を定義する方法がある。もっとも基本的なものは、FVARIABLEである。このワードと伴に変数名を宣言する。VARIABLEと基本的に同じである。 FVARIABLE ( “ spaces name” -- ) \ 小数変数を定義する 例えば、 FVARIABLE FV1 とすれば、小数変数FV1が定義される。FV1の動作は、そのデータ域のメモリーアドレスをスタックに置くのみである。この点もVARIABLEと同じである。 FV1 ( -- addr ) 実は、小数用変数といっても、実際には小数セル幅のデータ域でしかなく、整数用変数と本質的な違いはない。小数を格納し、または取り出すためのワードが違いを生みだしているのである。 FVARIABLEの小数の値を出し入れするのはF@とF!である。もちろん、F@は取り出し、F!は格納である。 F@ ( S addr -- ) ( F -- r ) F! ( S addr -- ) ( F r -- ) 小数の値は小数スタックに置かれる。値は、小数スタックと遣り取りされるのである。 小数ワードライブラリーがロードされていれば、数字は、小数点を付けるだけで小数と解釈され、小数スタックに置かれる。 0.1 FV1 F! \ FVARIABLE FV1に0.1を格納 FV1 F@ \ F -- 0.1 取り出し VALUEの小数版がFVALUEである。その名前を値と同一視でき、"TO"か"- "で値を格納する。宣言時に初期値が必要なこともVALUEと同じである。 0.1 FVALUE FVL1 \ 初期値は0.1 3.14159265 - FVL1 \ πの値を格納 FVL1 \ 値は小数スタックにコピーされる CONSTANTの小数版はFCONSTANTである。これはFVALUEと同じ構文で宣言し、ほとんど同じように利用することができるが、TOや- で値を格納することができない。 3.14159265358979 FCONSTANT PI 計算 スタック操作 四則演算は、通常の記号の前にFを付ける。 F+ ( F r1 r2 -- r1+r2 ) F- ( F r1 r2 -- r1-r2 ) F* ( F r1 r2 -- r1*r2 ) F/ ( F r1 r2 -- r1/r2 ) 特に説明は不要だろう。 小数の符号を変えるFNEGATE、絶対値を取るFABSも計算上有用だろう。 FNEGATE ( F r -- -r ) FABS ( F r -- |r| ) また、2つの小数のより小さくない方の値を取るFMAX、より大きくない方の値を取るFMINもある。 FMAX ( F r1 r2 -- r ) \ rは、r1、r2のうち、より小さくない方。 FMIN ( F r1 r2 -- r ) \ rはr1、r2のうち、より大きくない方。 スタック操作ワードはあまり多くない。実際、小数スタックは、整数スタックと比べて負担が軽いため、操作する必要性があまり生じない。これらも、通常のものの冒頭にFが付いたものになっている。 FDROP ( F r -- ) FSWAP ( F r1 r2 -- r2 r1 ) FDUP ( F r -- r r ) FOVER ( F r1 r2 -- r1 r2 r1 ) FROT ( F r1 r2 r3 -- r2 r3 r1 ) なお、forth標準にはないが、iMopsには次のワードも定義してある。 FDOWN ( F r1 r2 r3 -- r3 r1 r2 ) -FROT \ FDOWNと同義 FTUCK ( F r1 r2 -- r2 r1 r2 ) F2SWAP ( F r1 r2 r3 r4 -- r3 r4 r1 r2 ) 比較判定 値の大小比較ワードも、頭にFを付ければよい。しかし、標準規格にある小数の比較演算子は少ない。 真偽のフラグは整数スタックに積まれることの注意しなければならない。しかし、比較を連続する場合にはむしろそのせいでコードは書きやすくなる。 forth標準規格にあるのは以下のものだけである。 F ( F r1 r2 -- ) ( S -- b ) \ r1がr2より小さいときにはtrue(=-1)、そうでなければfalse(=0) F0 ( F r -- ) ( S -- b ) \ rが0より小さいときはtrue、そうでなければfalse F0= ( F r -- ) ( S -- b ) \ rが0のときはtrue、そうでなければfalse Mopsでは以下のような拡張ワードが定義されている。ただし、iMopsでは0と比較するものは、forth規格のものも含めて、定義されていない。 F ( F r1 r2 -- ) ( S -- b ) \ r1がr2より大きいときにはtrue(=-1)、そうでなければfalse(=0) F = ( F r1 r2 -- ) ( S -- b ) \ r1がr2より小さいが互いに等しいときはtrue(=-1)、そうでなければfalse(=0) F = ( F r1 r2 -- ) ( S -- b ) \ r1がr2より大きいか互いに等しいときにはtrue(=-1)、そうでなければfalse(=0) F= ( F r1 r2 -- ) ( S -- b ) \ r1とr2が互いに等しいときにはtrue(=-1)、そうでなければfalse(=0) F ( F r1 r2 -- ) ( S -- b ) \ r1とr2が異なるときにはtrue(=-1)、そうでなければfalse(=0) F0 = ( F r -- ) ( S -- b ) \ rが0より小さいときはtrue、そうでなければfalse F0 ( F r -- ) ( S -- b ) \ rが0より小さいときはtrue、そうでなければfalse F0 = ( F r -- ) ( S -- b ) \ rが0のときはtrue、そうでなければfalse F0 ( F r -- ) ( S -- b ) \ rが0のときはtrue、そうでなければfalse 整数との変換 整数を小数に、あるいは逆に、小数を整数に、変換するためのワードもある。整数は浮動小数点数としての整数に変換されるだけであるが、小数を整数に変換するときには、小数点以下は切り捨てられる。Forth標準では、整数側はダブルセル整数であることが予定されている。浮動小数点数の方が、大きな桁数を表現できるからであろう。 D F ( S d -- ) ( F -- r ) \ ダブルセル整数を浮動小数点数に変換 F D ( S -- d ) ( F r -- ) \ 小数をダブルセル整数に変換。端数は切り捨て。 ただし、iMopsではこれらは定義されていない。代わりに、forth標準ではないが、通常の、つまりセル1つ分の整数と小数の間で変換するワードが定義されている。 S F ( S n -- ) ( F -- r ) \ 整数を浮動小数点数に変換 F S ( S -- n ) ( F r -- ) \ 小数を整数に変換。端数は切り捨て。 PowerMopsではダブル・シングル両方とも定義されている。 ライブラリ関数 浮動小数点数ワードセットには、数学上の関数が含まれている。初等解析関数にあたるものである。関数名の冒頭にFを付けた名前のものが多い。 Mopsでは、これらの関数については、概ね標準Cライブラリの関数を呼び出すことで対応している。 Forth標準規格で定められているものは次の通りである。 FCOS ( F r -- r ) \ 三角関数の余弦(コサイン)cos() FSIN ( F r -- r ) \ 三角関数の正弦(サイン)sin() FTAN ( F r -- r ) \ 三角関数の正接(タンジェント)tan() FACOS ( F r -- r ) \ 逆三角関数、arccos() FASIN ( F r -- r ) \ 逆三角関数、arcsin() FATAN ( F r -- r ) \ 逆三角関数、arctan() FATAN2 ( F r1 r2 -- r ) \ rは-πからπの範囲で、そのtangentの値がr1/r2になる角 FCOSH ( F r -- r ) \ 双曲関数、cosh() FSINH ( F r -- r ) \ 双曲関数、 sinh() FTANH ( F r -- r ) \ 双曲関数、tanh() FACOSH ( F r -- r ) \ 逆双曲関数、arccosh() FASINH ( F r -- r ) \ 逆双曲関数、arcsinh() FATANH ( F r -- r ) \ 逆双曲関数、arctanh() FLOG ( F r -- r ) \ 常用対数関数(底が10):rは10のr 乗 FALOG ( F r -- r ) \ FLOGの逆関数。r は10のr乗 FLN ( F r -- r ) \ 自然対数関数 ln() FLNP1 ( F r -- r ) \ r は(r+1)の自然対数 FEXP ( F r -- r ) \ 指数関数exp() FEXPM1 ( F r -- r ) \ r はeのr乗から1を引いた値 F** ( F r1 r2 -- r ) \ rはr1のr2乗 FSQRT ( F r -- r ) \ r はrの平方根(ルート) なお、iMopsではFALOGは定義されていない。F**を用いれば定義は容易であるが。 ダブル精度、シングル精度 浮動小数点数を記述する規格には、総体を32ビットで表現するシングル精度と、総体を64ビットで表現するダブル精度がある。(この他に、X86のFPU(X87ともいう)では80ビット精度の浮動小数点数が用いられているが、これは措く。) 通常の小数は、各forthシステム毎に規格が異なる可能性はあるものの、当のシステムの標準にしたがった処理を前提としたワードで処理される。 しかし、他方で、外部ライブラリとの整合性の問題などから、シングル精度かダブル精度かを特定して小数を処理する必要が出てくることもある。そのためのワードもforth規格では規定されている。 DF! DF@ ダブル精度であることを特定して、小数をメモリーに格納、あるいはメモリーから取り出すワードが、DF!、DF@である。 DF! ( S addr -- ) ( F r -- ) \ 小数スタック上の小数をダブル精度の小数として、addrの位置に格納 DF@ ( S addr -- ) ( F -- r ) \ addrの位置に格納されたダブル精度小数を、小数スタック上に取り出し 小数スタックがダブル精度と異なる場合には、やり取りの間に規格が変更される。メモリー領域は64ビット(8バイト)なければならず、適切にアラインされていなければならない(アドレスが8の倍数ということ)。 Mopsではデフォルトでダブル精度であるから、F!, F@と同義である。これらはiMopsでは定義されていない。 SF! SF@ これらは、シングル精度であることを特定して、小数をメモリ上に格納、あるいはメモリーから取り出す。 DF! ( S addr -- ) ( F r -- ) \ 小数スタック上の小数をシングル精度の小数として、addrの位置に格納 DF@ ( S addr -- ) ( F -- r ) \ addrの位置に格納されたシングル精度小数を、小数スタック上に取り出し これらの場合も、小数スタックがシングル精度ではない場合には、やり取りの際、相互に規格変換が行われる。シングル精度小数を格納するメモリーのアラインメントは32ビット(4バイト)である。 なお、シングル精度の小数をスタック経由で外部関数に渡す必要がある可能性を考えて、iMopsではスタック上で、ダブル精度とシングル精度の間の変換を行うワード、SF F、F SFを定義している。これらは、forth標準規格にはない。 F SF ( F r -- r ) \ rはダブル精度、r はシングル精度の対応する小数。近い値に切り詰める(四捨五入)。 SF F ( F r -- r ) \ rはシングル精度、r はダブル精度の対応する小数。 小数スタック上ではダブル精度が前提とされているので、シングル精度ではスタック表示がおかしくなるので注意を要する。 F. FS. FE. 浮動小数点数をコンソールに印字するワードが三種類ある。 どれも小数スタック上の値を1つ消費して、その値を表示するが、表記方法が異なる。 F. は、小数点を用いて10進桁表示する。いわゆる普通にいう小数の表記である。1.234とか、567.89のような形式である。 FS. は、いわゆる科学記法で印字する。1.23E4とか、2.3E-6のような表記法である。 FE.は、エンジニアリング記法と呼ばれる表記法で表示する。規格には、有効数字は1.0以上1000.0未満であって、10の冪は3の倍数であるもの、とされている。正直、意味がよくわからない。多分、3.1415924なら3.142e0、746545834なら746.5e6、56708なら56.7e3、という感じだろうか? iMopsでも定義しているが、NextStepのコア関数の規格のままなので、キッチリforth規格には合っていない。例えば、F. FE.では、整数部分の桁数が多いと3桁毎にコンマを打つし、FE.の小数点以下は、小数第4位を四捨五入して第3位までに切り詰めて表示する。 一種のユーティリティーで、Mopsではプログラムに使うことはないワードである。 次 局所変数(locals)