By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,995 Members | 1,217 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,995 IT Pros & Developers. It's quick & easy.

pow() works but sqrt() not!?

P: n/a
Hi all,

this is a newbie question on :
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on
win32
PC with WinXP

In
http://www.python.org/doc/2.3.5/lib/module-math.html
I read:

"sqrt( x) Return the square root of x."

Now the test for module math with function pow():
---------------------------------------------------
>>pow(9,9)
387420489

Fine, but sqrt() fails:
-------------------
>>sqrt(9)
I get this error message

'Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
sqrt(9)
NameError: name 'sqrt' is not defined'

Same for sin() and cos(). ">>Import math" does not help. Will I have to
define the sqrt() function first? If so, how?

Please help!

Thank you,

Siggi




Jan 4 '07 #1
Share this Question
Share on Google+
13 Replies


P: n/a
you forgot to import math module
>>import math
math.sqrt(9)
3.0

if you want math functions to your current namespace use:
>>from math import *
--
Tõnis

On Jan 4, 10:13 am, "siggi" <smusnmrNOS...@yahoo.comwrote:
Hi all,

this is a newbie question on :
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)]on
win32
PC with WinXP

Inhttp://www.python.org/doc/2.3.5/lib/module-math.html
I read:

"sqrt( x) Return the square root of x."

Now the test for module math with function pow():
--------------------------------------------------->>pow(9,9)387420489

Fine, but sqrt() fails:
------------------->>sqrt(9)I get this error message

'Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
sqrt(9)
NameError: name 'sqrt' is not defined'

Same for sin() and cos(). ">>Import math" does not help. Will I have to
define the sqrt() function first? If so, how?

Please help!

Thank you,

Siggi
Jan 4 '07 #2

P: n/a
Thank you very much, Tõnis!:

*** 1 ***
>you forgot to import math module
>>import math
Nope, I did not! But I used sqrt(9), and not math.sqrt(9). The latter works
excellent, thank you! From now on, I will use "import math" and
"math.fuction()" for EVERY mathematical function, even for pow() etc. just
to be on the safe side!

*** 2 ***
>if you want math functions to your current namespace use:
>>from math import *
What is a "namespace" and what is the difference between ">>>import math"
and ">>>from math import *" ?

Siggi
"tonisk" <me*******@gmail.comschrieb im Newsbeitrag
news:11*********************@31g2000cwt.googlegrou ps.com...
you forgot to import math module
>>import math
math.sqrt(9)
3.0

if you want math functions to your current namespace use:
>>from math import *
--
Tõnis

On Jan 4, 10:13 am, "siggi" <smusnmrNOS...@yahoo.comwrote:
Hi all,

this is a newbie question on :
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)]
on
win32
PC with WinXP

Inhttp://www.python.org/doc/2.3.5/lib/module-math.html
I read:

"sqrt( x) Return the square root of x."

Now the test for module math with function pow():
--------------------------------------------------->>pow(9,9)387420489

Fine, but sqrt() fails:
------------------->>sqrt(9)I get this error message

'Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
sqrt(9)
NameError: name 'sqrt' is not defined'

Same for sin() and cos(). ">>Import math" does not help. Will I have to
define the sqrt() function first? If so, how?

Please help!

Thank you,

Siggi

Jan 4 '07 #3

P: n/a
siggi wrote:
What is a "namespace" and what is the difference between ">>>import math"
and ">>>from math import *" ?
http://preview.tinyurl.com/t4pxq

for more on this, *please* read the relevant sections in the tutorial.
Python's all about namespaces, and trial and error is not a very good
way to figure how they work.

</F>

Jan 4 '07 #4

P: n/a
if you want math functions to your current namespace use:
>from math import *What is a "namespace" and what is the difference between ">>>import math"
and ">>>from math import *" ?
for namespaces read this
http://www.network-theory.co.uk/docs/pytut/tut_68.html

import math creates new namespace "math" for names in that module, so
you can acess them by prefixing them with "math", like math.sqrt(9).
from math import * imports all names to your local scope, so you do not
have to prefix them, sqrt(9)

--
Tõnis

Jan 4 '07 #5

P: n/a
Thank you Tõnis, both for the link and your patient explanation :-)

Siggi
"tonisk" <me*******@gmail.comschrieb im Newsbeitrag
news:11**********************@51g2000cwl.googlegro ups.com...
if you want math functions to your current namespace use:
>from math import *What is a "namespace" and what is the difference
between ">>>import math"
and ">>>from math import *" ?
for namespaces read this
http://www.network-theory.co.uk/docs/pytut/tut_68.html

import math creates new namespace "math" for names in that module, so
you can acess them by prefixing them with "math", like math.sqrt(9).
from math import * imports all names to your local scope, so you do not
have to prefix them, sqrt(9)

--
Tõnis
Jan 4 '07 #6

P: n/a
"siggi" wrote:
Nope, I did not! But I used sqrt(9), and not math.sqrt(9). The latter works
excellent, thank you! From now on, I will use "import math" and
"math.fuction()" for EVERY mathematical function, even for pow() etc. just
to be on the safe side!
pow and math.pow are two slightly different things, though. pow() works on
any type that supports power-of operations (via the __pow__ hook), while
math.pow treats everything as a 64-bit float:
>>math.pow(2, 200)
1.6069380442589903e+060
>>pow(2, 200)
16069380442589902755419620923411626025222029937827 92835301376L

pow also takes a third modulo argument (pow(x,y,z) is equivalent to pow(x,y) % z,
but can be implemented more efficiently for certain data types).

</F>

Jan 4 '07 #7

P: n/a
Thanks for the explanation. I am astonished what an interpreted language is
able to do!

"Fredrik Lundh" <fr*****@pythonware.comschrieb im Newsbeitrag
news:ma***************************************@pyt hon.org...
"siggi" wrote:
>Nope, I did not! But I used sqrt(9), and not math.sqrt(9). The latter
works
excellent, thank you! From now on, I will use "import math" and
"math.fuction()" for EVERY mathematical function, even for pow() etc.
just
to be on the safe side!

pow and math.pow are two slightly different things, though. pow() works
on
any type that supports power-of operations (via the __pow__ hook), while
math.pow treats everything as a 64-bit float:
>>>math.pow(2, 200)
1.6069380442589903e+060
>>>pow(2, 200)
16069380442589902755419620923411626025222029937827 92835301376L

pow also takes a third modulo argument (pow(x,y,z) is equivalent to
pow(x,y) % z,
but can be implemented more efficiently for certain data types).

</F>


Jan 4 '07 #8

P: n/a
siggi wrote:
Hi all,

this is a newbie question on :
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on
win32
PC with WinXP

In
http://www.python.org/doc/2.3.5/lib/module-math.html
I read:

"sqrt( x) Return the square root of x."

Now the test for module math with function pow():
---------------------------------------------------
>>>pow(9,9)
387420489

Fine, but sqrt() fails:
-------------------
BTW note that (of course) you can write pow(x,.5) or x**.5 for sqrt(x)
without any preliminary import statement
Jan 4 '07 #9

P: n/a
Thanks for that, too!

Would be interesting to learn how these different algorithms influence the
precision of the result!?

"Boris Borcic" <bb*****@gmail.comschrieb im Newsbeitrag
news:45********@news.bluewin.ch...
siggi wrote:
>Hi all,

this is a newbie question on :
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)]
on
win32
PC with WinXP

In
http://www.python.org/doc/2.3.5/lib/module-math.html
I read:

"sqrt( x) Return the square root of x."

Now the test for module math with function pow():
---------------------------------------------------
>>>>pow(9,9)
387420489

Fine, but sqrt() fails:
-------------------

BTW note that (of course) you can write pow(x,.5) or x**.5 for sqrt(x)
without any preliminary import statement

Jan 4 '07 #10

P: n/a
siggi wrote:
Now the test for module math with function pow():
---------------------------------------------------
>pow(9,9)
387420489

Fine, but sqrt() fails:
-------------------
>sqrt(9)
I get this error message

'Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
sqrt(9)
NameError: name 'sqrt' is not defined'
The third argument to the builtin pow is a special usage for
cryptography, and something specific like that needs no representation
in the builtin namespace. The ** operator covers all other uses.
Carl Banks

Jan 4 '07 #11

P: n/a
On Jan 4, 10:00 am, "siggi" <smusnmrNOS...@yahoo.comwrote:
Thanks for that, too!

Would be interesting to learn how these different algorithms [for pow] influence the
precision of the result!?
For an integer (i.e., int or long) x and a nonnegative integer y, x**y
is exact:
>>1000001 ** 12
10000120000660002200004950007920009240007920004950 00220000066000012000001L
(73 significant digits, correctly ending in "000001")

math.pow uses floating-point arithmetic (even if you pass it integers),
and so has limited precision:
>>print '%.73f' % math.pow(1000001, 12)
10000120000660002384727778420044632572607000632422 58506335663988477526016
(Only the first 17 digits are correct.)

For floats, the ** operator does the same thing math.pow does.

Jan 5 '07 #12

P: n/a
At Thursday 4/1/2007 10:12, siggi wrote:
>Thanks for the explanation. I am astonished what an interpreted language is
able to do!
Python is as interpreted as Java. Its numerical capabilities are more
or less independent of this fact, I'd say.
--
Gabriel Genellina
Softlab SRL


__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas

Jan 5 '07 #13

P: n/a
On 2007-01-05, Gabriel Genellina <ga******@yahoo.com.arwrote:
At Thursday 4/1/2007 10:12, siggi wrote:
>>Thanks for the explanation. I am astonished what an interpreted
language is able to do!

Python is as interpreted as Java.
But it's far more interactive -- at least when compared with my
limited experience with Java.
Its numerical capabilities are more or less independent of
this fact, I'd say.
--
Grant Edwards grante Yow! What PROGRAM are
at they watching?
visi.com
Jan 5 '07 #14

This discussion thread is closed

Replies have been disabled for this discussion.