       Re: Re: Intersection Ellipse & Circle

```A few simple replacements can factor out most of the remaining complexity:

SetOptions[Roots, Cubics->False, Quartics->False];
Solve[{(x - c)^2/b^2 + (y - d)^2/a^2 == 1, x^2 + y^2 == 1}, {x, y}] /.
a^4 - 2*a^4*b^2 + .. <snip> .. + b^4*#1^4 -> P

where P is the first argument of Root[...] in the output. The result is:
x -> (b^2*(d - y)^2 - a^2*(-1 + b^2 - c^2 + y^2))/(2*a^2*c)
y->Table[Root[P&,n],{n,1,4}]

Note: You probably want to filter out complex solutions.

> One thing to realize is you are getting solutions invloving symbolic
> roots of quartics. These can be quite large and moreover are not
> necessarily useful for plugging in numeric values after the fact (due to
> instability). You can reduce to a more manageable size by forcing the
> underlying Roots code to avoid the Cardano-Tartaglia formulas. The code
> below indicates that most of the time is actually spent in messing with
> the quartic formula so disabling it will save time as well as memory in
> this case.
>
> In:= Timing[s1 = Solve[{(x-c)^2/b^2 + (y-d)^2/a^2 == 1, x^2 + y^2 ==
> 1}, {x,y}];]
> Out= {2.48 Second, Null}
>
> In:= LeafCount[s1]
> Out= 286345
>
> In:= SetOptions[Roots, Cubics->False, Quartics->False];
>
> In:= Timing[s2 = Solve[{(x-c)^2/b^2 + (y-d)^2/a^2 == 1, x^2 + y^2 ==
> 1}, {x,y}];]
> Out= {0.25 Second, Null}
>
> In:= LeafCount[s2]
> Out= 4809
>
>
> Daniel Lichtblau
> Wolfram Research
>
>

```