Become a MacRumors Supporter for $25/year with no ads, private forums, and more!

- Thread starter chhoda
- Start date
- Sort by reaction score

You are using an out of date browser. It may not display this or other websites correctly.

You should upgrade or use an alternative browser.

You should upgrade or use an alternative browser.

Go to http://www.google.com and type this into the search bar. "what is the distance between two points"

If your result is greater than your radius, your point is not in your circle.

Are you familiar with

A^2 = B^2 + C^2?

A is 50

B is the difference in X's between your two points.

C is the difference in Y's between your two points.

The formula defines the boundary of your point. So you'd actually want to use

A^2 > B^2 + C^2

to find out if your two points were within 50 of each other.

A^2 = B^2 + C^2?

A is 50

B is the difference in X's between your two points.

C is the difference in Y's between your two points.

The formula defines the boundary of your point. So you'd actually want to use

A^2 > B^2 + C^2

to find out if your two points were within 50 of each other.

Comment

Are you familiar with

A^2 = B^2 + C^2?

No. But I am familiar with A^2 + B^2 = C^2.

I'd think something like:So you'd actually want to use

A^2 > B^2 + C^2

to find out if your two points were within 50 of each other.

Code:

`if (sqrt(b*b + c*c) <= 50.0)`

Comment

A^2 + B^2 = C^2[/URL].

This is probably one of the first times i see this formula being applied and used in real life, i always thought its just another pointless topic that the school forces you to learn.

Comment

I'd think something like:

would be more clear.Code:`if (sqrt(b*b + c*c) <= 50.0)`

More clear, yes, and hopefully the OP understands now. However, wouldn't a sqrt function be rather expensive compared to an extra multiplication? Of course that only matters if the check is happening frequently.

Comment

This is probably one of the first times i see this formula being applied and used in real life, i always thought its just another pointless topic that the school forces you to learn.

Math is meaningless without programming.

(Ok, fine, the other sciences give meaning to math as well...)

Edit: And math team. Somehow math team gives math purpose.

Comment

However, wouldn't a sqrt function be rather expensive compared to an extra multiplication?

I don't know. Do you?

Comment

I made a quick app that tests which is faster, this is the output:

So the squares took 0.026 seconds while the roots took 0.013 seconds... it appears to take half as long to use squares. Odd.

My code, for anyone interested, is this:

Code:

```
2012-01-30 13:13:53.915 SquareRootCost3[22875:f803] Beginning Test with squares.
2012-01-30 13:13:53.941 SquareRootCost3[22875:f803] Finished test with squares - found 369212
2012-01-30 13:13:53.941 SquareRootCost3[22875:f803] Beggining test with roots.
2012-01-30 13:13:53.954 SquareRootCost3[22875:f803] Finished test with roots - found 369212
```

So the squares took 0.026 seconds while the roots took 0.013 seconds... it appears to take half as long to use squares. Odd.

My code, for anyone interested, is this:

Code:

```
srand(time(NULL));
int i = 0;
float a[500000], b[500000], c[500000];
for (i = 0; i < 500000; i++)
{
a[i] = rand();
b[i] = rand();
c[i] = rand();
}
long int squareans = 0;
long int rootans = 0;
NSLog(@"Beginning Test with squares.");
for (int i = 0; i < 500000; i++)
{
if (a[i]*a[i] < (b[i]*b[i] + c[i]*c[i]))
{
squareans++;
}
}
NSLog(@"Finished test with squares - found %ld", squareans);
NSLog(@"Beggining test with roots.");
for (int i = 0; i < 500000; i++)
{
if (a[i] < sqrtf(b[i]*b[i] + c[i]*c[i]))
{
rootans++;
}
}
NSLog(@"Finished test with roots - found %ld", rootans);
```

Comment

I made a quick app that tests which is faster, this is the output:

Code:`2012-01-30 13:13:53.915 SquareRootCost3[22875:f803] Beginning Test with squares. 2012-01-30 13:13:53.941 SquareRootCost3[22875:f803] Finished test with squares - found 369212 2012-01-30 13:13:53.941 SquareRootCost3[22875:f803] Beggining test with roots. 2012-01-30 13:13:53.954 SquareRootCost3[22875:f803] Finished test with roots - found 369212`

So the squares took 0.026 seconds while the roots took 0.013 seconds... it appears to take half as long to use squares. Odd.

Cool, that was my intuition from taking a numerical analysis course long ago, but thanks for demonstrating it.

----------

sqrt() can probably take advantage of bitwise operators.

Hmm, it will probably change based on implementation. What is the difference between sqrt() and sqrtf()?

Edit: Oh it is for floats. It'll probably be slower than one optimized for ints.

Edit2: Ok, not quite. sqrtf() explicitly takes floats, where as sqrt() is overloaded and can take floats or doubles (or other stuff in C++).

Last edited:

Comment