# Singular

#### D.8.3.11 triangL_solve

Procedure from library `solve.lib` (see solve_lib).

Usage:
triangL_solve(i [, p] ); i=ideal, p=integer,
p>0: gives precision of complex numbers in digits (default: p=30).

Assume:
the ground field has char 0; i is a zero-dimensional ideal.

Return:
ring `R` with the same number of variables, but with complex coefficients (and precision p). `R` comes with a list `rlist` of numbers, in which the complex roots of i are stored.

Note:
The procedure uses a triangular system (Lazard's Algorithm) computed from a standard basis of input ideal i to determine recursively all complex roots with Laguerre's algorithm.

Example:
 ```LIB "solve.lib"; ring r = 0,(x,y),lp; // compute the intersection points of two curves ideal s = x2 + y2 - 10, x2 + xy + 2y2 - 16; def R = triangL_solve(s,10); ==> ==> // 'triangL_solve' created a ring, in which a list rlist of numbers (the ==> // complex solutions) is stored. ==> // To access the list of complex solutions, type (if the name R was assig\ ned ==> // to the return value): ==> setring R; rlist; setring R; rlist; ==> [1]: ==> [1]: ==> 1 ==> [2]: ==> -3 ==> [2]: ==> [1]: ==> -2.8284271247 ==> [2]: ==> -1.4142135624 ==> [3]: ==> [1]: ==> 2.8284271247 ==> [2]: ==> 1.4142135624 ==> [4]: ==> [1]: ==> -1 ==> [2]: ==> 3 ```