これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド aribas です。
プログラム:
NAME
aribas - 多精度算術インタープリター
SYNOPSIS
アリバス [オプション][アリファイル> [arg1>>arg2> ...]]
元のソフトウェアにはマニュアルが含まれていなかったため、このマニュアル ページは Debian 用に書かれました。
ページで見やすくするために変数を解析したりすることができます。
DESCRIPTION
アリバス は、大きな整数の算術演算に適した対話型インタプリタです。
多精度浮動小数点演算。 Pascal や Modula-2 に似た構文を持ちます。
ただし、C、Lisp、Oberon などの他のプログラミング言語の機能も含まれています。
USAGE
使用する最も簡単な方法 アリバス (大きな整数) 算術計算機として機能します。 後
アリバス が開始されると、プロンプトが表示されます ==> 入力を受け入れる準備ができています。 単に入力するだけです
計算する式に続けてピリオドを入力し、Return キーを押します。
例
==> 123 + 456*789。
アリバス 回答
-:359907
象徴 -: 結果を紹介します。
重要。 入力の終わりをマークするには、常にピリオド「.」を入力する必要があります。 その後
戻るを押してください。
次のように、計算の結果を変数に割り当てることができます。
==> F6 := 2**64 + 1。
-: 18446_74407_37095_51617
これにより、6 番目のフェルマー数が計算されます (** は累乗を示します)、それを
変数 F6 (ご了承ください アリバス 大文字と小文字が区別されるため、これは次と同じではありません。 f6)。 後で
この変数は、たとえば次の式で使用できます。
==> 123**(F6 - 1) mod F6。
-: 688_66214_58712_63971
これは、(フェルマーの定理により) F6 が素数ではないことを示しています。
最新の XNUMX つの結果が疑似変数に保存されます。 _, __, ___。 のために
たとえば、次のコマンドで最後の結果を変数 x に保存できます。
==> x := _。
-: 688_66214_58712_63971
上記の例からわかるように、 アリバス アンダースコアを使用します _ 出力を構造化する
大きな整数 (>= 2**32)。 また、整数の入力にはアンダースコアを使用できます。
唯一の条件は、アンダースコアの直前と直後に数字があることです。
例:
==> z := 123_4567_890。
-:1234567890
ここでは、出力にはアンダースコアが含まれていません。これは、z が 2**32 未満であることを示しています。
アリバス 因数分解用の組み込み関数がいくつかあります。たとえば、 rho_factorize、その
ポラードの rho アルゴリズムを使用します。
==> rho_factorize(F6)。
働く ..
512 回の反復後に見つかった係数
-:274177
残りの補因子を見つけるには、次のコマンドを実行します。
==> x := F6 div _.
-: 6728_04213_10721
この因数が素数であるかどうかをテストするには、Rabin の確率検定を使用します。 rab_primetest することができます
適用:
==> rab_primetest(x)。
-: 真実
関数 rho_factorize 小さな因数を見つけるのに適しています (たとえば、小数点以下 10 桁まで)
数字); より複雑な因数分解タスクの場合は、次のようなより強力なアルゴリズムを使用します。
二次ふるい qs_factorize 使用すべきです
==> qs_factorize(2**128+1)。
(コンピューターの能力に応じて、数秒から数分かかります)
7 番目のフェルマー数の素因数を取得します。)
管理 構造
for ループと while ループイン アリバス Modula-2 のような構文を持ちます。 たとえば、
次のコマンド シーケンスは 100 の階乗を計算します。
==> x := 1;
for i := 2 ~ 100 を実行します
x := x*i;
終わり
x.
この例でわかるように、入力は複数行にまたがる場合があります。
上記 for ループは次と同等です while ループ
==> x := 1; i := 2;
私は100以下ですが、
x := x*i;
Inc(i);
終わり
x.
分岐構造
if ... その後 ... エルシフ ... ほかに ... end
構文も Modula-2 と同じです。
多精度 floating ポイント 算術
アリバス 内部的に表現されるさまざまなタイプの浮動小数点数をサポートします
異なるビット長の仮数を使用する場合:
single_float 32 ビット
double_float 64 ビット
long_float 128 ビット
実装依存の制限までのいくつかのより高い精度 (通常は 1024 または
5120 ビット、関数によって決定できます。 max_floatprec()。 デフォルトでは、
データ型の数値を使った計算 リアル、single_floats が使用されます。 これは、
小数点以下 9 ~ 10 桁の精度。 5120 ビットの精度は 1500 以上に相当します。
小数位。
関数を使用して精度を変更できます set_floatprec。 この関数は XNUMX つを受け取ります
整数引数。これはビット単位での必要な精度です。 自動的に四捨五入されます
次に高い利用可能な値。 たとえば、その後
==> set_floatprecとします。
-:128
浮動小数点精度は 128 ビットであり、次のように計算できます。
==> arctan(平方根(3))。
-: 1.04719_75511_96597_74615_42144_61093_16762_8
==> _/pi.
-: 0.33333_33333_33333_33333_33333_33333_33333_33
ユーザー 定義済みの 機能
ユーザーは独自の関数を定義できます。 典型的な例は次のようになります
==> 関数 fac(n: 整数): 整数;
VAR
x,i: 整数。
始まる
x := 1;
for i := 2 to n do
x := x*i;
終わり
x を返します。
終わり。
これを正しく入力していれば、 アリバス 関数名をエコーします
-: ファック
そして今からあなたは使うことができます FAC 組み込み関数と同じ方法で、例えば
==> FACとします。
-: 2_63130_83693_36935_30167_21801_21600_00000
関数定義内では、使用されるすべての変数を明示的に宣言する必要があることに注意してください。
一方、トップレベルでは アリバス インタプリタ変数は次のように簡単に作成できます。
課題。 以下に別の例を示します。これは、サポートされている他のデータ型を示しています。
アリバス:
==> 関数 sqrt_list(n: 整数): 実数の配列;
VAR
vec: 実数の配列[n]。
i: 整数;
始まる
for i := 1 to n do
vec[i-1] := sqrt(i);
終わり
vec を返します。
終わり。
この関数は、1 から n までの整数の平方根の配列を返します。
例
==> 平方リストとします。
-: (1.00000000、1.41421356、1.73205081、2.00000000、
2.23606798、2.44948974、2.64575131、2.82842712、3.00000000、
3.16227766)
複数の関数が必要な大規模なプログラミング プロジェクトでは、それらを入力しないでしょう。
直接 アリバス プロンプトを表示しますが、外部テキストを使用して関数定義を準備します
エディターを使用して、拡張子が付いているファイルに保存します。 .ari 例えば、 abcd.ari 。 このファイル
その後、次のようにロードできます アリバス コマンドを使用する
==> ロード("abcd")。
ファイルに構文エラーがある場合は、次の形式のエラー メッセージが表示されます。
ロードされたファイルの行 <= 23 でエラーが発生しました
if: 終了が予想される
これは、(この例では) にエラーがあることを示しています。 if 23行目で構築するか、
ファイルの前の方にあります。 (エラー メッセージはあまり正確ではない場合があることに注意してください。)
その後、エラーを修正してファイルを再度ロードできます。
オンラインチャット 助けます
コマンド
==> シンボル(aribas)。
すべてのキーワードと組み込み関数の名前のリストを返します。 アリバス。 このリストには、
約 200 のエントリがあり、次のように始まり、終わります。
(ARGV、_、__、__、abs、alloc、および、arccos、arcsin、arctan、arctan2、aribas、array、atof、
atoi、begin、binary、bit_and、bit_clear、bit_length、......、to lower、toupper、
トランスクリプト、true、trunc、type、user、var、version、while、write、write_block、write_byte、
書きます)
このリストのほとんどのシンボルについては、関数を使用して短いオンライン ヘルプを取得できます。
助けて()。 たとえば、コマンド
==> ヘルプ(ARGV)。
組み込み変数に関する情報を提供します ARGV、一方、
==> ヘルプ (その間)。
の構文について説明します。 while ループ。 記載されている情報以上の情報が必要な場合
オンライン ヘルプで、次のドキュメントを参照してください。 /usr/share/doc/aribas.
認定条件 〜へ 終了する
を終了するには アリバス セッション、タイプ 終了する アリバス プロンプト
==> 終了
を押してリターン(ENTER)キーを押します。
離れたくないなら アリバス、でも無限ループから抜け出したい。
計算が長すぎる場合は、CONTROL-C を入力してください (実行中の場合) アリバス 内部から
Emacs の場合は、CONTROL-C を XNUMX 回押す必要があります)。 これにより、(ほとんどの場合)電流が止まります。
計算して元に戻ります アリバス プロンプト。
Emacs インターフェースではなく、コマンドラインバージョンの Emacs を使用している場合 アリバス、あなた
場合によっては、次のような状況に陥ることがあります。前の行に入力エラーが含まれています。
ただし、その行に戻って修正することはできません。 この場合、単純に次のように入力する必要があります。
ピリオド'.' の後に RETURN が続きます。 エラーメッセージが表示されますが、安全に実行できます
無視すると、新しいプロンプトが表示されます ==> と表示され、再試行できます。
COMMAND LINE 議論
アリバス [オプション][アリファイル> [arg1>>arg2> ...]]
オプション
次のオプションを使用できます。
-q (静かモード) 画面へのすべてのメッセージ (バージョン番号、著作権表示、
など)いつ アリバス 始まる
-v (冗長モード、デフォルト) 次の場合に画面へのメッセージを抑制しません。 アリバス is
開始しました。
-c
アリバス 画面に書き込むときに独自の改行を行います。 通常、それは想定されます
画面 (またはウィンドウ) アリバス 実行) には 80 列があります。 -c を使用すると
オプションで、別の数値を設定できます。数値は 40 ~ 160 (XNUMX 進数) の範囲にする必要があります。
表現)。 たとえば、次のように実行すると、 アリバス Xterm ウィンドウで 72
列の場合は、オプション -c72 (または -c 72、-c と数字の間のスペースは
オプション)。
-m
ここは、500 ~ 32000 の数値 (XNUMX 進数表現) です。
数値は RAM のキロバイト数を示します アリバス に使用する必要があります アリバス ヒープ。
デフォルト値は、次の場合に使用されるオプションによって異なります。 アリバス がまとめられました。 通常、
UNIX または LINUX では 6 メガバイトで、-m6000 に相当します。
-h <パス of 助けます ファイル>
オンラインヘルプは、 アリバス ファイル aribas.hlp に依存します。
環境変数 PATH の範囲。 そうでない場合は、指定できます
-h オプションを使用したヘルプ ファイルの正確なパス。 たとえばファイルの場合
aribas.hlp はディレクトリ内にあります / usr / local / lib、オプション -h を使用します / usr / local / lib
(-h の後のスペースは必要ありません)。 -h オプションは、ヘルプが表示されている場合にも使用できます。
ファイルの名前が異なります。 ヘルプ ファイルの名前が help-aribas で、
ディレクトリ /home/joe/ari の場合は、-h/home/joe/ari/help-aribas を使用します。
適切にインストールされた Debian パッケージでは、 アリバス する必要はないはずです
このオプションを使用します。
-p
このオプションを使用すると、ファイルをロードするための検索パスを指定できます。 アリバス source
コード。 XNUMX つのディレクトリの (絶対) パス名、または
コロンで区切られた複数のパス名。 電話をかけたとします。 アリバス
オプション
-p/usr/local/lib/aribas:~/アリ/例
ホーム ディレクトリは /home/alice/ であることを確認します。 次に、コマンド
==> ロード(「係数」)。
最初に現在のディレクトリでファイル「factor.ari」を検索し、次に
ディレクトリ /usr/local/lib/aribas 、最後に /home/alice/ari/examples にあります。
-b ロード時のバッチモード アリバス コマンドラインからのソースコードファイル。参照
を参照してください。
引数を必要としない XNUMX 文字のオプションは、次のようにマージできます。
アリバ -q -b
に相当します
アリバ-qb
さらに command ライン 引数
オプションの後の次のコマンドライン引数は、ファイルの名前として解釈されます。
ファイル アリバス ソースコード。 ファイル名に拡張子 .ari が付いている場合、これは
拡張子は省略可能です。 ファイルはコマンドのようにロードされます。 負荷(" ")
開始後に与えられていた アリバス アリバス プロンプト。 ファイルがそうでない場合は、
現在のディレクトリで見つかった場合は、指定されたディレクトリで検索されます。
-p オプション。 オプション -b が指定された場合、ファイルはロードされて実行されます。
その後 アリバス プロンプトを表示せずに終了します。 ファイルが読み込めない場合
完全にエラーのせいで、 アリバス エラーメッセージの直後に終了します。
...
さらにコマンドライン引数が続く場合 、それらは収集されます(として
文字列) と一緒に ベクトルの中で ARGV からアクセスできます
以内 アリバス。 例:電話をかけた場合 アリバス コマンドラインで
アリバス スタートアップ 4536 アイゼンシュタイン
現在のディレクトリにファイルstartup.ariが含まれている場合、 アリバス それをロードして、
ベクトル ARGV 形をしています
==> ARGV。
-: ("スタートアップ"、"4536"、"アイゼンシュタイン")
引数を文字列ではなく数値として必要な場合は、次のように変換できます。
あとい (または アトフ); 私たちの例では
==> x := atoi(ARGV[1])。
-:4536
やります。 ベクトルの長さ ARGV によって決定できます 長さ(ARGV).
ランニング アリバス 以内に EMACS
あなたは走れる アリバス Emacs 内からコマンドを入力して (Emacs のミニバッファ内で)
Mx ランアリバス
(META キーがない場合は、Mx の代わりに ESC x を使用してください) アリバス にロードされます
*aribas* という名前の Emacs ウィンドウで、入力を編集できます。 アリバス いつもと
Emacsコマンド。
入力がピリオド「.」で終わっている場合Enter キーを押すと、次のアドレスに送信されます。 アリバス。 場合
ただし、完全な入力はピリオドで終わりません (たとえば、
読む)、入力はに送信されます アリバス Cj (Control-j) または Cc RETURN で。
前の入力を繰り返したい場合は、Mp (または ESC p) を使用して入力を逆方向に循環させます。
履歴、および Mn (または ESC n) が順方向にサイクルします。
Control-C が送信されます アリバス Cc Cc で (Cc を XNUMX 回押します)。
始めることも可能です アリバス コマンドライン引数を使用した Emacs から。 このために
コマンドの目的
Cu Mx ランアリバス
与えなければなりません。 その後、プロンプトが表示されます
実行アリバス: アリバス
Emacs のミニバッファに表示され、次のようにコマンドラインを完成させることができます。
run-aribas: aribas スタートアップ 4536 eisenstein
(上記を参照)。
CONFIGURATION FILE
実行時のオプション アリバス という名前の設定ファイルを使用して指定することもできます
.arirc. アリバス 次の順序で構成ファイルを検索します。
1) 現在のディレクトリ
2) ユーザーのホームディレクトリ
XNUMX 番目の可能性があります。環境変数を定義できます。 ARRC 含みます
構成ファイルの名前 (.arirc とは異なる場合があります) (完全な名前を含む)
パス。
構成ファイルでは、上記で説明したすべてのコマンド ライン オプションを指定できます。
- 記号で始まりますが、オプションごとに別の行を使用する必要があります。 ライン
文字 # で始まる場合、または空行は無視されます。 オプションに加えて
上で説明したように、構成ファイルには以下が含まれる場合があります アリバス ソースコード。 この目的のために
行の読み取りが必要です
-初期化
次に、この行以降のすべてが次のように扱われます アリバス ソースコードと実行時期 アリバス
が開始されます。
の設定ファイルの存在 アリバス 与える可能性を排除するものではない
コマンドライン引数。 両方のオプション (-m オプションなど) が指定されている場合、
設定ファイルとコマンドラインの値が異なる場合、仕様
コマンドラインでの指定は有効です。 同様に、コマンドラインの -v オプションは -q をオーバーライドします。
設定ファイルのオプション。 構成ファイルに -init コードがあり、
コマンドラインで引数を指定すると、最初に -init コードが実行され、
その後がロードされ、そのコードが実行されます。
onworks.net サービスを使用してオンラインで Aribas を使用する