euler314 commited on
Commit
7571f93
·
verified ·
1 Parent(s): b254716

Update app.cpp

Browse files
Files changed (1) hide show
  1. app.cpp +3 -2
app.cpp CHANGED
@@ -33,9 +33,11 @@ CubicRoots solveCubic(double a, double b, double c, double d) {
33
  const double epsilon = 1e-14;
34
  const double zero_threshold = 1e-10; // Threshold for considering a value as zero
35
 
 
 
 
36
  // Handle special case for a == 0 (quadratic)
37
  if (std::abs(a) < epsilon) {
38
- CubicRoots roots;
39
  // For a quadratic equation: bz^2 + cz + d = 0
40
  if (std::abs(b) < epsilon) { // Linear equation or constant
41
  if (std::abs(c) < epsilon) { // Constant - no finite roots
@@ -72,7 +74,6 @@ CubicRoots solveCubic(double a, double b, double c, double d) {
72
  // Handle special case when d is zero - one root is zero
73
  if (std::abs(d) < epsilon) {
74
  // Factor out z: z(az^2 + bz + c) = 0
75
- CubicRoots roots;
76
  roots.root1 = std::complex<double>(0.0, 0.0); // One root is exactly zero
77
 
78
  // Solve the quadratic: az^2 + bz + c = 0
 
33
  const double epsilon = 1e-14;
34
  const double zero_threshold = 1e-10; // Threshold for considering a value as zero
35
 
36
+ // Declare roots at the beginning of the function so it's in scope throughout
37
+ CubicRoots roots;
38
+
39
  // Handle special case for a == 0 (quadratic)
40
  if (std::abs(a) < epsilon) {
 
41
  // For a quadratic equation: bz^2 + cz + d = 0
42
  if (std::abs(b) < epsilon) { // Linear equation or constant
43
  if (std::abs(c) < epsilon) { // Constant - no finite roots
 
74
  // Handle special case when d is zero - one root is zero
75
  if (std::abs(d) < epsilon) {
76
  // Factor out z: z(az^2 + bz + c) = 0
 
77
  roots.root1 = std::complex<double>(0.0, 0.0); // One root is exactly zero
78
 
79
  // Solve the quadratic: az^2 + bz + c = 0