1 #ifndef __GO_QUAD_H 2 #define __GO_QUAD_H 3 4 #include <glib.h> 5 6 G_BEGIN_DECLS 7 8 struct GOQuad_ { 9 double h; 10 double l; 11 }; 12 13 gboolean go_quad_functional (void); 14 void *go_quad_start (void); 15 void go_quad_end (void *state); 16 17 void go_quad_init (GOQuad *res, double h); 18 19 double go_quad_value (const GOQuad *a); 20 void go_quad_add (GOQuad *res, const GOQuad *a, const GOQuad *b); 21 void go_quad_sub (GOQuad *res, const GOQuad *a, const GOQuad *b); 22 void go_quad_mul (GOQuad *res, const GOQuad *a, const GOQuad *b); 23 void go_quad_div (GOQuad *res, const GOQuad *a, const GOQuad *b); 24 void go_quad_sqrt (GOQuad *res, const GOQuad *a); 25 void go_quad_floor (GOQuad *res, const GOQuad *a); 26 void go_quad_pow (GOQuad *res, double *exp2, const GOQuad *x, const GOQuad *y); 27 void go_quad_exp (GOQuad *res, double *exp2, const GOQuad *a); 28 void go_quad_expm1 (GOQuad *res, const GOQuad *a); 29 void go_quad_log (GOQuad *res, const GOQuad *a); 30 void go_quad_hypot (GOQuad *res, const GOQuad *a, const GOQuad *b); 31 32 void go_quad_sin (GOQuad *res, const GOQuad *a); 33 void go_quad_sinpi (GOQuad *res, const GOQuad *a); 34 void go_quad_asin (GOQuad *res, const GOQuad *a); 35 void go_quad_cos (GOQuad *res, const GOQuad *a); 36 void go_quad_cospi (GOQuad *res, const GOQuad *a); 37 void go_quad_acos (GOQuad *res, const GOQuad *a); 38 void go_quad_atan2 (GOQuad *res, const GOQuad *y, const GOQuad *x); 39 void go_quad_atan2pi (GOQuad *res, const GOQuad *y, const GOQuad *x); 40 41 void go_quad_mul12 (GOQuad *res, double x, double y); 42 43 void go_quad_dot_product (GOQuad *res, const GOQuad *a, const GOQuad *b, int n); 44 45 void go_quad_constant8 (GOQuad *res, const guint8 *data, gsize n, double base, double scale); 46 47 #ifndef GO_QUAD_IMPL 48 #define GO_QUAD_IMPL const 49 #endif 50 51 GO_VAR_DECL const GOQuad go_quad_zero; 52 GO_VAR_DECL const GOQuad go_quad_one; 53 GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_pi; 54 GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_2pi; 55 GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_e; 56 GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_ln2; 57 GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_sqrt2; 58 GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_euler; 59 60 #ifdef GOFFICE_WITH_LONG_DOUBLE 61 struct GOQuadl_ { 62 long double h; 63 long double l; 64 }; 65 66 gboolean go_quad_functionall (void); 67 void *go_quad_startl (void); 68 void go_quad_endl (void *state); 69 70 void go_quad_initl (GOQuadl *res, long double h); 71 72 long double go_quad_valuel (const GOQuadl *a); 73 void go_quad_addl (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); 74 void go_quad_subl (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); 75 void go_quad_mull (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); 76 void go_quad_divl (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); 77 void go_quad_sqrtl (GOQuadl *res, const GOQuadl *a); 78 void go_quad_floorl (GOQuadl *res, const GOQuadl *a); 79 void go_quad_powl (GOQuadl *res, long double *exp2, const GOQuadl *x, const GOQuadl *y); 80 void go_quad_expl (GOQuadl *res, long double *exp2, const GOQuadl *a); 81 void go_quad_expm1l (GOQuadl *res, const GOQuadl *a); 82 void go_quad_logl (GOQuadl *res, const GOQuadl *a); 83 void go_quad_hypotl (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); 84 85 void go_quad_sinl (GOQuadl *res, const GOQuadl *a); 86 void go_quad_sinpil (GOQuadl *res, const GOQuadl *a); 87 void go_quad_asinl (GOQuadl *res, const GOQuadl *a); 88 void go_quad_cosl (GOQuadl *res, const GOQuadl *a); 89 void go_quad_cospil (GOQuadl *res, const GOQuadl *a); 90 void go_quad_acosl (GOQuadl *res, const GOQuadl *a); 91 void go_quad_atan2l (GOQuadl *res, const GOQuadl *y, const GOQuadl *x); 92 void go_quad_atan2pil (GOQuadl *res, const GOQuadl *y, const GOQuadl *x); 93 94 void go_quad_mul12l (GOQuadl *res, long double x, long double y); 95 96 void go_quad_dot_productl (GOQuadl *res, 97 const GOQuadl *a, const GOQuadl *b, int n); 98 99 void go_quad_constant8l (GOQuadl *res, const guint8 *data, gsize n, long double base, long double scale); 100 101 GO_VAR_DECL const GOQuadl go_quad_zerol; 102 GO_VAR_DECL const GOQuadl go_quad_onel; 103 GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_pil; 104 GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_2pil; 105 GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_el; 106 GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_ln2l; 107 GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_sqrt2l; 108 GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_eulerl; 109 110 #endif 111 112 G_END_DECLS 113 114 #endif 115