In documentation for lreduce and rreduce, supply second argument as an explicit list
[maxima.git] / share / raddenest / raddenest.texi
blobe641ad813e2d219eb0006fc1bb9470be713fdefd
1 \input texinfo
3 @setchapternewpage off
5 @setfilename raddenest.info
6 @settitle Package raddenest
8 @ifinfo
9 @macro var {expr}
10 <\expr\>
11 @end macro
12 @end ifinfo
14 @dircategory Mathematics/Maxima
15 @direntry
16 * raddenest: (maxima/raddenest).           Maxima share package raddenest for de-nesting radicals.
17 @end direntry
19 @node Top, Functions and variables for package raddenest, (dir), (dir)
20 @top
21 @menu
22 * Functions and variables for package raddenest::
23 * Function and variable index::
24 @end menu
25 @chapter Package raddenest
27 @node Functions and variables for package raddenest, Function and variable index, Top, Top
28 @section Functions and variables for package raddenest
30 @anchor{raddenest}
31 @deffn {Function} raddenest (@var{expr})
33 Denests different classes of nested radical expressions appearing as
34 subexpressions in @var{expr}. Most of the implemented algorithms are specific
35 to square roots, but some handle higher roots.
37 @code{raddenest} is able to denest some or all of the denestable
38 expressions of the following types:
40 @enumerate
41 @item
42 square roots of sums of multiple unnested square roots;
43 @item
44 @iftex
45 @tex
46 $\sqrt{a+b\sqrt{r}}$
47 @end tex
48 @end iftex
49 @ifnottex
50 @math{sqrt(a + b*sqrt(r))}
51 @end ifnottex
52 where @var{a}, @var{b}, and @var{r} are linear
53 combinations of square roots of positive rationals;
54 @item
55 expressions of the general form
56 @iftex
57 @tex
58 $\sqrt{a+b\sqrt{r}}$
59 @end tex
60 @end iftex
61 @ifnottex
62 @math{sqrt(a + b*sqrt(r))}
63 @end ifnottex
64 are denested numerically (using square roots or fourth roots) or, in some
65 cases, symbolically (assumptions allowing);
66 @item
67 @iftex
68 @tex
69 $(a+b\sqrt{r})^{1\over n}$
70 @end tex
71 @end iftex
72 @ifnottex
73 @math{(a+b*sqrt(r))^(1/n)}
74 @end ifnottex
75 with rational @var{a}, @var{b}, @var{r} (@var{r} positive) and integer
76 @var{n};
77 @item
78 @iftex
79 @tex
80 $\sqrt{a^{1\over3}+b^{1\over3}}$
81 @end tex
82 @end iftex
83 @ifnottex
84 @math{sqrt(a^(1/3)+b^(1/3))}
85 @end ifnottex
86 with rational @var{a} and @var{b}.
87 @end enumerate
89 In particular, all expressions denested by @code{sqrtdenest} are also denested
90 by @code{raddenest}.
92 Interpretation of radical expressions:
94 The results given by @code{raddenest} are consistent with Maxima's default interpretation for
95 @var{n}-th roots of a real:
97 @itemize
98 @item
99 @iftex
100 @tex
101 $a^{1\over n}$
102 @end tex
103 @end iftex
104 @ifnottex
105 @math{a^(1/n)}
106 @end ifnottex
107 with positive @var{a} corresponds to the positive real branch;
108 @item
109 @iftex
110 @tex
111 $\sqrt{a}$
112 @end tex
113 @end iftex
114 @ifnottex
115 @math{sqrt(a)}
116 @end ifnottex
117 with negative @var{a} corresponds to
118 @iftex
119 @tex
120 $i\sqrt{-a}$
121 @end tex
122 @end iftex
123 @ifnottex
124 @math{%i*sqrt(-a)}
125 @end ifnottex
127 @item
128 @iftex
129 @tex
130 $a^{1\over3}$
131 @end tex
132 @end iftex
133 @ifnottex
134 @math{a^(1/3)}
135 @end ifnottex
136 with negative @var{a} is interpreted using the real branch of
137 the cube root if @code{@var{domain}=real}; with @code{@var{domain}=complex}
138 subexpressions involving roots other than square roots are left unchanged.
139 @end itemize
141 Examples:
143 @c ===beg===
144 @c load (raddenest)$
145 @c sqrt(sqrt(16+2*sqrt(55-10*sqrt(29))-2*sqrt(29))-sqrt(5))$
146 @c raddenest(%);
147 @c sqrt(1+1/(7+4*sqrt(3)));
148 @c raddenest(%);
149 @c sqrt(8*sqrt(2)+2*sqrt(5)-18);
150 @c raddenest(%);
151 @c raddenest(sqrt(5^(1/3)-4^(1/3)));
152 @c raddenest((41-29*sqrt(2))^(1/5));
153 @c assume(y>0)$
154 @c raddenest(sqrt(9*y+6*x^2*sqrt(y)+x^4));
155 @c a: (2-sqrt(5))^(1/3)$
156 @c raddenest(a);
157 @c raddenest(a), domain:'complex;
158 @c ===end===
159 @example
160 (%i1) load (raddenest)$
161 (%i2) sqrt(sqrt(16+2*sqrt(55-10*sqrt(29))-2*sqrt(29))-sqrt(5))$
162 @group
163 (%i3) raddenest(%);
164                                        1/4
165 (%o3)                 (11 - 2 sqrt(29))
166 @end group
167 @group
168 (%i4) sqrt(1+1/(7+4*sqrt(3)));
169                                 1
170 (%o4)                sqrt(------------- + 1)
171                           4 sqrt(3) + 7
172 @end group
173 @group
174 (%i5) raddenest(%);
175 (%o5)                   sqrt(6) - sqrt(2)
176 @end group
177 @group
178 (%i6) sqrt(8*sqrt(2)+2*sqrt(5)-18);
179                                      7/2
180 (%o6)              sqrt(2 sqrt(5) + 2    - 18)
181 @end group
182 @group
183 (%i7) raddenest(%);
184 (%o7)       ((- sqrt(10)) + sqrt(5) + sqrt(2) + 1) %i
185 @end group
186 @group
187 (%i8) raddenest(sqrt(5^(1/3)-4^(1/3)));
188                          1/3      1/3    1/3
189                     (- 25   ) + 20    + 2
190 (%o8)               ------------------------
191                                3
192 @end group
193 @group
194 (%i9) raddenest((41-29*sqrt(2))^(1/5));
195 (%o9)                      1 - sqrt(2)
196 @end group
197 (%i10) assume(y>0)$
198 @group
199 (%i11) raddenest(sqrt(9*y+6*x^2*sqrt(y)+x^4));
200                                       2
201 (%o11)                   3 sqrt(y) + x
202 @end group
203 (%i12) a: (2-sqrt(5))^(1/3)$
204 @group
205 (%i13) raddenest(a);
206                            1   sqrt(5)
207 (%o13)                     - - -------
208                            2      2
209 @end group
210 @group
211 (%i14) raddenest(a), domain:'complex;
212                                      1/3
213 (%o14)                  (2 - sqrt(5))
214 @end group
215 @end example
217 Limitations:
219 @code{raddenest} may in some cases only lower the index of a root without
220 actually decreasing the absolute nesting depth of @var{expr}:
222 @c ===beg===
223 @c load (raddenest)$
224 @c raddenest((5*sqrt(2)+7)^(1/6));
225 @c ===end===
226 @example
227 (%i1) load (raddenest)$
228 @group
229 (%i2) raddenest((5*sqrt(2)+7)^(1/6));
230 (%o2)                   sqrt(sqrt(2) + 1)
231 @end group
232 @end example
234 References:
236 @enumerate
237 @item
238 Allan Borodin, Ronald Fagin, John E. Hopcroft, and Martin Tompa:
239 @cite{Decreasing the Nesting Depth of Expressions Involving Square Roots}
240 J. Symbolic Computation (1985) 1, 169-188@*
241 @url{http://researcher.watson.ibm.com/researcher/files/us-fagin/symb85.pdf}
242 @item
243 David J. Jeffrey and Albert D. Rich:
244 @cite{Simplifying Square Roots of Square Roots by Denesting}
245 in @cite{Computer Algebra Systems: A Practical Guide}
246 M.J. Wester, Ed., Wiley 1999@*
247 @url{http://www.cybertester.com/data/denest.pdf}
248 @item
249 Thomas J. Osler:
250 @cite{Cardan Polynomials and the Reduction of Radicals}
251 Mathematics Magazine 74(1), Feb. 2001@*
252 @url{http://www.rowan.edu/open/depts/math/osler/mathmag026-032.pdf}
253 @item
254 Mascha Honsbeek:
255 @cite{Radical Extensions and Galois Groups}, Chapter 3
256 (PhD Thesis)@*
257 @url{http://www.math.kun.nl/~bosma/students/honsbeek/M_Honsbeek_thesis.pdf}
258 @item
259 SymPy @code{sqrtdenest()} @url{http://www.sympy.org}
260 @end enumerate
262 @end deffn
264 @node Function and variable index,  , Functions and variables for package raddenest, Top
265 @appendix Function and variable index
266 @printindex fn
267 @printindex vr
269 @bye