LAPACKの命名規則(ネーミングスキーム)

 本業は画像処理のはずなのに,数値計算にはまり中.とはいえライブラリのお世話にはなり,有名どころとしてはLAPACKなど.このLAPACKの関数名がまた読みにくい.なんでこうなったんだ?と調べた結果のメモ.出典は,「SGI 科学技術計算ライブラリ SCSL ユーザガイド」(http://www.issp.u-tokyo.ac.jp/super/manual/system-b/12_SCSL_J.pdf

 そもそもLAPACKは密行列に対する線形代数の問題(線形方程式や固有値問題など)を数値的に解くライブラリです.

 様々なルーチンが含まれていますが,関数名はxyyzzまたはxyyzzzという5,6文字で構成されています.(み,短い……そして読みにくい).例えば,DGESVは倍精度の非対称一般行列に対する解法(連立一次方程式の解法)で,DGETRFとDGETRSは倍精度の非対称一般行列を,LU分解と解法,になるなど.メモしておきたかったことは,xとyyとzzにはどんな種類があるのか?ということ.

 最初の一文字目「x」はデータの型を示しており,以下の4通りがある.

 次の2,3文字目「yy」は行列(もっとも特徴を表していると思われる)の種類を示している.28種類もあるようです.

  • BD 準対角行列
  • DI 対角行列
  • GB 一般帯行列
  • GE 一般行列(非対称)
  • GG 一般化問題での一般行列
  • GT 一般三重対角行列
  • HB エルミート帯行列(複素のみ)
  • HE エルミート行列(複素のみ)
  • HG 一般化問題でのヘッセンベルグ行列
  • HP 圧縮形式でのエルミート行列(複素のみ)
  • HS 上三角ヘッセンベルグ行列
  • OP 圧縮形式での直交行列(実数のみ)
  • OR 直交行列(実数のみ)
  • PB 正値帯行列(対称もしくはエルミート)
  • PO 正値行列(対称もしくはエルミート)
  • PP 圧縮形式での正値行列(対称もしくはエルミート)
  • PT 正値三重対角行列(対称もしくはエルミート)
  • SB 対称帯行列(実数のみ)
  • SP 圧縮形式での対称行列
  • ST 対称三重対角行列
  • SY 対称行列
  • TB 三角帯行列
  • TG 一般化問題での三角行列
  • TP 圧縮形式三角行列
  • TR 三角行列
  • TZ 台形行列
  • UN ユニタリ行列(複素のみ)
  • UP 圧縮形式でのユニタリ行列(複素のみ)

 最後の2,3文字目「zz」または「zzz」は処理内容を表しています.これはマニュアルを見ればよいので割愛.例えば,DGESVはたぶんDouble precision, GEneral, SolVeだと思われます.また,DGETRFとDGETRSはDouble precision, GEneral, TRiangular FactorizationとSolveかな.ま,そんな感じです.

 これですっきりしました.