.. embSubr 組み込み関数の一覧 ================== 組み込み関数は、コンパイラが内蔵している関数のうち、式の右辺や関数の引数の中で呼び出して値を返せる関数です。 式の左辺においたり、単独の文としては実行することはできません。 組み込み関数は、ユーザ関数と同様に通常のサブルーチンコールとしてコードジェネレーションされます。 なお、組み込み関数は、通常のユーザ定義関数同様に引数に式を取ることが可能ですが、 byValue 渡しの引数でなければなりません。 整数型関数 ---------- **iabs(byValue x)** 引数に与えられた値を符号付きの32ビット整数とみなして、その絶対値を返します。 固定小数点型関数 ---------------- **fpExp(byValue x)** 引数に与えられた値をF16Q12形式の固定小数点数とみなして、近似指数関数(自然対数の底 e のべき乗)を求めます。 結果はF32Q16形式の固定小数点数で返されます。F16Q12形式の表現できる全範囲で答えを求めることができますが、 引数によっては大きな誤差を含む値が返されることがあります。あくまで近似値としてご使用ください。 .. code-block:: none 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をチェックするとブロックされますが、本関数によりノンブロックでステータスチェックが可能です。