#ifndef _local_H
#define _local_H

DOUBLE local_sum             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_sum_const       (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_sub             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mult            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mult_const      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_div             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_div_const       (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_modulo_const    (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_cyclic          (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_average         (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_copy            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_persist         (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_threshold       (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_isbigger        (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_biggerof        (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_biggerfabsof    (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_const           (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_rectify         (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_invert          (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_abs             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_sign            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_round           (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_sqrt            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_power           (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_exp             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_log_pos         (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_cos             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_sin             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_tan             (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_atan            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_atan_to_2pi     (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_lin_01          (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_rand            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_rand_pos_neg    (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_as_rand         (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_gauss           (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_circ_gauss      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_gauss_pos       (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_rand_gibbs      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_rand_gibbs_01   (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_rand_exp        (DOUBLE *par, DOUBLE val1, DOUBLE val2);

DOUBLE local_tanh            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_bp_tanh         (DOUBLE *par, DOUBLE val1, DOUBLE val2);

DOUBLE local_sparse          (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_sparse_diff     (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_sparse_01       (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_zhang           (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_zhang_scale     (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_zhang2          (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_zhang_inv       (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_zhang2_inv      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_zhang_diff      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_zhang2_diff     (DOUBLE *par, DOUBLE val1, DOUBLE val2);

DOUBLE local_mean            (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_diff       (DOUBLE *par, DOUBLE val1, DOUBLE val2);

DOUBLE local_mean_01         (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_scale      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_scale_diff (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_bp_mean_01      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_01_inv     (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_01_diff    (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_01_d0      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_01_d1      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_01_d2      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_01_d3      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_mean_01_d4      (DOUBLE *par, DOUBLE val1, DOUBLE val2);

DOUBLE local_gibbs           (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_gibbs_01        (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_gibbs_01_2      (DOUBLE *par, DOUBLE val1, DOUBLE val2);
DOUBLE local_odds_01         (DOUBLE *par, DOUBLE val1, DOUBLE val2);

#endif