/usr/include/bart/iter/iter2.h is in libbart-dev 0.4.02-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | /* Copyright 2013-2017. The Regents of the University of California.
* Copyright 2016-2017. Martin Uecker.
* All rights reserved. Use of this source code is governed by
* a BSD-style license which can be found in the LICENSE file.
*/
#ifndef __ITER2_H
#define __ITER2_H
#include "misc/cppwrap.h"
#include "misc/types.h"
struct linop_s;
struct operator_s;
struct operator_p_s;
#ifndef ITER_OP_DATA_S
#define ITER_OP_DATA_S
typedef struct iter_op_data_s { TYPEID* TYPEID; } iter_op_data;
#endif
struct iter_op_op {
INTERFACE(iter_op_data);
const struct operator_s* op;
};
extern DEF_TYPEID(iter_op_op);
struct iter_op_p_op {
INTERFACE(iter_op_data);
const struct operator_p_s* op;
};
extern DEF_TYPEID(iter_op_p_op);
extern void operator_iter(iter_op_data* data, float* dst, const float* src);
extern void operator_p_iter(iter_op_data* data, float rho, float* dst, const float* src);
// the temporay copy is needed if used in loops
#define STRUCT_TMP_COPY(x) ({ __typeof(x) __foo = (x); __typeof(__foo)* __foo2 = alloca(sizeof(__foo)); *__foo2 = __foo; __foo2; })
#define OPERATOR2ITOP(op) (struct iter_op_s){ (NULL == op) ? NULL : operator_iter, CAST_UP(STRUCT_TMP_COPY(((struct iter_op_op){ { &TYPEID(iter_op_op) }, op }))) }
#define OPERATOR_P2ITOP(op) (struct iter_op_p_s){ (NULL == op) ? NULL : operator_p_iter, CAST_UP(STRUCT_TMP_COPY(((struct iter_op_p_op){ { &TYPEID(iter_op_p_op) }, op }))) }
#ifndef ITER_CONF_S
#define ITER_CONF_S
typedef struct iter_conf_s { TYPEID* TYPEID; } iter_conf;
#endif
struct iter_monitor_s;
typedef void (italgo_fun2_f)(iter_conf* conf,
const struct operator_s* normaleq_op,
unsigned int D,
const struct operator_p_s* prox_ops[__VLA2(D)],
const struct linop_s* ops[__VLA2(D)],
const float* biases[__VLA2(D)],
const struct operator_p_s* xupdate_op,
long size, float* image, const float* image_adj,
struct iter_monitor_s* monitor);
typedef italgo_fun2_f* italgo_fun2_t;
italgo_fun2_f iter2_conjgrad;
italgo_fun2_f iter2_ist;
italgo_fun2_f iter2_fista;
italgo_fun2_f iter2_chambolle_pock;
italgo_fun2_f iter2_admm;
italgo_fun2_f iter2_pocs;
italgo_fun2_f iter2_niht;
// use with iter_call_s from iter.h as _conf
italgo_fun2_f iter2_call_iter;
struct iter2_call_s {
INTERFACE(iter_conf);
italgo_fun2_t fun;
iter_conf* _conf;
};
extern DEF_TYPEID(iter2_call_s);
#include "misc/cppwrap.h"
#endif
|