分析Quiverカード式の構文

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

式の構文

Quiver では、式を使用してカスタムの数学表現をプロットしたり、フィルター条件を指定したりすることができます。以下の構成要素が式でサポートされています:

  • 数字: 63.14159-128などの標準的な数値に加えて、Quiver は科学的表記もサポートしています:1.602e-19
  • プロット参照: 作成時に各プロットにパラメーター名が割り当てられ、$記号を使用してプロットを参照できます:$Aはパラメーター名Aのプロットを参照し、$A + $Bは二つのプロットの合計を計算します。
  • ブール値: 論理演算子を使用するときは、ブール値truefalseを使用します。
  • 時間参照: 式で時間を参照するには、関数secondsSince("time")millisecondsSince("time")を使用します。時間項はISO-8601 形式でなければなりません。例えば、secondsSince("1970-01-01T00:00:00+00:00")は、1970年1月1日からの秒数を UTC で評価します。
  • NaN: 定義されていない値や表現できない値、nullなどを表現します。

演算子

  • 数値演算子: Quiver は+-*/、そして余りの演算子%をサポートしています:10 % 73を評価します。また、括弧()を使用して優先順位を強制することもできます。これらの演算子は結果として倍精度数を生成します。
    • ^を使用してべき乗を行うことはできません。べき乗を行うためには、下記の 組み込み関数pow関数を参照してください。
  • 比較演算子: Quiver は等価性のために==、不等性のために!=、そして比較のために>, <, >=, <=をサポートしています。これらの演算子は結果としてブール値を生成します。
  • 論理演算子: ブール値を論理 AND(&&)や論理 OR(||)演算子で組み合わせることができます。Quiver はまた、ブール値を反転させる論理 NOT 演算子(!)もサポートしています。
  • ビット演算子: 数値上でビット AND(&)、ビット OR(|)、ビット XOR(^)、ビット NOT(~)を実行することができます。また、ビットシフトも行うことができます:<<は左シフト、>>は符号を保持した算術右シフト、>>>は0パディングの論理右シフトを行います。

組み込み関数

Quiver は以下の組み込み数学関数をサポートしています:

関数名説明
abs(a)絶対値
acos(a)逆余弦
acosh(a)逆双曲余弦
asin(a)逆正弦
asinh(a)逆双曲正弦
atan(a)逆正接
atanh(a)逆双曲正接
atan2(a, b)二つの数値の逆正接(四象限の逆正接);ay 座標、bx 座標です。
cbrt(a)立方根
ceil(a)天井関数
cos(a)余弦
cosh(a)双曲余弦
exp(a)自然指数
floor(a)床関数
isfinite(a)引数が無限でなく NaN でない場合は true
isnan(a)引数が NaN の場合は true
ln(a)自然対数
max(a, b, ...)与えられたすべての入力の最大値
min(a, b, ...)与えられたすべての入力の最小値
pow(a, b)ab
round(a)最も近い整数に丸める
signum(a)符号関数
sin(a)正弦
sinh(a)双曲正弦
sqrt(a)平方根
tan(a)正接
tanh(a)双曲正接

制御フロー

Quiver は三項演算子 a ? b : c をサポートしており、これは “if a then b else c” を表現します。例えば、各時間点で、$A > 0 ? $B * 10 : $C * 10 は、その時間に $A の値が 0 より大きい場合は $B * 10 の値を取り、そうでない場合は $C * 10 の値を取ります。

また、入力系列で値が欠けている場所で代替値を返すために NaN 値を使用することもできます。例えば、各時間点で、@M != NaN ? @M : @K は、@M が数値を持つ場合は @M の値を取り、そうでない場合は @K の値を取ります。

“早期”に停止するために、returnskip のステートメントを使用し、値を返すか、値を返さないことを示すことができます(例えば、ポイントをフィルター処理するため)。

言語リファレンス

基本型と代入

変数は var キーワードで宣言されます。= 記号は変数に値を代入するために使用されます。変数は数値(倍精度)、ブール値、または文字列です。

var a = 6;
var b = 3.14159;
var c = 1.602e-19; // 指数表記がサポートされています
var d = 1.602E-19; // 指数は大文字と小文字を区別しません

var boolean_example = true;
var boolean_example = false; // falseに再代入

var string_example = "high";

数値

リテラルと変数を組み合わせて、より複雑な式を作ることができます。

基本的な数学的演算子は +-*/ です。余りを計算するには % を使用します。

var a = 2 + 2; // aは値4を持っています
a = 3 * 7; // aは値21を持っています
a = 3.5 / 7; // aは値0.5を持っています
a = 10 % 7; // aは値3を持っています

演算子の優先順位は予想通りです。括弧 ( ) を使用して、式をまとめることができます。

var a = 5 + 3 * 2; // aの値は11です
var b = (5 + 3) * 2; // bの値は16です

上記の5つの演算子の代入バージョンも使用できます。

var a = 10;
a *= 2; // aの値は現在20です
a += 3; // aの値は現在23です
a -= 5; // aの値は現在18です
a /= 3; // aの値は現在6です
a %= 5; // aの値は現在1です

ブール

比較演算子 <<=>>= を使用して数値を比較することができます。これらの演算子はブール(true または false)結果を生成します。

等価性は == で確認でき、不等式は != で確認できます。

これらの式は、論理演算子 &&|| で組み合わせることができます。

! 演算子を使用してブール結果を反転させることができます(truefalse になり、falsetrue になります)。

文字列

等価性は == で確認でき、不等式は != で確認できます。

var a = "high";
var b = "low";

// 値を比較する
var c = a == a; // true(真)
var d = a != b; // true(真)