<FUNCTION>
<NAME>gimp_vector2_inner_product</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector2 *vector1,GimpVector2 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_inner_product_val</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector2  vector1,GimpVector2 vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_cross_product</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2 *vector1,GimpVector2 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_cross_product_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2  vector1,GimpVector2  vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_length</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector2 *vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_length_val</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector2  vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_normalize</NAME>
<RETURNS>void  </RETURNS>
GimpVector2 *vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_normalize_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2  vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_mul</NAME>
<RETURNS>void  </RETURNS>
GimpVector2 *vector,gdouble      factor
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_mul_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2  vector,gdouble      factor
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_sub</NAME>
<RETURNS>void  </RETURNS>
GimpVector2 *result,GimpVector2 *vector1,GimpVector2 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_sub_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2  vector1,GimpVector2  vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_set</NAME>
<RETURNS>void  </RETURNS>
GimpVector2 *vector,gdouble      x,gdouble      y
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_new_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
gdouble      x,gdouble      y
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_add</NAME>
<RETURNS>void  </RETURNS>
GimpVector2 *result,GimpVector2 *vector1,GimpVector2 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_add_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2  vector1,GimpVector2  vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_neg</NAME>
<RETURNS>void  </RETURNS>
GimpVector2 *vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_neg_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2  vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_rotate</NAME>
<RETURNS>void  </RETURNS>
GimpVector2 *vector,gdouble      alpha
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector2_rotate_val</NAME>
<RETURNS>GimpVector2  </RETURNS>
GimpVector2 vector,gdouble      alpha
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_inner_product</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector3 *vector1,GimpVector3 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_inner_product_val</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector3  vector1,GimpVector3  vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_cross_product</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3 *vector1,GimpVector3 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_cross_product_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3  vector1,GimpVector3  vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_length</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector3 *vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_length_val</NAME>
<RETURNS>gdouble  </RETURNS>
GimpVector3  vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_normalize</NAME>
<RETURNS>void  </RETURNS>
GimpVector3 *vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_normalize_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3  vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_mul</NAME>
<RETURNS>void  </RETURNS>
GimpVector3 *vector,gdouble      factor
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_mul_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3  vector,gdouble      factor
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_sub</NAME>
<RETURNS>void  </RETURNS>
GimpVector3 *result,GimpVector3 *vector1,GimpVector3 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_sub_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3  vector1,GimpVector3  vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_set</NAME>
<RETURNS>void  </RETURNS>
GimpVector3 *vector,gdouble      x,gdouble      y,gdouble      z
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_new</NAME>
<RETURNS>GimpVector3  </RETURNS>
gdouble      x,gdouble      y,gdouble      z
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_add</NAME>
<RETURNS>void  </RETURNS>
GimpVector3 *result,GimpVector3 *vector1,GimpVector3 *vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_add_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3  vector1,GimpVector3  vector2
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_neg</NAME>
<RETURNS>void  </RETURNS>
GimpVector3 *vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_neg_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3  vector
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_rotate</NAME>
<RETURNS>void  </RETURNS>
GimpVector3 *vector,gdouble      alpha,gdouble      beta,gdouble      gamma
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector3_rotate_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
GimpVector3  vector,gdouble      alpha,gdouble      beta,gdouble      gamma
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector_2d_to_3d</NAME>
<RETURNS>void  </RETURNS>
gint         sx,gint         sy,gint         w,gint         h,gint         x,gint         y,GimpVector3 *vp,GimpVector3 *p
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector_2d_to_3d_val</NAME>
<RETURNS>GimpVector3  </RETURNS>
gint         sx,gint         sy,gint         w,gint         h,gint         x,gint         y,GimpVector3  vp,GimpVector3  p
</FUNCTION>
<FUNCTION>
<NAME>gimp_vector_3d_to_2d</NAME>
<RETURNS>void  </RETURNS>
gint         sx,gint         sy,gint         w,gint         h,gdouble     *x,gdouble     *y,GimpVector3 *vp,GimpVector3 *p
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_transform_point</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix,gdouble      x,gdouble      y,gdouble     *newx,gdouble     *newy
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_mult</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix1,GimpMatrix3  matrix2
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_identity</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_translate</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix,gdouble      x,gdouble      y
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_scale</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix,gdouble      x,gdouble      y
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_rotate</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix,gdouble      theta
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_xshear</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix,gdouble      amount
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_yshear</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix,gdouble      amount
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_determinant</NAME>
<RETURNS>gdouble  </RETURNS>
GimpMatrix3  matrix
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_invert</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  matrix,GimpMatrix3  matrix_inv
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_duplicate</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix3  src,GimpMatrix3  target
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_is_diagonal</NAME>
<RETURNS>gboolean  </RETURNS>
GimpMatrix3  matrix
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_is_identity</NAME>
<RETURNS>gboolean  </RETURNS>
GimpMatrix3  matrix
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix3_is_simple</NAME>
<RETURNS>gboolean  </RETURNS>
GimpMatrix3  matrix
</FUNCTION>
<FUNCTION>
<NAME>gimp_matrix4_to_deg</NAME>
<RETURNS>void  </RETURNS>
GimpMatrix4  matrix,gdouble     *a,gdouble     *b,gdouble     *c
</FUNCTION>
<MACRO>
<NAME>G_PI</NAME>
#define G_PI    3.14159265358979323846
</MACRO>
<MACRO>
<NAME>G_PI_2</NAME>
#define G_PI_2  1.57079632679489661923
</MACRO>
<MACRO>
<NAME>G_PI_4</NAME>
#define G_PI_4  0.78539816339744830962
</MACRO>
<MACRO>
<NAME>G_SQRT2</NAME>
#define G_SQRT2 1.4142135623730951
</MACRO>
<MACRO>
<NAME>G_MAXRAND</NAME>
#define G_MAXRAND G_MAXINT
</MACRO>
<MACRO>
<NAME>G_MAXRAND</NAME>
#define G_MAXRAND RAND_MAX
</MACRO>
<MACRO>
<NAME>RINT</NAME>
#define RINT(x) rint(x)
</MACRO>
<MACRO>
<NAME>RINT</NAME>
#define RINT(x) floor ((x) + 0.5)
</MACRO>
<MACRO>
<NAME>ROUND</NAME>
#define ROUND(x) ((int) ((x) + 0.5))
</MACRO>
<MACRO>
<NAME>SQR</NAME>
#define SQR(x) ((x) * (x))
</MACRO>
<MACRO>
<NAME>MAX255</NAME>
#define MAX255(a)  ((a) | (((a) & 256) - (((a) & 256) >> 8)))
</MACRO>
<MACRO>
<NAME>CLAMP0255</NAME>
#define CLAMP0255(a)  CLAMP(a,0,255)
</MACRO>
<MACRO>
<NAME>gimp_deg_to_rad</NAME>
#define gimp_deg_to_rad(angle) ((angle) * (2.0 * G_PI) / 360.0)
</MACRO>
<MACRO>
<NAME>gimp_rad_to_deg</NAME>
#define gimp_rad_to_deg(angle) ((angle) * 360.0 / (2.0 * G_PI))
</MACRO>
<MACRO>
<NAME>FINITE</NAME>
#define FINITE(x) _finite(x)
</MACRO>
<MACRO>
<NAME>FINITE</NAME>
#define FINITE(x) isfinite(x)
</MACRO>
<MACRO>
<NAME>FINITE</NAME>
#define FINITE(x) finite(x) 
</MACRO>
<TYPEDEF>
<NAME>GimpMatrix3[3][3]</NAME>
typedef gdouble GimpMatrix3[3][3];
</TYPEDEF>
<TYPEDEF>
<NAME>GimpMatrix4[4][4]</NAME>
typedef gdouble GimpMatrix4[4][4];
</TYPEDEF>
<STRUCT>
<NAME>GimpVector2</NAME>
</STRUCT>
<STRUCT>
<NAME>GimpVector3</NAME>
</STRUCT>
<STRUCT>
<NAME>GimpVector4</NAME>
</STRUCT>
<STRUCT>
<NAME>GimpVector2</NAME>
struct GimpVector2
{
  gdouble x, y;
};
</STRUCT>
<STRUCT>
<NAME>GimpVector3</NAME>
struct GimpVector3
{
  gdouble x, y, z;
};
</STRUCT>
<STRUCT>
<NAME>GimpVector4</NAME>
struct GimpVector4
{
  gdouble x, y, z, w;
};
</STRUCT>
