| 1401 | * (Rubi SumBaseQ companions); null when not a sum base */ |
| 1402 | function sumBaseTerms(u: Expression): Expression[] | null { |
| 1403 | if (u.operator === 'Add' || u.operator === 'Subtract') return sumTermsX(u); |
| 1404 | if (u.operator === 'Power' && u.ops) { |
| 1405 | const k = realNum(u.ops[1]); |
| 1406 | if (k !== null && Number.isInteger(k) && Math.abs(k % 2) === 1) |
| 1407 | return sumBaseTerms(u.ops[0]); |
| 1408 | } |
| 1409 | return null; |
| 1410 | } |
| 1411 | const sumBaseQ = (u: Expression): boolean => sumBaseTerms(u) !== null; |
| 1412 | const negSumBaseQ = (u: Expression): boolean => { |
| 1413 | const ts = sumBaseTerms(u); |