Skip to content

Instantly share code, notes, and snippets.

@dpo
Created February 28, 2020 00:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dpo/87d5a72308ad075a7e5d0130cd1b1b58 to your computer and use it in GitHub Desktop.
Save dpo/87d5a72308ad075a7e5d0130cd1b1b58 to your computer and use it in GitHub Desktop.
const global syms = ["caxpy", "cbdsqr", "ccopy", "cdotc", "cdotu", "cgbtrf",
"cgemm", "cgemv", "cgerc", "cgeru", "cgetrf", "cgetrs",
"chemm", "chemv", "cher", "cher2", "cher2k", "cherk",
"chetrd", "clacgv", "clacpy", "cladiv", "clanhs",
"clarfg", "clartg", "claset", "clasr", "classq", "claswp",
"cpbtrf", "cpotrf", "cpttrf", "crot", "cscal", "csscal",
"cswap", "csymm", "csyr2k", "csyrk", "ctbtrs", "ctrmm",
"ctrmv", "ctrsm", "ctrsv", "ctrtrs", "dasum", "daxpy",
"dbdsqr", "dcopy", "ddot", "dgbtrf", "dgemm", "dgemv",
"dger", "dgetrf", "dgetrs", "disnan", "dlabad", "dlacpy",
"dlae2", "dlaebz", "dlaed4", "dlaev2", "dlagtf", "dlagts",
"dlahqr", "dlange", "dlanst", "dlanv2", "dlapy2",
"dlapy3", "dlaqr0", "dlaqr1", "dlaqr3", "dlaqr4",
"dlarfg", "dlarfx", "dlarnv", "dlarra", "dlarrb",
"dlarrc", "dlarrd", "dlarrk", "dlarrv", "dlartg",
"dlaruv", "dlascl", "dlaset", "dlasq2", "dlasr", "dlasrt",
"dlassq", "dlaswp", "dlasy2", "dnrm2", "dpbtrf", "dpotrf",
"dpttrf", "drot", "dscal", "dstedc", "dsteqr", "dsterf",
"dswap", "dsymm", "dsymv", "dsyr", "dsyr2", "dsyr2k",
"dsyrk", "dsytrd", "dtbtrs", "dtrmm", "dtrmv", "dtrsm",
"dtrsv", "dtrtrs", "dzasum", "dznrm2", "dzsum1", "icamax",
"icmax1", "idamax", "ieeeck", "ilaenv", "isamax",
"izamax", "izmax1", "sasum", "saxpy", "sbdsqr", "scasum",
"scnrm2", "scopy", "scsum1", "sdot", "sgbtrf", "sgemm",
"sgemv", "sger", "sgetrf", "sgetrs", "sisnan", "slabad",
"slacpy", "slae2", "slaebz", "slaed4", "slaev2", "slagtf",
"slagts", "slahqr", "slange", "slanst", "slanv2",
"slapy2", "slapy3", "slaqr0", "slaqr1", "slaqr3",
"slaqr4", "slarfg", "slarfx", "slarnv", "slarra",
"slarrb", "slarrc", "slarrd", "slarrk", "slarrv",
"slartg", "slaruv", "slascl", "slaset", "slasq2", "slasr",
"slasrt", "slassq", "slaswp", "slasy2", "snrm2", "spbtrf",
"spotrf", "spttrf", "srot", "sscal", "sstedc", "ssteqr",
"ssterf", "sswap", "ssymm", "ssymv", "ssyr", "ssyr2",
"ssyr2k", "ssyrk", "ssytrd", "stbtrs", "strmm", "strmv",
"strsm", "strsv", "strtrs", "xerbla", "zaxpy", "zbdsqr",
"zcopy", "zdotc", "zdotu", "zdscal", "zgbtrf", "zgemm",
"zgemv", "zgerc", "zgeru", "zgetrf", "zgetrs", "zhemm",
"zhemv", "zher", "zher2", "zher2k", "zherk", "zhetrd",
"zlacgv", "zlacpy", "zladiv", "zlanhs", "zlarfg",
"zlartg", "zlaset", "zlasr", "zlassq", "zlaswp", "zpbtrf",
"zpotrf", "zpttrf", "zrot", "zscal", "zswap", "zsymm",
"zsyr2k", "zsyrk", "ztbtrs", "ztrmm", "ztrmv", "ztrsm",
"ztrsv", "ztrtrs"]
function fix_f77_line(line::AbstractString)
line1 = line[1:6]
line2 = line[7:end]
patterns = Dict(r"^\s+" => "", # leading spaces
r"\(\s+" => "(", # spaces after (
r",\s+" => ",", # space between arguments
r"\s+\)" => ")", # spaces before )
r"\s+$" => "") # trailing spaces
for (from, to) ∈ patterns
line2 = replace(line2, from => to)
end
return line1 * line2
end
function fix_f77_file(file::AbstractString)
(tmppath, tmpio) = mktemp()
open(file) do io
for line in eachline(io)
if length(line) > 69
for sym ∈ syms
if occursin(sym, line) || occursin(uppercase(sym), line)
# println(line)
line = fix_f77_line(line)
end
end
end
write(tmpio, line * "\n")
end
end
close(tmpio)
mv(tmppath, file, force=true)
end
function fix_all_f77_files(dir=".")
for (root, dirs, files) ∈ walkdir(dir)
for file ∈ filter(x -> occursin(r"\.[fF]$", x), files)
println("fixing ", joinpath(root, file))
fix_f77_file(joinpath(root, file))
end
end
nothing
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment