GPU 用 4 倍精度
BLAS ルーチン
QPBLAS-GPU Ver.1.0
ユーザーズマニュアル2013 年 7 月
独立行政法人
日本原子力研究開発機構

目次
1

概説 ...............................................................................................................................3

2

BLAS について.............................................................................................................43

4 倍精度化アルゴリズムについて ................................................................................44

参考文献........................................................................................................................4

5

ディレクトリ構成 .........................................................................................................5

6

インストール方法 .........................................................................................................57

検証用・性能評価用プログラム ...................................................................................68

サンプルプログラム .....................................................................................................7

9サブルーチン詳細 ...................................................................................................... 10

1 概説
原子力研究開発機構システム計算科学センターシミュレーション技術開発室では、第二期中期計画に定めた研究開発テーマ「原子炉構造材料における劣化現象の解明、燃料関連
アクチノイド化合物の物質特性の予測並びに高効率な熱電材料、電源材料及び超伝導材料の構造と機能の関係解明のための高精度シミュレーション技術を開発する」を達成するた
め、関係する計算手法の研究開発を行っている。上記計画では、材料物性を研究する数値計算手法の開発が共通の計算科学上の課題であり、量子力学（量子多体問題）に基づき正確に電子状態を計算する手法の開発が不可欠である。一般に、量子多体問題を正確に解く
ためには、極めて大きな自由度を近似なしに扱う必要性があることから、大規模な数値計
算を、精度を維持しながら実施しなければならない。現在、量子多体問題を解くような大規模計算は、並列計算機を利用することで実現可能であり、プロセッサー毎の利用可能メ
モリを集めることで全体として巨大なメモリ領域が確保されれば、計算資源が許す限りの大規模問題にアプローチできる。しかし、実際に大規模計算を行い、正確な量子状態を得るためには、膨大な数の演算が必要となるため、累積誤差が蓄積する事が知られてきた（計算機では、ある有効桁数での演算を行うため、一回の演算毎に丸め誤差が混入し、演算量が増加するほどその累積誤差は増大する）。
これまで従来規模のシミュレーションではその誤差が問題視されることはなかったが、京コンピュータのような超大規模計算機の性能を極限まで利用したシミュレーションを行
うと、累積誤差は膨大になり、シミュレーション結果の有効桁がほとんどなくなる可能性があることを指摘してきた経緯がある(実際、前地球シミュレータの全ノード 4096CPU を用いて計算可能な固有値問題を解いた際、有効精度が数桁程度になることを観測している)。
このような状況の下、計算機シミュレーションにおいて頻繁に利用される基本演算ルー
チン群である BLAS の 4 倍精度への拡張は、高精度な超大規模並列シミュレーションを実現するにあたり必要不可欠な研究開発項目であり、すべての大規模シミュレーションに共通な普遍性を有するため優先度の高い研究開発項目である。
当該研究室では平成 21 年度「原子力デバイスシミュレーション用高精度計算ルーチンの開発」において基礎となる 16 個のルーチンについて 4 倍精度化を実施し、平成 22 年度「原子力材料シミュレーション用高精度計算ルーチンの開発」では残りの 24 ルーチンについて 4 倍精度化、加えて OpenMP による並列化を実施した(この 2 つの開発をまとめて「4倍精度化 BLAS ルーチン」という)。
さらに近年、GPU の演算性能の向上により、これを用いた大規模数値シミュレーション
例が数多く報告され、今後、GPU を搭載した並列クラスタによる大規模並列シミュレーシ
ョンの増大が見込まれることから、平成 23 年度には「4 倍精度化 BLAS ルーチン」を GPU
上 で 動 作 さ せ る た め の 一 連 の 開 発 作 業 を 行 っ た 。 こ の GPU 対 応 ラ イ ブ ラ リ を

QPBLAS-GPU と呼ぶ。以下ではこのライブラリの使い方の説明をする。

2 BLAS について
Basic Linear Algebra Subprograms (BLAS) とは、線形代数の分野において頻繁に必要となる基本的な演算をまとめた高品質な数値計算ライブラリである。1979 年に FORTRAN
によって書かれたコードが発表されたが、その後、C/C++を含む各種プログラミング言語へのバインディングが行われたため、現在は多くの言語において BLAS に含まれる演算をほぼ共通のインターフェースで利用できる。なお、演算の追加や並列計算への最適化といった面で BLAS の拡張も行われてきた。これらの拡張された数値計算ライブラリとしては、
LAPACK, ATLAS, Intel Kernel Math Library (MKL) などが知られている。
BLAS に含まれる演算は、その種類によって 3 つのレベルに分類されている。レベル 1
はベクトルとベクトルの演算、レベル 2 は行列とベクトルの演算、レベル 3 では行列と行列の演算である。

3 4 倍精度化アルゴリズムについて
IEEE 754 規格に基づく 4 倍精度(128 bit)の浮動小数点演算は、最新の Fortran を含む一部の言語ではすでに実装されている。しかし、ハードウェアがこの演算に対してまだ最適化されていないため、この演算は任意精度演算として実行される場合が多い。その結果、演算速度が倍精度演算と比べて非常に遅くなるという課題を抱えている。
QPBLAS では、計算精度と計算速度を両立させるために、D.H.Bailey が提案した２つの倍精度データを用いて 1 つの 4 倍精度データを表現する double-double アルゴリズムを採用した。この double-double アルゴリズムを用いた数値表現の範囲や精度は、指数部分のデータを 2 重に持つことになるため本来の 4 倍精度のそれよりは若干劣るものの、通常の倍精度数値表現と比べると約 2 倍になる。このような高精度な演算を倍精度演算の組み合
わせのみで実現できるため、大規模で高精度なシミュレーションの実現のために非常に有効なアルゴリズムである。

4 参考文献BaileyHD.

( 日 付 不 明 ).

High-Precision

SoftwareDirectory.

参 照 先 :

http://crd-legacy.lbl.gov/~dhbailey/mpdist
山田進, 佐々成正, 今村俊幸, 町田昌彦. (2012). 4 倍精度基本線形代数ルーチン QPBLASの紹介とアプリケーションへの応用. 2012-HPC, 137 (23), 1-6.

5 ディレクトリ構成
圧縮されたソースコードを展開すると、以下のようなディレクトリ構造になる。
.
├── cpu

ホストメモリに対するラッパー関数├── cpu_multi

ホストメモリに対するラッパー関数（複数CPU）├── gpu

double-double4倍精度化GPU対応BLAS├── sample

サンプルプログラム└── test

動作検証・性能評価プログラム

6 インストール方法
QPBLAS-GPU の検証用プログラムでは QPBLAS に含まれる 128bit4 倍精度化 BLASを利用している。4 倍精度化 BLAS との比較を行う場合はあらかじめライブラリを作成しておくこと。
本ライブラリのインストールには Ver.4.0 の CUDA コンパイラ及び CUDA 標準ライブラ
リが必要である。
以下のコマンドを端末に入力することで、ユーザーの環境に合わせた Makefile の作成とコンパイルが行われる。
tar xzf QPBLAS-GPU-version.tar.gz
cd QPBLAS-GPU-version./configure options
makeconfigure の際に考慮すべき主なオプションとその意味は、以下の通りである。
FC=f90_compiler

Fortran コンパイラの指定（サンプルのビルドのため）FCFLAGS=options

コンパイルオプションの指定並列計算や最適化に関する指定を行う。

LDFLAGS=options

リンクオプションの指定

LIBS=options

追加ライブラリの指定--prefix=path

インストールディレクトリの変更

CUDA がインストールされているディレ--with-cuda=path

クトリを指定する
倍精度 BLAS ライブラリをコンパイルす--without-dblas

るかどうかの指定指定された場合、テストプログラムの一部で用いる BLAS の倍精度ルーチンをコンパイルせずに、LDFLAGS などによって指定された既存のライブラリを使用する。
デフォルトでは、倍精度 BLAS ライブラ
リをコンパイルする。
コンパイルのために最低限必要な configure オプションは、たとえば次のようになる。
例：GNU Fortran を利用する場合./configure FC=gfortran LDFLAGS="-L../lib" ¥LIBS="-lqblas -ldblas" --with-cuda=/usr/local/cuda-4.0
make が成功すると、次のライブラリやプログラムが作成される。
libgddblas.a

QPBLAS-GPU ライブラリ

test/level1

Level 1 の検証用プログラム

test/level2

Level 2 の検証用プログラム

test/level3

Level 3 の検証用プログラム

libddblas.a を既定の場所にインストールする場合は、次のコマンドを端末に入力する。
ほかのライブラリやプログラムはインストールされない。
make install

7 検証用・性能評価用プログラム
6 に示した手順によってコンパイルを完了させたのち、次のコマンドを入力する。ただし、n は 1, 2, 3 のいずれかである。

cd test./leveln

すると、QPBLAS-GPU に含まれるそのレベルのルーチンの一覧などを含むメニュー画面が表示される。このメニュー画面で一連の数字を入力することで、ライブラリの検証と性能評価を行うことができる。たとえば、level1 では以下のような命令を実行できる。
1 ... 14

該当するルーチンを QPBLAS, 倍精度 BLAS, 4 倍精度 BLAS で計算する（4 倍精度 BLAS は実行可能な場合のみ）

75

ベクトルの長さを変更する（一度 Enter を押し、新しい数値を聞かれたら入力して Enter を押す）

96

このレベルのすべてのルーチンを 1 度ずつ実行する（自動テスト用）

97

ルーチンの入出力の詳細表示の ON/OFF を切り替える（起動時は OFF）

98

計算結果の比較表示の ON/OFF を切り替える（起動時は OFF）

99

計算時間の結果表示の ON/OFF を切り替える（起動時は OFF）

0

プログラムを終了する

たとえば、次の数字を順に入力すると、長さ 100 のベクトルにおける GDDAXPY の計算
結果の比較と計算時間の測定を行い、端末に出力する。（改行ごとに Enter キーを押す）
75
100
98
99
4

8 サンプルプログラム
sample ディレクトリに、Fortran 90 で書かれた QPBLAS-GPU のサンプルプログラム
がいくつか用意されている。
gddnrm2_sample.f90

ベクトルの 2 ノルム

gddtrsv_sample.f90

三角行列を含む式を解く

gddgemm_sample.f90

一般行列と行列の演算

gzzdotu_sample.f90

複素数ベクトルの内積

gzzhemv_sample.f90

エルミート行列とベクトルの演算

gzzhemm_sample.f90

エルミート行列と行列の演算

これらのサンプルプログラムをコンパイルして、実行するには次のように入力する。
cd sample
make./gzzdotu_sample
このプログラムを自分でコンパイルする場合は、たとえば次のように行う。
gfortran gzzdotu_sample.f90 ../libddblas.a –fopenmp ¥-L/usr/local/cuda-4.0/lib64 ¥-L/usr/local/cuda-4.0/NVIDIA_GPU_Computing_SDK/C/lib ¥-lcudart -lcublas -lcutil_x86_64
サンプルプログラムの内容は以下の通り。

1.1 ベクトルの２ノルム（gddnrm2_sample.f90）
4 倍精度実数の 2000 次のベクトルとして high word xh を乱数で、lowword xl を 0.0d で与えて、その 2-ノルムを計算する。

1.2 三角行列を解く（gddtrsv_sample.f90）
4 倍精度の行列およびをで与えられる 3 次の上三角行列とし、 4 倍精度実数のベクトルを high word を乱数で、low word を 0.0d で与えて、方程式を解く。

1.3 一般行列と行列の演算（gddgemm_sample.f90）
4 倍精度の 2 行 4 列の行列
ｒ3 列の行列、4 行 3 列の行列

および 2 行について、それぞれの high word を乱数で与え、low word

を 0.0d で与える。係数 および を乱数で与えて、を計算する。

1.4 複素数ベクトルの内積（gzzdotu_sample.f90）
4 倍精度複素数の 2000 次のベクトルとについて、それ

ぞれ high word を乱数で、low word を 0.0d で与えて、その内積

を

計算する。

1.5 エルミート行列とベクトルの演算（gzzhemv_sample.f90）
4 倍精度 3 次のエルミート行列、4 倍精度 3 次の複素数ベクトルを high word を乱数で与え、low word を 0.0d で与えとる。係数 および を乱数で与えて、を計算する。

1.6 エルミート行列と行列の演算（gzzhemm_sample.f90）
4 倍精度 3 次エルミート行列
び、3 行 2 次の複素数行列

およについて、high word を乱数で与え、low word を 0.0d で与える。係数 および を乱数で与えて、を計算する。

1.7 サンプルソースコード
サンプルプログラム gzzdotu_sample.f90 のソースコードは以下の通り。

program main

implicit none

integer :: ndouble complex, allocatable :: xh(:), xl(:)
integer :: incx
double complex, allocatable :: yh(:), yl(:)
integer :: incy
double complex :: zh, zl

n = 2000incx = 1
incy = 1

allocate(xh(1+(n-1)*abs(incx)))
allocate(xl(1+(n-1)*abs(incx)))
allocate(yh(1+(n-1)*abs(incy)))allocate(yl(1+(n-1)*abs(incy)))
call random_complex(xh)xl = 0d0
call random_complex(yh)yl = 0d0

call gzzdotu_host_multigpu(n, xh, xl, incx, yh, yl, incy, zh, zl)

print *, "zh =", zhprint *, "zl =", zlcontains

subroutine random_complex(z)double complex, intent(out) :: z(:)
double precision, allocatable :: re(:), im(:)

allocate(re(size(z,1)))
allocate(im(size(z,1)))
call random_number(re)call random_number(im)z(:) = dcmplx(re, im)end subroutine

end program

9 サブルーチン詳細QPBLAS-GPU は、BLAS に含まれるルーチンのうち、とくによく用いられる 40 個のルーチンについて実装されている。

Lev

GDDSWAPベクトルの入れ替え

el1

GDDCOPY

ベクトルのコピー

GDDSCAL

ベクトルのスケーリン
グ

GDDAXPY

ベクトルの演算GDDDOT

ベクトルの内積GDDNRM2ベクトルの2-ノルム

GDDASUMベクトルの和（1-ノルム）

GIDDAMAX

絶対値が最大の値を持つベクトルの番号

GDDROTG

ギブンズ回転行列の作成

GDDROT

ギブンズ回転の適用

GDDROTMG

修正ギブンズ回転行列の作成
修正ギブンズ回転の適

GDDROTM用GZZDOTC

複素数ベクトルの内積（第1ベクトルを共役転置）Lev

GZZDOTU

複素数ベクトルの内積（第1ベクトルを転置）

GDDGEMV

一般行列とベクトルの演算

el2
GDDGBMV
DDGER

一般帯行列とベクトルの演算一般行列のランク1の更新

GDDSYMV

対称行列とベクトルの演算

GDDSBMV

対称帯行列とベクトルの演算

GDDSYR対称行列のランク1の更新

GDDSYR2対称行列のランク2の

更新
GDDTRMV

三角行列とベクトルの演算

GDDTBMV

三角帯行列とベクトルの演算

GDDTRSV

三角行列を含む式を解
く

GDDTBSV

三角帯行列を含む式を解く

GZZGERC

一般複素数行列のランク1の更新（第2ベクトルを共役転置）GZZGERU

一般複素数行列のランク1の更新（第2ベクトル
を転置）

Lev
el3

GZZHEMV

エルミート行列とベク
トルの演算

GZZHBMV

エルミート帯行列とベクトルの演算GZZHER

エルミート行列のラン
ク1の更新

GZZHER2

エルミート行列のラン
ク2の更新

GDDGEMM

一般行列と行列の演算

GDDSYMM

対称行列と行列の演算

GDDSYRK対称行列のランクkの更新

GDDSYR2K対称行列のランク2kの更新

GDDTRMM三角行列と行列の演算

GDDTRSM

三角行列を含む式を解く
GZZHEMM

エルミート行列と行列の演算

GZZHERK

エルミート行列のランクkの更新

GZZHER2K

エルミート行列のランク 2k の更新

GDDSWAP
概要：
ベクトルの入れ替え
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

i/odouble precision

4倍精度実数ベクトルのhigh word

XL

i/o

double precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YH

i/odouble precision

4倍精度実数ベクトルのhigh word

YL

i/o

double precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GDDCOPY
概要：
ベクトルのコピー
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHodouble precision

4倍精度実数ベクトルのhigh wordYLodouble precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GDDSCAL
概要：
ベクトルのスケーリング
x := a * x
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

AHidouble precision

4倍精度実数のhigh wordALidouble precision

4倍精度実数のlow word

XH

i/o

double precision

4倍精度実数ベクトルのhigh word

XL

i/o

double precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

GDDAXPY
概要：
ベクトルの演算y := a * x + y
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

AHidouble precision

4倍精度実数のhigh wordALidouble precision

4倍精度実数のlow wordXH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YH

i/odouble precision

4倍精度実数ベクトルのhigh word

YL

i/o

double precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GDDDOT
概要：
ベクトルの内積
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble precision

4倍精度実数ベクトルのhigh wordYL

idouble precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

DDHodouble precision

4倍精度実数のhigh wordDDLodouble precision

4倍精度実数のlow word

GDDNRM2
概要：
ベクトルの2-ノルム
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

DDHodouble precision

4倍精度実数のhigh wordDDLodouble precision

4倍精度実数のlow word

GDDASUM
概要：
ベクトルの和（1-ノルム）
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

DDHodouble precision

4倍精度実数のhigh wordDDLodouble precision

4倍精度実数のlow word

GIDDAMAX
概要：
絶対値が最大の値を持つベクトルの番号
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

ret

ret

integer

絶対値が最大の値を持つベクトルの番号

GDDROTG
概要：
ギブンズ回転行列の作成
引数

I/O

型

AH

i/o

double precision

4倍精度実数のhigh word

AL

i/o

double precision

4倍精度実数のlow word

BH

i/o

double precision

4倍精度実数のhigh word

BL

i/o

double precision

4倍精度実数のlow wordCHodouble precisionCLodouble precisionSHodouble precisionodouble precisionSL

説明

生成されたギブンズ回転データの余弦成分のhigh word
生成されたギブンズ回転データの余弦成分のlow word
生成されたギブンズ回転データの正弦成分のhigh word
生成されたギブンズ回転データの正弦成分のlow word

GDDROT
概要：
ギブンズ回転の適用
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

i/odouble precision

4倍精度実数ベクトルのhigh word

XL

i/o

double precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YH

i/odouble precision

4倍精度実数ベクトルのhigh word

YL

i/o

double precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分CHidouble precisioni

double precisioni

double precisioni

double precision

CL
SH
SL

適用するギブンズ回転データの余弦成分のhigh word
適用するギブンズ回転データの余弦成分のlow word
適用するギブンズ回転データの正弦成分のhigh word
適用するギブンズ回転データの正弦成分のlow word

GDDROTMG
概要：
修正ギブンズ回転行列の作成
引数

I/O

型

D1H

i/o

double precision

4倍精度実数のhigh word

D1L

i/o

double precision

4倍精度実数のlow word

D2H

i/o

double precision

4倍精度実数のhigh word

D2L

i/o

double precision

4倍精度実数のlow word

X1H

i/o

double precision

4倍精度実数のhigh word

X1L

i/o

double precision

4倍精度実数のlow word

Y1H

idouble precision

4倍精度実数のhigh word

Y1L

idouble precision

4倍精度実数のlow word

PARAMHi/odouble precisioni/odouble precision

PARAML

説明

生成された修正ギブンズ回転パラメータのhigh word
生成された修正ギブンズ回転パラメータの
low word

GDDROTM
概要：
修正ギブンズ回転の適用
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

i/odouble precision

4倍精度実数ベクトルのhigh word

XL

i/o

double precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YH

i/odouble precision

4倍精度実数ベクトルのhigh word

YL

i/o

double precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

PARAMHi

double precisioni

double precision

PARAML

適用する修正ギブンズ回転パラメータのhighword
適用する修正ギブンズ回転パラメータのlowword

GZZDOTC
概要：
複素数ベクトルの内積（第1ベクトルを共役転置）
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble complex

4倍精度複素数ベクトルのhigh wordYL

idouble complex

4倍精度複素数ベクトルのlow word

INCY

i

integer

YH, YLの増分

ZZHodouble complex

4倍精度複素数のhigh wordZZLodouble complex

4倍精度複素数のlow word

GZZDOTU
概要：
複素数ベクトルの内積（第1ベクトルを転置）
引数

型

I/O

説明

N

i

integer

ベクトルの長さ

XH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble complex

4倍精度複素数ベクトルのhigh wordYL

idouble complex

4倍精度複素数ベクトルのlow word

INCY

i

integer

YH, YLの増分

ZZHodouble complex

4倍精度複素数のhigh wordZZLodouble complex

4倍精度複素数のlow word

GDDGEMV
概要：
一般行列とベクトルの演算
y := alpha * A * x + beta * yory := alpha * A^T * x + beta * y

引数

型

I/O

説明
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'T' or 't' → 転置するTRANS = 'C' or 'c' → 共役転置する

Miinteger

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

BETAH

i

double precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

YH

i/o

double precision

4倍精度実数ベクトルのhigh word

YL

i/o

double precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GDDGBMV
概要：
一般帯行列とベクトルの演算
y := alpha * A * x + beta * yory := alpha * A^T * x + beta * y

引数

型

I/O

説明
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'T' or 't' → 転置するTRANS = 'C' or 'c' → 共役転置する

Miinteger

行列の行または列の数

Niinteger

行列の行または列の数

KLiinteger

下バンド幅

KU

i

integer

上バンド幅

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow word

AH

i/o

double precision

4倍精度実数行列のhigh word

AL

i/o

double precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

BETAH

i

double precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow wordYH

idouble precision

4倍精度実数ベクトルのhigh wordYL

idouble precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

DDGER
概要：
一般行列のランク1の更新
A := alpha * x * y^T + A
引数

型

I/O

説明

M

i

integer

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordXH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble precision

4倍精度実数ベクトルのhigh wordYL

idouble precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

AH

i/odouble precision

4倍精度実数行列のhigh word

AL

i/o

double precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

GDDSYMV
概要：
対称行列とベクトルの演算
x := alpha * A * x + beta * y
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

BETAH

i

double precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

YH

i/o

double precision

4倍精度実数ベクトルのhigh word

YL

i/o

double precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GDDSBMV
概要：
対称帯行列とベクトルの演算
y := alpha * A * x + beta * y
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

Kiinteger

バンド幅

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow word

AH

i/o

double precision

4倍精度実数行列のhigh word

AL

i/o

double precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

BETAH

i

double precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow wordYH

idouble precision

4倍精度実数ベクトルのhigh wordYL

idouble precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GDDSYR
概要：
対称行列のランク1の更新
A := alpha * x * x^T + A
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordXH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

AH

i/odouble precision

4倍精度実数行列のhigh word

AL

i/o

double precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

GDDSYR2
概要：
対称行列のランク2の更新
A := alpha * x * y^T + alpha * y * x^T + A
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordXH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble precision

4倍精度実数ベクトルのhigh wordYL

idouble precision

4倍精度実数ベクトルのlow word

INCY

i

integer

YH, YLの増分

AH

i/odouble precision

4倍精度実数行列のhigh word

AL

i/o

double precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

GDDTRMV
概要：
三角行列とベクトルの演算
x := A * x
orx := A^T * x

引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'T' or 't' → 転置するTRANS = 'C' or 'c' → 共役転置する
三角行列の対角成分の指定

DIAG

i

character(1)DIAG = 'U' or 'u' → 単位三角行列である
DIAG = 'N' or 'n' → 単位三角行列でないNiinteger

行列の行または列の数

AHidouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

i/odouble precision

4倍精度実数ベクトルのhigh word

XL

i/o

double precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

GDDTBMV
概要：
三角帯行列とベクトルの演算
x := A * x
orx := A^T * x

引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'T' or 't' → 転置するTRANS = 'C' or 'c' → 共役転置する
三角行列の対角成分の指定

DIAG

i

character(1)DIAG = 'U' or 'u' → 単位三角行列である
DIAG = 'N' or 'n' → 単位三角行列でないNiinteger

行列の行または列の数

Kiinteger

バンド幅

AH

i/o

double precision

4倍精度実数行列のhigh word

AL

i/o

double precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

idouble precision

4倍精度実数ベクトルのhigh word

XL

idouble precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

GDDTRSV
概要：
三角行列を含む式を解く
x := A^-1 * x
orx := (A^T)^-1 * x

引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'T' or 't' → 転置するTRANS = 'C' or 'c' → 共役転置する
三角行列の対角成分の指定

DIAG

i

character(1)DIAG = 'U' or 'u' → 単位三角行列である
DIAG = 'N' or 'n' → 単位三角行列でないNiinteger

行列の行または列の数

AHidouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

i/odouble precision

4倍精度実数ベクトルのhigh word

XL

i/o

double precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

GDDTBSV
概要：
三角帯行列を含む式を解く
x := A^-1 * x
orx := (A^T)^-1 * x

引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'T' or 't' → 転置するTRANS = 'C' or 'c' → 共役転置する
三角行列の対角成分の指定

DIAG

i

character(1)DIAG = 'U' or 'u' → 単位三角行列である
DIAG = 'N' or 'n' → 単位三角行列でないNiinteger

行列の行または列の数

Kiinteger

バンド幅

AH

i

double precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

i/odouble precision

4倍精度実数ベクトルのhigh word

XL

i/o

double precision

4倍精度実数ベクトルのlow word

INCX

i

integer

XH, XLの増分

GZZGERC
概要：
一般複素数行列のランク1の更新（第2ベクトルを共役転置）
A := alpha * x * y^H + A
引数

型

I/O

説明

M

i

integer

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double complex

4倍精度複素数のhigh word

ALPHALidouble complex

4倍精度複素数のlow wordXH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble complex

4倍精度複素数ベクトルのhigh wordYL

idouble complex

4倍精度複素数ベクトルのlow word

INCY

i

integer

YH, YLの増分

AH

i/odouble complex

4倍精度複素数行列のhigh word

AL

i/o

double complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元GZZGERU
概要：
一般複素数行列のランク1の更新（第2ベクトルを転置）
A := alpha * x * y^T + A
引数

型

I/O

説明

M

i

integer

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double complex

4倍精度複素数のhigh word

ALPHALidouble complex

4倍精度複素数のlow wordXH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble complex

4倍精度複素数ベクトルのhigh wordYL

idouble complex

4倍精度複素数ベクトルのlow word

INCY

i

integer

YH, YLの増分

AH

i/odouble complex

4倍精度複素数行列のhigh word

AL

i/o

double complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元

GZZHEMV
概要：
エルミート行列とベクトルの演算
y := alpha * A * x + beta * y
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

ALPHAHi

double complex

4倍精度複素数のhigh word

ALPHALidouble complex

4倍精度複素数のlow wordAH

idouble complex

4倍精度複素数行列のhigh wordALidouble complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

BETAH

i

double complex

4倍精度複素数のhigh word

BETAL

i

double complex

4倍精度複素数のlow word

YH

i/o

double complex

4倍精度複素数ベクトルのhigh word

YL

i/o

double complex

4倍精度複素数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GZZHBMV
概要：
エルミート帯行列とベクトルの演算
y := alpha * A * x + beta * y
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

Kiinteger

バンド幅

ALPHAHi

double complex

4倍精度複素数のhigh word

ALPHALidouble complex

4倍精度複素数のlow wordAH

idouble complex

4倍精度複素数行列のhigh wordALidouble complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元

XH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

BETAH

i

double complex

4倍精度複素数のhigh word

BETAL

i

double complex

4倍精度複素数のlow word

YH

i/o

double complex

4倍精度複素数ベクトルのhigh word

YL

i/o

double complex

4倍精度複素数ベクトルのlow word

INCY

i

integer

YH, YLの増分

GZZHER
概要：
エルミート行列のランク1の更新
A := alpha * x * x^H + A
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordXH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

AH

i/odouble complex

4倍精度複素数行列のhigh word

AL

i/o

double complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元

GZZHER2
概要：
エルミート行列のランク2の更新
A := alpha * x * y^H + conjg( alpha ) * y * x^H + A
引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

ALPHAHi

double complex

4倍精度複素数のhigh word

ALPHALidouble complex

4倍精度複素数のlow wordXH

idouble complex

4倍精度複素数ベクトルのhigh word

XL

idouble complex

4倍精度複素数ベクトルのlow word

INCX

i

integer

XH, XLの増分

YHidouble complex

4倍精度複素数ベクトルのhigh wordYL

idouble complex

4倍精度複素数ベクトルのlow word

INCY

i

integer

YH, YLの増分

AH

i/odouble complex

4倍精度複素数行列のhigh word

AL

i/o

double complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元

GDDGEMM
概要：
一般行列と行列の演算
C := alpha * A * B + beta * C
orC := alpha * A^T * B + beta * C
orC := alpha * A * B^T + beta * C
orC := alpha * A^T * B^T + beta * C

引数

型

I/O

説明
行列Aの転置操作の制御

TRANSAi

character(1)TRANSA = 'N' or 'n' → 転置しない
TRANSA = 'T' or 't' → 転置するTRANSA = 'C' or 'c' → 共役転置する
行列Bの転置操作の制御

TRANSBicharacter(1)TRANSB = 'N' or 'n' → 転置しない
TRANSB = 'T' or 't' → 転置するTRANSB = 'C' or 'c' → 共役転置する

Miinteger

行列の行または列の数

Niinteger

行列の行または列の数

Kiinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

BH

idouble precision

4倍精度実数行列のhigh wordBLidouble precision

4倍精度実数行列のlow word

LDBiinteger

行列Bの第一次元

BETAH

idouble precision

4倍精度実数のhigh word

BETALidouble precision

4倍精度実数のlow word

CH

i/o

double precision

4倍精度実数行列のhigh word

CL

i/o

double precision

4倍精度実数行列のlow word

LDC

iinteger

行列Cの第一次元

GDDSYMM
概要：
対称行列と行列の演算
C := alpha * A * B + beta * C
orC := alpha * B * A + beta * C

引数

型

I/O

説明
行列Aと行列Bの順番の指定

SIDE

i

character(1)SIDE = 'L' or 'l' → A Bの順SIDE = 'R' or 'r' → B Aの順三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

M

i

integer

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

BH

idouble precision

4倍精度実数行列のhigh wordBLidouble precision

4倍精度実数行列のlow word

LDBiinteger

行列Bの第一次元

BETAH

idouble precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

CH

i/o

double precision

4倍精度実数行列のhigh word

CL

i/o

double precision

4倍精度実数行列のlow word

LDC

iinteger

行列Cの第一次元

GDDSYRK
概要：
対称行列のランクkの更新
C := alpha * A * A^T + beta * C
orC := alpha * A^T * A + beta * C

引数

型

I/O

説明
行列Aと行列Bの順番の指定

SIDE

i

character(1)SIDE = 'L' or 'l' → A Bの順SIDE = 'R' or 'r' → B Aの順三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

N

i

integer

行列の行または列の数

Kiinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

BETAH

idouble precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

CH

i/o

double precision

4倍精度実数行列のhigh word

CL

i/o

double precision

4倍精度実数行列のlow word

LDC

iinteger

行列Cの第一次元

GDDSYR2K
概要：
対称行列のランク2kの更新
C := alpha * A * B^T + alpha * B * A^T + beta * C
orC := alpha * B^T * A + alpha * A^T * B + beta * C

引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'T' or 't' → 転置するTRANS = 'C' or 'c' → 共役転置するNi

integer

行列の行または列の数

Kiinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

BH

idouble precision

4倍精度実数行列のhigh wordBLidouble precision

4倍精度実数行列のlow word

LDBiinteger

行列Bの第一次元

BETAH

idouble precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

CH

i/o

double precision

4倍精度実数行列のhigh word

CL

i/o

double precision

4倍精度実数行列のlow word

LDC

iinteger

行列Cの第一次元

GDDTRMM
概要：
三角行列と行列の演算
B := alpha * A * B
or
B := alpha * A^T * B
or
B := alpha * B * Aor
B := alpha * B * A^T

引数

型

I/O

説明
行列Aと行列Bの順番の指定

SIDE

i

character(1)SIDE = 'L' or 'l' → A Bの順SIDE = 'R' or 'r' → B Aの順三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列Aの転置操作の制御

TRANSAi

character(1)TRANSA = 'N' or 'n' → 転置しない
TRANSA = 'T' or 't' → 転置するTRANSA = 'C' or 'c' → 共役転置する
三角行列の対角成分の指定

DIAG

i

character(1)DIAG = 'U' or 'u' → 単位三角行列である
DIAG = 'N' or 'n' → 単位三角行列でないMiinteger

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

i

integer

行列Aの第一次元

BH

i/odouble precision

4倍精度実数行列のhigh word

BL

i/o

double precision

4倍精度実数行列のlow word

LDBiinteger

行列Bの第一次元

GDDTRSM
概要：
三角行列を含む式を解く
B := alpha * A^-1 * BorB := alpha * B * A^-1

引数

型

I/O

説明
行列Aと行列Bの順番の指定

SIDE

i

character(1)SIDE = 'L' or 'l' → A Bの順SIDE = 'R' or 'r' → B Aの順三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列Aの転置操作の制御

TRANSAi

character(1)TRANSA = 'N' or 'n' → 転置しない
TRANSA = 'T' or 't' → 転置するTRANSA = 'C' or 'c' → 共役転置する
三角行列の対角成分の指定

DIAG

i

character(1)DIAG = 'U' or 'u' → 単位三角行列である
DIAG = 'N' or 'n' → 単位三角行列でないMiinteger

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

BH

i/odouble precision

4倍精度実数行列のhigh word

BL

i/o

double precision

4倍精度実数行列のlow word

LDB

i

integer

行列Bの第一次元

GZZHEMM
概要：
エルミート行列と行列の演算
C := alpha * A * B + beta * C
orC := alpha * B * A + beta * C

引数

型

I/O

説明
行列Aと行列Bの順番の指定

SIDE

i

character(1)SIDE = 'L' or 'l' → A Bの順SIDE = 'R' or 'r' → B Aの順三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算
に用いる）

M

i

integer

行列の行または列の数

Niinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble precision

4倍精度実数行列のhigh wordALidouble precision

4倍精度実数行列のlow word

LDA

iinteger

行列Aの第一次元

BH

idouble precision

4倍精度実数行列のhigh wordBLidouble precision

4倍精度実数行列のlow word

LDBiinteger

行列Bの第一次元

BETAH

idouble precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

CH

i/o

double precision

4倍精度実数行列のhigh word

CL

i/o

double precision

4倍精度実数行列のlow word

LDC

iinteger

行列Cの第一次元

GZZHERK
概要：
エルミート行列のランクkの更新
C := alpha * A * A^H + beta * C
orC := alpha * A^H * A + beta * C

引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'C' or 'c' → 共役転置するNi

integer

行列の行または列の数

Kiinteger

行列の行または列の数

ALPHAHi

double precision

4倍精度実数のhigh word

ALPHALidouble precision

4倍精度実数のlow wordAH

idouble complex

4倍精度複素数行列のhigh wordALidouble complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元

BETAH

idouble precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

CH

i/o

double complex

4倍精度複素数行列のhigh word

CL

i/o

double complex

4倍精度複素数行列のlow word

LDC

iinteger

行列Cの第一次元

GZZHER2K
概要：
エルミート行列のランク2kの更新
C := alpha * A * B^H + alpha * B * A^H + beta * C
orC := alpha * B^H * A + alpha * A^H * B + beta * C

引数

型

I/O

説明
三角行列の種類の指定
UPLO = 'U' or 'u' → 上三角行列（右上成分を計算

UPLO

i

character(1)に用いる）
UPLO = 'L' or 'l' → 下三角行列（左下成分を計算に用いる）
行列の転置操作の制御

TRANS

i

character(1)TRANS = 'N' or 'n' → 転置しない
TRANS = 'C' or 'c' → 共役転置するNi

integer

行列の行または列の数

Kiinteger

行列の行または列の数

ALPHAHi

double complex

4倍精度複素数のhigh word

ALPHALidouble complex

4倍精度複素数のlow wordAH

idouble complex

4倍精度複素数行列のhigh wordALidouble complex

4倍精度複素数行列のlow word

LDA

iinteger

行列Aの第一次元

BH

idouble complex

4倍精度複素数行列のhigh wordBLidouble complex

4倍精度複素数行列のlow word

LDBiinteger

行列Bの第一次元

BETAH

idouble precision

4倍精度実数のhigh word

BETAL

i

double precision

4倍精度実数のlow word

CH

i/o

double complex

4倍精度複素数行列のhigh word

CL

i/o

double complex

4倍精度複素数行列のlow word

LDC

iinteger

行列Cの第一次元