組み込み関数の一覧

組み込み関数は、コンパイラが内蔵している関数のうち、式の右辺や関数の引数の中で呼び出して値を返せる関数です。 式の左辺においたり、単独の文としては実行することはできません。 組み込み関数は、ユーザ関数同様にサブルーチンコールとしてコードジェネレーションされます。 なお、組み込み関数は、通常のユーザ定義関数同様に引数に式を取ることが可能ですが、 byValue 渡しの引数でなければなりません。

整数型関数

iabs(byValue x)

引数に与えられた値を符号付きの32ビット整数とみなして、その絶対値を返します。

固定小数点型関数

fpExp(byValue x)

引数に与えられた値をF16Q12形式の固定小数点数とみなして、近似指数関数(自然対数の底 e のべき乗)を求めます。 結果はF32Q16形式の固定小数点数で返されます。F16Q12形式の表現できる全範囲で答えを求めることができますが、 引数によっては大きな誤差を含む値が返されることがあります。あくまで近似値としてご使用ください。

y = fpExp(byValue convF16Q12("1.5"));

fpLog(byValue x)

引数に与えられた値をF16Q12形式の固定小数点数とみなして、近似対数関数(自然対数の底 e )を求めます。 結果はF32Q16形式の固定小数点数で返されます。 F16Q12形式で表現できる正の数の範囲で答えを求めることができます。 0以下の引数を与えるとF32Q16の最大の負の数が返ります。 引数によっては大きな誤差を含む値が返されることがあります。あくまで近似値としてご使用ください。

fpSqrt(byValue x)

引数に与えられた値をF16Q12形式の固定小数点数とみなして、近似平方根を求めます。 結果はF32Q16形式の固定小数点数で返されます。F16Q12形式の表現できる全範囲で答えを求めることができますが、 引数によっては大きな誤差を含む値が返されることがあります。あくまで近似値としてご使用ください。

fpAtan(byValue x)

引数に与えられた値をF16Q12形式の固定小数点数とみなして、近似アークタンジェント関数を計算します。 結果はF32Q16形式の固定小数点数で返されます。F16Q12形式の表現できる全範囲で答えを求めることができますが、 引数によっては大きな誤差を含む値が返されることがあります。あくまで近似値としてご使用ください。

fpSin(byValue x)

引数に与えられた値をF16Q12形式の固定小数点数とみなして、近似SIN関数を計算します。 定義域は-PI/2よりPI2の範囲で、それを外れた場合には予期しない値が返ることがあります。 結果はF32Q16形式の固定小数点数で返されます。 引数によっては大きな誤差を含む値が返されることがあります。あくまで近似値としてご使用ください。

fpCos(byValue x)

引数に与えられた値をF16Q12形式の固定小数点数とみなして、近似COS関数を計算します。 定義域は0からPIの範囲で、それを外れた場合には予期しない値が返ることがあります。 結果はF32Q16形式の固定小数点数で返されます。 引数によっては大きな誤差を含む値が返されることがあります。あくまで近似値としてご使用ください。

fpPi()

引数をとらず、F32Q16形式で表現した定数、円周率を返します。

fpE()

引数をとらず、F32Q16形式で表現した定数、自然対数の底を返します。

mulQ(byValue a, byValue b, byValue aQ, byValue bQ)

32ビットの符号付き整数もしくは固定小数点数a, bを乗じた結果を返します。 aQ, bQに0を与えると、単純な符号付き整数乗算となります。 aQ, bQにシフト量を与えると、乗算前に指定量を右シフトしてから乗算するようになります。 F32Q16型のa, bを乗じてF32Q16型の結果を得る場合、例えばaQに8, bQに8を与えます。 Q値についてはチェックしないので、プログラマが管理する必要があります。

devQ(byValue a, byValue b, byValue aQ, byValue bQ)

32ビットの符号付き整数aもしくは固定小数点数aを32ビットの符号付き整数bもしくは固定小数点数bで割った結果を返します。 aQ, bQに0を与えると、単純な符号付き整数割り算となります。 aQ, bQにシフト量を与えると、除算前に指定量をaについては左シフト、bについては右シフトしてから除算するようになります。 F32Q16型のaを同じ型のbで割ってF32Q16型の結果を得る場合、例えばaQに8, bQに8を与えます。 整数型を整数型で割ってF32Q16型の結果を得る場合、例えばaQに16, bQに0を与えます。 Q値についてはチェックしないので、プログラマが管理する必要があります。

TODO

追加予定の固定小数点数関数。

  • gauss ガウス関数

FIFOステータス関数

isFifoEmpty(byValue f)

引数に与えられた値をFIFO番号とみなして、該当のFIFOが空の場合に1を、そうでない場合に0を返します。 with文でFIFOをチェックするとブロックされますが、本関数によりノンブロックでステータスチェックが可能です。

isFifoFull(byValue f)

引数に与えられた値をFIFO番号とみなして、該当のFIFOが満杯の場合に1を、そうでない場合に0を返します。 with文でFIFOをチェックするとブロックされますが、本関数によりノンブロックでステータスチェックが可能です。

getFifoCount(byValue f)

引数に与えられた値をFIFO番号とみなして、該当のFIFOカウンタの値を返します。 with文でFIFOをチェックするとブロックされますが、本関数によりノンブロックでステータスチェックが可能です。