cgo/clapack: add hook for specifying blas.All uplo value

This commit is contained in:
kortschak
2015-10-02 14:38:37 +09:30
parent c376a46913
commit 46cff0b485
2 changed files with 31 additions and 1 deletions

View File

@@ -2917,6 +2917,8 @@ func Slacpy(ul blas.Uplo, m int, n int, a []float32, lda int, b []float32, ldb i
ul = 'U'
case blas.Lower:
ul = 'L'
case blas.All:
ul = 'A'
default:
panic("lapack: illegal triangle")
}
@@ -2930,6 +2932,8 @@ func Dlacpy(ul blas.Uplo, m int, n int, a []float64, lda int, b []float64, ldb i
ul = 'U'
case blas.Lower:
ul = 'L'
case blas.All:
ul = 'A'
default:
panic("lapack: illegal triangle")
}
@@ -2943,6 +2947,8 @@ func Clacpy(ul blas.Uplo, m int, n int, a []complex64, lda int, b []complex64, l
ul = 'U'
case blas.Lower:
ul = 'L'
case blas.All:
ul = 'A'
default:
panic("lapack: illegal triangle")
}
@@ -2956,6 +2962,8 @@ func Zlacpy(ul blas.Uplo, m int, n int, a []complex128, lda int, b []complex128,
ul = 'U'
case blas.Lower:
ul = 'L'
case blas.All:
ul = 'A'
default:
panic("lapack: illegal triangle")
}

View File

@@ -124,6 +124,12 @@ our %typeConv = (
"double_return" => "float64"
);
# allUplo is a list of routines that allow 'A' for their uplo argument.
# The list keys are truncated by one character to cover all four numeric types.
our %allUplo = (
"lacpy" => undef
);
foreach my $line (@lines) {
process($line);
}
@@ -225,7 +231,22 @@ EOH
};
$var eq "uplo" && do {
$var = "ul";
my $bp = << "EOH";
my $bp;
if (exists $allUplo{substr($func, 1)}) {
$bp = << "EOH";
switch $var {
case blas.Upper:
$var = 'U'
case blas.Lower:
$var = 'L'
case blas.All:
$var = 'A'
default:
panic("lapack: illegal triangle")
}
EOH
} else {
$bp = << "EOH";
switch $var {
case blas.Upper:
$var = 'U'
@@ -235,6 +256,7 @@ default:
panic("lapack: illegal triangle")
}
EOH
}
push @boilerplate, $bp;
push @processed, $var." blas.Uplo"; next;
};