| 308 | } |
| 309 | |
| 310 | static inline |
| 311 | void evalPoint (const CanonicalForm& F, const CanonicalForm& G, |
| 312 | CanonicalForm& FEval, CanonicalForm& GEval, |
| 313 | CFGenerator& evalPoint) |
| 314 | { |
| 315 | int degF, degG; |
| 316 | Variable x= Variable (1); |
| 317 | degF= degree (F, x); |
| 318 | degG= degree (G, x); |
| 319 | do |
| 320 | { |
| 321 | if (!evalPoint.hasItems()) |
| 322 | break; |
| 323 | FEval= F (evalPoint.item(), 2); |
| 324 | GEval= G (evalPoint.item(), 2); |
| 325 | if (degree (FEval, 1) < degF || degree (GEval, 1) < degG) |
| 326 | { |
| 327 | evalPoint.next(); |
| 328 | continue; |
| 329 | } |
| 330 | else |
| 331 | return; |
| 332 | } |
| 333 | while (evalPoint.hasItems()); |
| 334 | } |
| 335 | |
| 336 | static inline CanonicalForm |
| 337 | newtonInterp (const CanonicalForm & alpha, const CanonicalForm & u, |