`limit`

so it'll loop infinitely
14,392,481 members

See more:

i am trying to create a calculated column. originally the column was constructed with a for loop and values were hard coded in. this WORKED for testing purposes, however changes needed to be made so that users could input different values.

the problem is that the calculation has a limit. there's a root and you can't have anything below zero in the root, so i have been trying to figure out a way to stop the loop before hitting that limit.

i tried running the do-while loop and keep getting outof memory exceptions and apparently i have something like 3+gb physical memory.

thoroughly unsure what to do, thank you for any help

here's my initial for loop:

here's my do-while loop in which i tried to put in the "limit" and i got the outofmemory exception

the problem is that the calculation has a limit. there's a root and you can't have anything below zero in the root, so i have been trying to figure out a way to stop the loop before hitting that limit.

i tried running the do-while loop and keep getting outof memory exceptions and apparently i have something like 3+gb physical memory.

thoroughly unsure what to do, thank you for any help

here's my initial for loop:

```
public DataTable sphCalcBCZone1(decimal b2, decimal b5, decimal b16)
{
DataTable dt = new DataTable();
DataColumn c = new DataColumn("Z1_BC");
c.DataType = System.Type.GetType("System.Decimal");
dt.Columns.Add(c);
decimal stepPoint = 0M;
double stepd = Convert.ToDouble(stepPoint);
decimal gobbledegook = 8.6M;
for (stepd = 0; stepPoint <= gobbledegook; stepPoint = stepPoint + .005M)
{
DataRow row = dt.NewRow();
double stepd = Convert.ToDouble(stepPoint); double b2d = Convert.ToDouble(b2); double b5d = Convert.ToDouble(b5); double b16d = Convert.ToDouble(b16);
double valC1 = Math.Pow(stepd, 2) / (b2d + Math.Sqrt(Math.Pow(b2d, 2) - b5d * Math.Pow(stepd, 2))) + b16d;
decimal valC2 = Convert.ToDecimal(valC1);
row["Z1_BC"] = valC2; dt.Rows.Add(row);
}
return dt;
}
```

here's my do-while loop in which i tried to put in the "limit" and i got the outofmemory exception

```
public DataTable sphCalcBCZone1(decimal b2, decimal b5, decimal b16)
{
DataTable dt = new DataTable();
DataColumn c = new DataColumn("Z1_BC");
c.DataType = System.Type.GetType("System.Decimal");
dt.Columns.Add(c);
double b2d = Convert.ToDouble(b2); double b5d = Convert.ToDouble(b5); double b16d = Convert.ToDouble(b16);
double limit = Math.Pow(b2d, 2) - b5d * Math.Pow(step, 2);
do
{
DataRow row = dt.NewRow();
double valC1 = Math.Pow(step, 2) / (b2d + Math.Sqrt(Math.Pow(b2d, 2) - b5d * Math.Pow(step, 2))) + b16d;
decimal valC2 = Convert.ToDecimal(valC1);
row["Z1_BC"] = valC2; dt.Rows.Add(row);
//forgot to add this line...now value is too large/small for decimal
step = step + .005;
} while (limit > 0);
return dt;
}
```

Comments

Look inside your

Currently, it will go forever and actually run the process out of memory adding rows to a

`Do/While`

loop. Do you see anything in the that modifies the variable you're using to control the loop, you called it "`limit`

".Currently, it will go forever and actually run the process out of memory adding rows to a

`DataTable`

.
thank you all.

here's the finished bit that runs

here's the finished bit that runs

```
DataTable dt = new DataTable();
DataColumn c = new DataColumn("Z1_BC");
c.DataType = System.Type.GetType("System.Decimal");
dt.Columns.Add(c);
double step = 0;
double limit;
double b2d = Convert.ToDouble(b2); double b5d = Convert.ToDouble(b5); double b16d = Convert.ToDouble(b16);
do
{
limit = Math.Pow(b2d, 2) - b5d * Math.Pow(step, 2);
DataRow row = dt.NewRow();
double valC1 = Math.Pow(step, 2) / (b2d + Math.Sqrt(Math.Pow(b2d, 2) - b5d * Math.Pow(step, 2))) + b16d;
// decimal valC2 = Convert.ToDecimal(valC1);
row["Z1_BC"] = valC1; dt.Rows.Add(row);
step = step + .005;
} while (limit > .000000000001);
return dt;
```

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject,
503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada
+1 416-849-8900 x 100

for this loop...

b2d = 8.6

b5d = 1

b16d = 0

i also added a new line in the code so the exception changed to:

"number too large or small for decimal.

so the first calculation should be...

0^2

_______ + 0

(8.6 + sqrt(8.6^2 - 1*0^2)

shouldn't that add up to 0?

also...thanks for the help :)