<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Vectors and matrices</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="GTS Library Reference Manual" HREF="book1.html"><LINK REL="UP" TITLE="Basic Macros, functions and data structures" HREF="c4.html"><LINK REL="PREVIOUS" TITLE="First In First Out heaps" HREF="gts-first-in-first-out-heaps.html"><LINK REL="NEXT" TITLE="Simple statistics" HREF="gts-simple-statistics.html"><STYLE TYPE="text/css" >.synopsis, .classsynopsis { background: #eeeeee; border: solid 1px #aaaaaa; padding: 0.5em; } .programlisting { background: #eeeeff; border: solid 1px #aaaaff; padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .navigation { background: #ffeeee; border: solid 1px #ffaaaa; margin-top: 0.5em; margin-bottom: 0.5em; } .navigation a { color: #770000; } .navigation a:visited { color: #550000; } .navigation .title { font-size: 200%; }</STYLE ></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><TABLE WIDTH="100%" CLASS="navigation" SUMMARY="Navigation header" CELLPADDING="2" CELLSPACING="2" ><TR VALIGN="middle" ><TD ><A ACCESSKEY="p" HREF="gts-first-in-first-out-heaps.html" ><IMG SRC="left.png" WIDTH="24" HEIGHT="24" BORDER="0" ALT="Prev"></A ></TD ><TD ><A ACCESSKEY="u" HREF="c4.html" ><IMG SRC="up.png" WIDTH="24" HEIGHT="24" BORDER="0" ALT="Up"></A ></TD ><TD ><A ACCESSKEY="h" HREF="book1.html" ><IMG SRC="home.png" WIDTH="24" HEIGHT="24" BORDER="0" ALT="Home"></A ></TD ><TH WIDTH="100%" align="center" >GTS Library Reference Manual</TH ><TD ><A ACCESSKEY="n" HREF="gts-simple-statistics.html" ><IMG SRC="right.png" WIDTH="24" HEIGHT="24" BORDER="0" ALT="Next"></A ></TD ></TR ></TABLE ><H1 ><A NAME="GTS-VECTORS-AND-MATRICES" ></A >Vectors and matrices</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN1157" ></A ><H2 >Name</H2 >Vectors and matrices -- simple operations on vectors and matrices.</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN1160" ></A ><H2 >Synopsis</H2 ><PRE CLASS="SYNOPSIS" > #include <gts.h> #define <A HREF="gts-vectors-and-matrices.html#GTS-VECTOR-INIT" >gts_vector_init</A > (v, p1, p2) #define <A HREF="gts-vectors-and-matrices.html#GTS-VECTOR-SCALAR" >gts_vector_scalar</A > (v1, v2) #define <A HREF="gts-vectors-and-matrices.html#GTS-VECTOR-CROSS" >gts_vector_cross</A > (C,A,B) #define <A HREF="gts-vectors-and-matrices.html#GTS-VECTOR-NORM" >gts_vector_norm</A > (v) #define <A HREF="gts-vectors-and-matrices.html#GTS-VECTOR-NORMALIZE" >gts_vector_normalize</A > (v) <GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-VECTOR-PRINT" >gts_vector_print</A > (<GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > v, <GTKDOCLINK HREF="FILE:CAPS" >FILE</GTKDOCLINK > *fptr); <GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-VECTOR4-PRINT" >gts_vector4_print</A > (<GTKDOCLINK HREF="GTSVECTOR4" >GtsVector4</GTKDOCLINK > v, <GTKDOCLINK HREF="FILE:CAPS" >FILE</GTKDOCLINK > *fptr); typedef <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >; <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-NEW" >gts_matrix_new</A > (<GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a00, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a01, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a02, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a03, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a10, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a11, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a12, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a13, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a20, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a21, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a22, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a23, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a30, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a31, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a32, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a33); <GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-ASSIGN" >gts_matrix_assign</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a00, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a01, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a02, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a03, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a10, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a11, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a12, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a13, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a20, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a21, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a22, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a23, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a30, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a31, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a32, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a33); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-ZERO" >gts_matrix_zero</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-IDENTITY" >gts_matrix_identity</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-PROJECTION" >gts_matrix_projection</A > (<A HREF="gts-triangles.html#GTSTRIANGLE" >GtsTriangle</A > *t); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-SCALE" >gts_matrix_scale</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > s); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-TRANSLATE" >gts_matrix_translate</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > t); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-ROTATE" >gts_matrix_rotate</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > r, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > angle); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-TRANSPOSE" >gts_matrix_transpose</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m); <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-DETERMINANT" >gts_matrix_determinant</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-INVERSE" >gts_matrix_inverse</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX3-INVERSE" >gts_matrix3_inverse</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m); <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-PRODUCT" >gts_matrix_product</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m1, <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m2); <GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-COMPATIBLE-ROW" >gts_matrix_compatible_row</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *A, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > b, <GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > n, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > A1, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > b1); <GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-QUADRATIC-OPTIMIZATION" >gts_matrix_quadratic_optimization</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *A, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > b, <GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > n, <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *H, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > c); <GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-PRINT" >gts_matrix_print</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="FILE:CAPS" >FILE</GTKDOCLINK > *fptr); <GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-DESTROY" >gts_matrix_destroy</A > (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN1273" ></A ><H2 >Description</H2 ><P >The functions described in this section allow to perform simple transformations on point coordinates. In particular projection onto a plane passing through the vertices of a given triangle or quadratic optimization problems.</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN1276" ></A ><H2 >Details</H2 ><DIV CLASS="REFSECT2" ><A NAME="AEN1278" ></A ><H3 ><A NAME="GTS-VECTOR-INIT" ></A >gts_vector_init()</H3 ><PRE CLASS="PROGRAMLISTING" >#define gts_vector_init(v, p1, p2)</PRE ><P >Given two points <CODE CLASS="PARAMETER" >p1</CODE > and <CODE CLASS="PARAMETER" >p2</CODE >, fills <CODE CLASS="PARAMETER" >v</CODE > with the coordinates of vector <CODE CLASS="PARAMETER" >p1</CODE >-><CODE CLASS="PARAMETER" >p2</CODE >.</P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1291"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >v</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1298"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >p1</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >a <A HREF="gts-points.html#GTSPOINT" ><SPAN CLASS="TYPE" >GtsPoint</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1305"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >p2</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >another <A HREF="gts-points.html#GTSPOINT" ><SPAN CLASS="TYPE" >GtsPoint</SPAN ></A >. </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1312" ></A ><H3 ><A NAME="GTS-VECTOR-SCALAR" ></A >gts_vector_scalar()</H3 ><PRE CLASS="PROGRAMLISTING" >#define gts_vector_scalar(v1, v2)</PRE ><P >Given two vectors <CODE CLASS="PARAMETER" >v1</CODE > and <CODE CLASS="PARAMETER" >v2</CODE > evaluates to the scalar product <CODE CLASS="PARAMETER" >v1</CODE >.<CODE CLASS="PARAMETER" >v2</CODE >.</P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1324"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >v1</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1331"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >v2</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >another <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >. </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1338" ></A ><H3 ><A NAME="GTS-VECTOR-CROSS" ></A >gts_vector_cross()</H3 ><PRE CLASS="PROGRAMLISTING" >#define gts_vector_cross(C,A,B)</PRE ><P >Given two vectors <CODE CLASS="PARAMETER" >A</CODE > and <CODE CLASS="PARAMETER" >B</CODE > fills <CODE CLASS="PARAMETER" >C</CODE > with the coordinates of the cross-product <CODE CLASS="PARAMETER" >A</CODE >^<CODE CLASS="PARAMETER" >B</CODE >.</P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1351"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >C</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1358"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >A</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >another <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1365"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >B</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >and another. </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1370" ></A ><H3 ><A NAME="GTS-VECTOR-NORM" ></A >gts_vector_norm()</H3 ><PRE CLASS="PROGRAMLISTING" >#define gts_vector_norm(v)</PRE ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1378"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >v</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1383" ></A ><H3 ><A NAME="GTS-VECTOR-NORMALIZE" ></A >gts_vector_normalize()</H3 ><PRE CLASS="PROGRAMLISTING" >#define gts_vector_normalize(v)</PRE ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1391"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >v</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1396" ></A ><H3 ><A NAME="GTS-VECTOR-PRINT" ></A >gts_vector_print ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > gts_vector_print (<GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > v, <GTKDOCLINK HREF="FILE:CAPS" >FILE</GTKDOCLINK > *fptr);</PRE ><P >Print <CODE CLASS="PARAMETER" >s</CODE > to file <CODE CLASS="PARAMETER" >fptr</CODE >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1410"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >v</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1417"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >fptr</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a file descriptor.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1422" ></A ><H3 ><A NAME="GTS-VECTOR4-PRINT" ></A >gts_vector4_print ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > gts_vector4_print (<GTKDOCLINK HREF="GTSVECTOR4" >GtsVector4</GTKDOCLINK > v, <GTKDOCLINK HREF="FILE:CAPS" >FILE</GTKDOCLINK > *fptr);</PRE ><P >Print <CODE CLASS="PARAMETER" >v</CODE > to file <CODE CLASS="PARAMETER" >fptr</CODE >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1436"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >v</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <GTKDOCLINK HREF="GTSVECTOR4" ><SPAN CLASS="TYPE" >GtsVector4</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1443"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >fptr</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a file descriptor.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1448" ></A ><H3 ><A NAME="GTSMATRIX" ></A >GtsMatrix</H3 ><PRE CLASS="PROGRAMLISTING" >typedef GtsVector4 GtsMatrix;</PRE ><P >A <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > is a 3x3 matrix.</P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1457" ></A ><H3 ><A NAME="GTS-MATRIX-NEW" ></A >gts_matrix_new ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_new (<GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a00, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a01, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a02, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a03, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a10, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a11, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a12, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a13, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a20, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a21, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a22, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a23, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a30, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a31, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a32, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a33);</PRE ><P >Allocates memory and initializes a new <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1485"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a00</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1490"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a01</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1495"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a02</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1500"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a03</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][3].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1505"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a10</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1510"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a11</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1515"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a12</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1520"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a13</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][3].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1525"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a20</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1530"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a21</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1535"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a22</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1540"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a23</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][3].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1545"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a30</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1550"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a31</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1555"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a32</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1560"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a33</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][3].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1565"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a pointer to the newly created <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1572" ></A ><H3 ><A NAME="GTS-MATRIX-ASSIGN" ></A >gts_matrix_assign ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > gts_matrix_assign (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a00, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a01, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a02, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a03, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a10, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a11, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a12, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a13, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a20, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a21, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a22, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a23, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a30, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a31, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a32, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > a33);</PRE ><P >Set values of matrix elements.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1599"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1606"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a00</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1611"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a01</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1616"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a02</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1621"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a03</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [0][3].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1626"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a10</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1631"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a11</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1636"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a12</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1641"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a13</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [1][3].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1646"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a20</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1651"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a21</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1656"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a22</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1661"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a23</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [2][3].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1666"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a30</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][0].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1671"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a31</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][1].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1676"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a32</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][2].</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1681"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >a33</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > element [3][3].</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1686" ></A ><H3 ><A NAME="GTS-MATRIX-ZERO" ></A >gts_matrix_zero ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_zero (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ><P >Initializes <CODE CLASS="PARAMETER" >m</CODE > to zeros. Allocates a matrix if <CODE CLASS="PARAMETER" >m</CODE > is <TT CLASS="LITERAL" >NULL</TT >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1700"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > or $NULL.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1707"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the zero'ed matrix.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1712" ></A ><H3 ><A NAME="GTS-MATRIX-IDENTITY" ></A >gts_matrix_identity ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_identity (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ><P >Initializes <CODE CLASS="PARAMETER" >m</CODE > to an identity matrix. Allocates a matrix if <CODE CLASS="PARAMETER" >m</CODE > is <TT CLASS="LITERAL" >NULL</TT >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1726"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > or <TT CLASS="LITERAL" >NULL</TT >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1734"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the identity matrix.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1739" ></A ><H3 ><A NAME="GTS-MATRIX-PROJECTION" ></A >gts_matrix_projection ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_projection (<A HREF="gts-triangles.html#GTSTRIANGLE" >GtsTriangle</A > *t);</PRE ><P >Creates a new <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > representing the projection onto a plane of normal given by <CODE CLASS="PARAMETER" >t</CODE >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1753"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >t</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-triangles.html#GTSTRIANGLE" ><SPAN CLASS="TYPE" >GtsTriangle</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1760"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a pointer to the newly created <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1767" ></A ><H3 ><A NAME="GTS-MATRIX-SCALE" ></A >gts_matrix_scale ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_scale (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > s);</PRE ><P >Initializes <CODE CLASS="PARAMETER" >m</CODE > to a scaling matrix for <CODE CLASS="PARAMETER" >s</CODE >. Allocates a matrix if <CODE CLASS="PARAMETER" >m</CODE > is <TT CLASS="LITERAL" >NULL</TT >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1783"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > or <TT CLASS="LITERAL" >NULL</TT >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1791"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >s</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the scaling vector.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1796"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the scaling matrix.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1801" ></A ><H3 ><A NAME="GTS-MATRIX-TRANSLATE" ></A >gts_matrix_translate ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_translate (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > t);</PRE ><P >Initializes <CODE CLASS="PARAMETER" >m</CODE > to a translation matrix for <CODE CLASS="PARAMETER" >t</CODE >. Allocates a new matrix if <CODE CLASS="PARAMETER" >m</CODE > is <TT CLASS="LITERAL" >NULL</TT >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1817"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > or <TT CLASS="LITERAL" >NULL</TT >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1825"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >t</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the translation vector.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1830"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the translation matix.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1835" ></A ><H3 ><A NAME="GTS-MATRIX-ROTATE" ></A >gts_matrix_rotate ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_rotate (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > r, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > angle);</PRE ><P >Initializes <CODE CLASS="PARAMETER" >m</CODE > to a rotation matrix around <CODE CLASS="PARAMETER" >r</CODE > by <CODE CLASS="PARAMETER" >angle</CODE >. Allocates a new matrix if <CODE CLASS="PARAMETER" >m</CODE > is <TT CLASS="LITERAL" >NULL</TT >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1853"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > or <TT CLASS="LITERAL" >NULL</TT >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1861"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >r</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the rotation axis.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1866"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >angle</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the angle (in radians) to rotate by.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1871"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the rotation matrix.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1876" ></A ><H3 ><A NAME="GTS-MATRIX-TRANSPOSE" ></A >gts_matrix_transpose ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_transpose (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1887"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1894"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a pointer to a newly created <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > transposed of <CODE CLASS="PARAMETER" >m</CODE >.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1902" ></A ><H3 ><A NAME="GTS-MATRIX-DETERMINANT" ></A >gts_matrix_determinant ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > gts_matrix_determinant (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1913"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1920"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the value of det(<CODE CLASS="PARAMETER" >m</CODE >).</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1926" ></A ><H3 ><A NAME="GTS-MATRIX-INVERSE" ></A >gts_matrix_inverse ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_inverse (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1937"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1944"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a pointer to a newly created <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > inverse of <CODE CLASS="PARAMETER" >m</CODE > or <TT CLASS="LITERAL" >NULL</TT > if <CODE CLASS="PARAMETER" >m</CODE > is not invertible.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1954" ></A ><H3 ><A NAME="GTS-MATRIX3-INVERSE" ></A >gts_matrix3_inverse ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix3_inverse (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1965"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a 3x3 <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1972"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a pointer to a newly created 3x3 <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A > inverse of <CODE CLASS="PARAMETER" >m</CODE > or <TT CLASS="LITERAL" >NULL</TT > if <CODE CLASS="PARAMETER" >m</CODE > is not invertible.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN1982" ></A ><H3 ><A NAME="GTS-MATRIX-PRODUCT" ></A >gts_matrix_product ()</H3 ><PRE CLASS="PROGRAMLISTING" ><A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A >* gts_matrix_product (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m1, <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m2);</PRE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN1994"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m1</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2001"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m2</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > another <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2008"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a new <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >, product of <CODE CLASS="PARAMETER" >m1</CODE > and <CODE CLASS="PARAMETER" >m2</CODE >.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN2017" ></A ><H3 ><A NAME="GTS-MATRIX-COMPATIBLE-ROW" ></A >gts_matrix_compatible_row ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > gts_matrix_compatible_row (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *A, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > b, <GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > n, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > A1, <GTKDOCLINK HREF="GDOUBLE" >gdouble</GTKDOCLINK > b1);</PRE ><P >Given a system of <CODE CLASS="PARAMETER" >n</CODE > constraints <CODE CLASS="PARAMETER" >A.x</CODE >=<CODE CLASS="PARAMETER" >b</CODE > adds to it the compatible constraints defined by <CODE CLASS="PARAMETER" >A1.x</CODE >=<CODE CLASS="PARAMETER" >b1</CODE >. The compatibility is determined by insuring that the resulting system is well-conditioned (see Lindstrom and Turk (1998, 1999)).</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2037"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >A</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2044"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >b</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2051"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >n</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the number of previous constraints of <CODE CLASS="PARAMETER" >A.x</CODE >=<CODE CLASS="PARAMETER" >b</CODE >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2058"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >A1</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2065"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >b1</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2072"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the number of constraints of the resulting system. </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN2077" ></A ><H3 ><A NAME="GTS-MATRIX-QUADRATIC-OPTIMIZATION" ></A >gts_matrix_quadratic_optimization ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > gts_matrix_quadratic_optimization (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *A, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > b, <GTKDOCLINK HREF="GUINT" >guint</GTKDOCLINK > n, <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *H, <GTKDOCLINK HREF="GTSVECTOR" >GtsVector</GTKDOCLINK > c);</PRE ><P >Solve a quadratic optimization problem: Given a quadratic objective function f which can be written as: f(x) = x^t.<CODE CLASS="PARAMETER" >H.x</CODE > + <CODE CLASS="PARAMETER" >c</CODE >^t.x + k, where <CODE CLASS="PARAMETER" >H</CODE > is the symmetric positive definite Hessian of f and k is a constant, find the minimum of f subject to the set of <CODE CLASS="PARAMETER" >n</CODE > prior linear constraints, defined by the first <CODE CLASS="PARAMETER" >n</CODE > rows of <CODE CLASS="PARAMETER" >A</CODE > and <CODE CLASS="PARAMETER" >b</CODE > (<CODE CLASS="PARAMETER" >A.x</CODE > = <CODE CLASS="PARAMETER" >b</CODE >). The new constraints given by the minimization are added to <CODE CLASS="PARAMETER" >A</CODE > and <CODE CLASS="PARAMETER" >b</CODE > only if they are linearly independent as determined by <A HREF="gts-vectors-and-matrices.html#GTS-MATRIX-COMPATIBLE-ROW" ><CODE CLASS="FUNCTION" >gts_matrix_compatible_row()</CODE ></A >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2105"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >A</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2112"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >b</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2119"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >n</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the number of constraints (must be smaller than 3).</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2124"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >H</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a symmetric positive definite Hessian.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2129"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >c</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <GTKDOCLINK HREF="GTSVECTOR" ><SPAN CLASS="TYPE" >GtsVector</SPAN ></GTKDOCLINK >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2136"><SPAN STYLE="white-space: nowrap" ><SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >Returns</I ></SPAN > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > the new number of constraints defined by <CODE CLASS="PARAMETER" >A</CODE > and <CODE CLASS="PARAMETER" >b</CODE >.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN2143" ></A ><H3 ><A NAME="GTS-MATRIX-PRINT" ></A >gts_matrix_print ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > gts_matrix_print (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m, <GTKDOCLINK HREF="FILE:CAPS" >FILE</GTKDOCLINK > *fptr);</PRE ><P >Print <CODE CLASS="PARAMETER" >m</CODE > to file <CODE CLASS="PARAMETER" >fptr</CODE >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2157"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2164"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >fptr</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a file descriptor.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN2169" ></A ><H3 ><A NAME="GTS-MATRIX-DESTROY" ></A >gts_matrix_destroy ()</H3 ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="VOID" >void</GTKDOCLINK > gts_matrix_destroy (<A HREF="gts-vectors-and-matrices.html#GTSMATRIX" >GtsMatrix</A > *m);</PRE ><P >Free all the memory allocated for <CODE CLASS="PARAMETER" >m</CODE >.</P ><P ></P ><P ></P ><TABLE CLASS="variablelist" BORDER="0" CELLSPACING="0" CELLPADDING="4" ><TBODY ><TR ><TD ALIGN="LEFT" VALIGN="TOP" ><A NAME="AEN2181"><SPAN STYLE="white-space: nowrap" ><CODE CLASS="PARAMETER" >m</CODE > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > a <A HREF="gts-vectors-and-matrices.html#GTSMATRIX" ><SPAN CLASS="TYPE" >GtsMatrix</SPAN ></A >.</P ></TD ></TR ></TBODY ></TABLE ></DIV ></DIV ><TABLE CLASS="navigation" WIDTH="100%" SUMMARY="Navigation footer" CELLPADDING="2" CELLSPACING="2" ><TR VALIGN="middle" ><TD ALIGN="left" ><A ACCESSKEY="p" HREF="gts-first-in-first-out-heaps.html" ><B ><<< First In First Out heaps</B ></A ></TD ><TD ALIGN="right" ><A ACCESSKEY="n" HREF="gts-simple-statistics.html" ><B >Simple statistics >>></B ></A ></TD ></TR ></TABLE ></BODY ></HTML >