| 123 | return typeof v.re === 'number' ? v.re : Number(v.toString()); |
| 124 | }; |
| 125 | function realRootValues(roots) { |
| 126 | const out = []; |
| 127 | for (const r of roots ?? []) { |
| 128 | const v = r.N(); |
| 129 | const re = typeof v.re === 'number' ? v.re : Number(v.toString()); |
| 130 | const im = typeof v.im === 'number' ? v.im : 0; |
| 131 | if (Number.isFinite(re) && Math.abs(im) < 1e-7) out.push(re); |
| 132 | } |
| 133 | return out; |
| 134 | } |
| 135 | const UNEVAL = /^(Limit|Integrate|Sum|Product)$/; |
| 136 | const isUnevaluated = (r) => UNEVAL.test(r.operator ?? '') || /\b(int|lim|sum)\(/.test(r.toString()); |
| 137 | |