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/modulemath.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 13 4595
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/modulemath.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
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/modulemath.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
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>
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.networktheory.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
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.networktheory.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
"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 powerof operations (via the __pow__ hook), while
math.pow treats everything as a 64bit 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>
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 powerof operations (via the __pow__ hook), while
math.pow treats everything as a 64bit 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>
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/modulemath.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
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/modulemath.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
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
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 floatingpoint 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.
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
On 20070105, 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 This discussion thread is closed Replies have been disabled for this discussion. Similar topics
5 posts
views
Thread by Magix 
last post: by

13 posts
views
Thread by Shaobo Hou 
last post: by

52 posts
views
Thread by Michel Rouzic 
last post: by

13 posts
views
Thread by Michael McNeil Forbes 
last post: by

11 posts
views
Thread by Russ 
last post: by

42 posts
views
Thread by John Smith 
last post: by

3 posts
views
Thread by Hamilton Woods 
last post: by

18 posts
views
Thread by Peng Yu 
last post: by
          