#include #include using namespace std; using namespace GiNaC; int main() { symbol x("x"); ex expr = -x / (-1265625 * I + 64 * x) / (28900 * I + x); cout << "expr = " << expr << endl; int n_count = 0; while (true) { ++n_count; ex num = expr.numer(); ex den = expr.denom(); ex check = (num / den - expr).normal(); if (!check.is_zero()) { cout << "Wrong result!!!" << endl; cout << "n_count : " << n_count << endl; cout << "numer() = " << num << endl; cout << "denom() = " << den << endl; // check .numer_denom() method ex expr_num_den = expr.numer_denom(); ex check_numer_denom = (expr_num_den[0] / expr_num_den[1] - expr).normal(); if (check_numer_denom.is_zero()) { cout << "check: numer_denom: PASS!" << endl; cout << "numer_denon = " << expr_num_den << endl; } break; } } return 0; }