gpt4 book ai didi

c++ - CGAL:将商转换为 double

转载 作者:行者123 更新时间:2023-11-30 02:33:50 24 4
gpt4 key购买 nike

我在转换 CGAL QP 求解器时遇到问题

typedef CGAL::Gmpzf ET;
...define a quadratic program qp here...
Solution s = CGAL::solve_quadratic_program(qp, ET());
assert (s.solves_quadratic_program(qp));
cout<<"QP objective = "<<s.objective_value()<<endl;
// The above returns a value of type CGAL::Quotient<ET>
// and I need to convert it to double
double n = s.objective_value_numerator().to_double();
double d = s.objective_value_denominator().to_double();
cout<<"QP objective 2 = "<<n/d<<endl;

我得到了:

QP objective = -2.57497e-22/2.01459e-22 
QP objective 2 = -nan

我检查并观察到 ​​n = -infd = inf

我们如何正确地将 Quotient 转换为 double?

提前感谢您的任何建议!!

最佳答案

CGAL 有一个函数 CGAL::to_double可用于 most number types特别是 on Quotient .它有 special code正是针对分子和分母会溢出的这种情况。它有下溢代码,下溢不会发生在整数商上,但可能会发生在 Gmpzf 上,产生 0/0

关于c++ - CGAL:将商转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35023805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com