LibraryLink`
LibraryLink`

MNumericArray_convertType (C 関数)

errcode_t MNumericArray_convertType(MNumericArray* out, const MNumericArray na,const numericarray_data_t type, const numericarray_convert_method_t method, const mreal tol)

MNumericArrayのデータ型を変換するライブラリコールバック関数.

詳細

  • Wolfram言語から呼び出されたライブラリ関数のC/C++のコードで使われる.
  • MNumericArrayオブジェクトのデータ型を変換する.
  • typemethod,または tol の引数が正しくない,あるいはメモリが十分でない場合,非零のエラーコード値が返される.
  • 出力先 はヌル(0)またはMNumericArray_newで割り当てられたMNumericArrayでなければならない.
  • がヌルの場合,結果は割り当てられる.
  • が適切な型と大きさである割り当てられたMNumericArrayである場合,*out のデータは変更される.
  • type には以下の設定が使用できる:
  • MNumericArray_Type_Bit8"Integer8"からまでの符号付8ビット整数
    MNumericArray_Type_UBit8"UnsignedInteger8"0から255までの整数
    MNumericArray_Type_Bit16"Integer16"からまでの符号付16ビット整数
    MNumericArray_Type_UBit16"UnsignedInteger16"0から65535までの整数
    MNumericArray_Type_Bit32"Integer32"からまでの符号付32ビット整数
    MNumericArray_Type_UBit32"UnsignedInteger32"0から2^(32)-1までの整数
    MNumericArray_Type_Bit64"Integer64"からまでの符号付64ビット整数
    MNumericArray_Type_UBit64"UnsignedInteger64"0から2^(64)-1までの整数
    MNumericArray_Type_Real32"Real32"単精度実数(32ビット)
    MNumericArray_Type_Real64"Real64"倍精度実数(64ビット)
    MNumericArray_Type_Complex_Real32"ComplexReal32"単精度複素数
    MNumericArray_Type_Complex_Real64"ComplexReal64"倍精度複素数
  • method には以下の設定が使用できる:
  • MNumericArray_Convert_Check"Check"値が type と互換であるかどうか確認する
    MNumericArray_Convert_Coerce"Coerce"type に強制する
    MNumericArray_Convert_Round"Round"実数を整数に丸める
    MNumericArray_Convert_Clip_Check"ClipAndCheck"範囲内になるように切り取り,値が type と互換であるかどうか確認する
    MNumericArray_Convert_Clip_Coerce"ClipAndCoerce"範囲内になるように切り取り,type に強制する
    MNumericArray_Convert_Clip_Round"ClipAndRound"範囲内になるように切り取り,実数を整数に丸める
  • TemplateBox[{{x, -, y}}, Abs]<=10^(tol-p) max(TemplateBox[{x}, Abs],TemplateBox[{y}, Abs])の場合,10進数精度 p の2つの非零の数 xy は10進数許容範囲 tol に等しいと想定される.

例題

  (1)

MNumericArray_Convert_Coerceメソッドを使い,許容範囲を10進数の1としてMNumericArrayMNumericArray_Type_Real32型に変換する:

MNumericArray A0, A1 = NULL;
...
errcode_t err = libData->numericarrayLibraryFunctions->MNumericArray_convertType(&A1, A0, MNumericArray_Type_Real32, MNumericArray_Convert_Coerce, 1);