static void noir_calc_weights(const long dims[3], complex float* dst) { unsigned int flags = 0; for (int i = 0; i < 3; i++) if (1 != dims[i]) flags = MD_SET(flags, i); klaplace(3, dims, flags, dst); md_zsmul(3, dims, dst, dst, 220.); md_zsadd(3, dims, dst, dst, 1.); md_zspow(3, dims, dst, dst, -16.); // 1 + 222. \Laplace^16 }
int main_spow(int argc, char* argv[argc]) { mini_cmdline(argc, argv, 3, usage_str, help_str); complex float expo; if (0 != parse_cfl(&expo, argv[1])) { fprintf(stderr, "ERROR: exponent %s is not a number.\n", argv[1]); exit(1); } const int N = DIMS; long dims[N]; complex float* idata = load_cfl(argv[2], N, dims); complex float* odata = create_cfl(argv[3], N, dims); md_zspow(N, dims, odata, idata, expo); unmap_cfl(N, dims, idata); unmap_cfl(N, dims, odata); exit(0); }