[ 前へ | 目次 | 次へ ]

変数や関数を定義する

ここでは、独自の変数や定数を定義し、数式中で使用する方法について解説します。


「 LIBRARY 」エリア

リニアンプロセッサーでは、独自の変数や関数を、いくつでも自由に定義し、数式中で使用する事ができます。それらは「 LIBRARY 」エリアに定義します。

LIBRARYエリアには、INPUTエリアの上にある「 LIBRARY 」と書かれたタブをクリックすると書き込めます。

「 import Math ; 」 は消してはいけない

LIBRARYエリアの先頭には、すでに以下の一行が記述されているはずです。

- LIBRARY -
import Math ;

この行は、sinやcosなど、リニアンプロセッサーで最初から使える関数を読み込むためのものです。従って、この行を消してはいけません。消してしまうとsinやcosが使えなくなります。

変数を定義する

それでは、変数を定義してみましょう。変数の定義は、以下のような1行を書き加えて行います。

- 変数定義の形式 -
float 変数名 = 値 ; 

最初の「 float 」というのは、ここではまだ詳しく扱いません。とりあえず、今は変数を定義するための用語だと思ってください。 また、行末の「 ; 」記号はついつい忘れがちなので、注意が必要です。

実際に、xという名前で、1.0の値を持つ変数を定義してみましょう。LIBRARYエリアに一行だけ追記し、以下のようにします。

- LIBRARY -
import Math ;

float x = 1.0 ; // xという名前で、1.0という値の変数を定義

追記された最終行の、 // ( ダブルスラッシュ )以降はコメントであり、無視されます。これで、xという名前で、1.0の値を持つ変数が定義できました。

定義した変数xを使って、実際に計算を行ってみましょう。「 INPUT 」タブをクリックしてINPUTエリアに戻り、以下の数式を計算してみてください。

- INPUT -

1 + x

この計算の結果は以下の通りです。

- OUTPUT -

2.000000000

このように、正しい値が得られました。

関数を定義する

続いて、関数を定義してみましょう。関数は、以下のような形で定義します。

- 関数定義の形式 -
float 関数名( float 引数名 ) {
    return 計算内容 ;
}

ここでも「 float 」というキーワードが登場していますが、とりあえず今は気にしないでください。「 引数(ひきすう) 」という耳慣れない言葉も登場していますが、これは関数を使う際、 ( ) の中に記述した値が格納される、特別な変数です。

それでは例として、「 half 」という名前で、受け取った値を2で割って返す関数を定義してみましょう。ライブラリに内容を追記し、以下のようにします。

- LIBRARY -
import Math ;

// 値を2で割って返す関数
float half( float a ) {
  return a / 2.0 ;
}

ここで、a/2ではなく、a/2.0としている事に注意が必要です。ここではとりあえず、「 LIBRARYエリアでは、数値には必ず小数点を付けておく 」と覚えておいてください。詳しい説明は割愛しますが、小数点のない値同士で割り算を行った場合、余りが切り捨てられます。

これは不具合ではなく、様々な事情により、そういうルールになっているのです。そして、余りが切り捨てられるのを防ぐために、数値には必ず小数点を付けるクセを付けておきましょう。

それでは、実際にhalf関数を使用してみましょう。

- INPUT -

half( 1 )

この計算の結果は以下の通りです。

- OUTPUT -

0.500000000

このように正しい値が得られました。

引数が複数ある関数

関数では、引数を複数使用する事もできます。それには、引数をカンマ記号で区切って定義します。例として、2つの値の積を返す関数 mul を定義してみましょう。LIBRARYエリアに以下のように記述します。

- LIBRARY -
import Math ;

// 2つの値の積を返す関数
float mul( float a, float b ) {
  return a * b ;
}

それではINPUTエリアに戻り、以下の数式を計算してみましょう。

- INPUT -

mul( 2, 8 )

この計算の結果は以下の通りです。

- OUTPUT -

16.00000000

このように正しい値が得られました。

VFモードON時に使用する変数と関数

ここまでで扱ってきた変数と関数の定義は、原則として、VFモードOFF時にしか使用できません。もしも無理に使用すると、その部分だけVFモードOFF、つまり16桁程度で処理されるため、全体で望んだ精度が出なくなってしまいます。それでは、VFモードON時に使用する変数と関数の定義は、どうすればよいのでしょうか。

それにはまず、これまで何度も登場した「 float 」というキーワードの代わりに、「 varfloat 」というキーワードを使用する必要があります( ※ 実はVFモードの「 VF 」は、「 VarFloat 」の略です )。そして、1.0や2.0などの数字の末尾に、vfの2文字を付けるようにします。

実際に、上で定義した変数 x と half 関数を、VFモードON時に使用するために書き直してみましょう。内容は以下のようになります。

- LIBRARY -
import Math ;

varfloat x = 1.0vf ; // 値が1.0の変数 x を定義(VFモードON用)

// 値を2で割って返す関数(VFモードON用)
varfloat half( varfloat a ) {
  return a / 2.0vf ;
}

これらの変数と関数は、VFモードON時に、正確な精度で使用できます。



スポンサーリンク



この階層の目次
新しいお知らせ

Exevalator 2.2 をリリース、TypeScript 対応によりWebブラウザ上で動作可能に
2024-10-22 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。新たに TypeScript に対応し、Webブラウザ上での式計算にも使えるようになりました。詳細を解説します。

アシスタントAI作成の舞台裏(その2、作成編)
2024-10-12 - アシスタントAIの作成方法解説の後編です。実際にChatGPTの「GPTs」機能を用いて、アシスタントAIを作成する手順や、独自の知識をもたせたり、精度を出すためのノウハウなどを解説しています。

アシスタントAI作成の舞台裏(その1、基礎知識編)
2024-10-07 - アシスタントAI作成方法解説の前編です。今回はまず、アシスタントAIを作る前に抑えておきたい、基礎知識を延々と解説しています。そもそもLLM型AIとはどんな存在か? RAGとは何か? 等々です。

ソフトの利用をサポートしてくれるアシスタントAIを提供開始!
2024-09-20 - RINEARN製ソフトの使い方の質問応答や、一部作業のお手伝いをしてくれる、アシスタントAIを提供開始しました。ChatGPTアカウントさえあれば、誰でも無料で使用できます。使い方を解説します。

Exevalator 2.1 をリリース、新たに Visual Basic に対応
2024-07-28 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。今回から、新たに Visual Basic(VB.NET)でも使用できるようになりました。詳細を解説します。

関数電卓 RINPn(りんぷん)、Esc キーで計算式の一発クリアが可能に
2024-07-20 - 関数電 RINPn の Ver.1.0.2 をリリースしました。今回から、キーボードの「 Esc 」キーを押すと、入力中の計算式を一発でクリアできるようになりました。詳細を解説します。

Exevalator 2.0 をリリース、互換性に注意が必要なバグ修正が 1 件
2024-07-14 - オープンソースの式計算ライブラリ「Exevalator (エグゼバレータ)」の2.0をリリースしました。今回の更新では、互換性に注意を要する 1 件のバグ修正があります。詳細を解説します。

各ソフトウェアをアップデート、リニアングラフのコマンド拡張やVCSSLの英語対応など
2024-02-05 - 各ソフトの一斉アップデートの内容をお知らせします。今回は、リニアングラフのコマンド機能を大幅拡張したのがメインです。また、VCSSLのメッセージ類の英語対応も行いました。

Vnano の Ver.1.1 で実装した反復計算高速化の内側
2024-01-17 - 前回のお知らせ記事の続編です。スクリプトエンジン Vnano の Ver.1.1 において実施した高速化を、エンジン内部の実装面から掘り下げて解説します。

スクリプトエンジン Vnano の Ver.1.1 を公開、同じ内容の反復実行が劇的に高速化
2023-12-22 - スクリプトエンジン Vnano の最新版を公開しました。同じ計算式やスクリプトを反復実行する速さが、大幅に向上しました。次期版リニアングラフ3D内での活用例を交えつつ、詳しく解説します。