"Mathematica 7 will have about 2,700 functions, or roughly 500 more than the
previous version."
"On Thursday, Wolfram announced the newest version of that software,
Mathematica 7, will be ready for shipping in November."
http://www.news-gazette.com/news/local/2008/10/23/new_mathematica_version_coming_soon
I do not know how they count just functions in Mathematica.
I use Length[Names["System`*"]] and I have a table showing these counts for
older versions of Mathematica here
http://12000.org/my_notes/compare_mathematica/index.htm
But this method of counting counts system symbols as well.
I will be nice to get a listing of functions on one page, just of the
functions themselves. (and what are these new 500 functions are)
Nasser
We wonder, how much time it would take the VM machine
to find the first bug in Mathematica 7?
First 100 bugs in Mathematica 7?
We'd expect, probably minutes and a day, respectively.
Best wishes,
Vladimir Bondarenko
Co-founder, CEO, Mathematical Director
http://www.cybertester.com/ Cyber Tester Ltd.
------------------------------------------------------
"We must understand that technologies
like these are the way of the future."
------------------------------------------------------
Yes, any CAS is a piece of ... software.
Oh, your ellipsis ...sis ...is....... :)
I think, at this point I have a question...
What do you feel about a near-zero-bug CAS?
I think that's possible. The compiled symbolic kernel (no dedicated
numerics beyond fast arbitrary-precision evaluation of elementary and
special functions, robust adaptive numerical integration, and
compilation to machine fp instructions for 2D and 3D plotting) would
fit onto a 1.4 MByte disk (including keywords, but excluding message
strings, and of course excluding all windows-oriented user-interface
stuff, fonts, etc.). The user programming language should be universal
and provide full access to the system, while being limited to basic
programming constructs. Apart from being no Matlab competition, this
could be as powerful as the baroque commercial systems of today, I
think. As to the general possibility of near-zero-bug software,
compare the Turbo-Pascal (version 3) compiler and run-time system
written in 8086 Assembler (38 kByte executable) by (I believe) a
Danish fellow in the early 1980s.
Martin.
I cannot help smiling...
Save its terrible, shameful numeric integrator stumbling
over the simple singularities speaking nothing of fast
oscillations, - above, you almost described Derive :)
(in parentheses, compare the Derive's numeric nightmare
APPROX(INT(1/z^(99/100),z,0,1)) -> 22.1018188913866
vs the luxurious Mathematica 6.0.3's output
NIntegrate[1/z^(99/100), {z, 0, 1}] -> 100.
well, to tell the gospel truth, their 6.0.3 NIntegrate also
gets crazy quite often; let's see what will happen in the
Mathematica 7 coming to the doorstep...)
So it sounds, up to details, you described your and my fav
computer beast, Derive...
Well, maybe Derive which ADR would have written today having
taken into account his previous experience, an article of my,
as we the Russians say, "white envy".
Derive has a unique feature. The VM machine data shows that
regression bugs are almost absent in it. At least, there are
two order lesser regression bugs in Derive than in Maple or
Mathematica. I am not quite sure how to explain this fact.
By the way, the other day, I gave him a call as usually. It
sounds like there could be news reasonably soon ;)
Over years, I said him time and again, speaking mildly, it
would not hurt to implement the MeijersG as well as rewrite
the dingy hypergeometrics... and more ah oh.
I always considered *some* their decision as the blind ally.
You probably could guess, what do I mean, which sad one. 8-(
But today, I have grounds to feel like there is a light in
the end of the tunnel.
At least, today there is the VM machine which can deliver
an unparallel bugs identification level, and more.
Best wishes,
Vladimir Bondarenko
Co-founder, CEO, Mathematical Director
http://www.cybertester.com/ Cyber Tester Ltd.
------------------------------------------------------------
"We must understand that technologies
like these are the way of the future."
------------------------------------------------------------
For the hypergeometrics I suggest you substitute the Derive library
definition by the following (straight from Gradshteyn-Ryzhik):
F21_aux2(a,b,c,z):=GAMMA(c)/(GAMMA(b)*GAMMA(c-b))*INT(t^(b-1)*(~
1-t)^(c-b-1)*(1-t*z)^(-a),t,0,1)
F21_aux1(a,b,c,z):=IF(RE(c)>RE(b),F21_aux2(a,b,c,z),((c-a)*F21_~
aux1(a,b,c+1,z)+a*F21_aux1(a+1,b,c+1,z))/c)
F21_aux0(a,b,c,z):=IF(RE(b)>0,F21_aux1(a,b,c,z),((c-a)*F21_aux0~
(a,b+1,c+1,z)+a*(1-z)*F21_aux0(a+1,b+1,c+1,z))/c)
F21(a,b,c,z):=IF(ABS(2*RE(b)-RE(c))<ABS(2*RE(a)-RE(c)),F21_aux0~
(a,b,c,z),F21_aux0(b,a,c,z),'F21(a,b,c,z))
Set z :epsilon Real [0, 1] to help the integrator along if needed. If
you add recognition of integer parameters and integer parameter
differences, I suppose you could reproduce the entire tables at
<http://www.planetquantum.com>.
Oh, and if you have a direct channel to people who feel responsible
for Derive, you could let me know at my private mail address (the one
above I do not check); this would allow me to send some reports of
unnoticed serious bugs.
Martin.
I think that results in a recursion and it seems, how Lebedev
"Special Functions" does 2F1 from Euler's integral in proving
extension beyond the initial parameter restriction.
My 'feeling' is that the specialists know that of course and
there must be a reason, why it seems not be used.
Once I played with it for numerics, it resulted in not so
funny recursions and was not handy, especially for z ~ 1
(but that might be my fault, certainly).
Yes, this is a recursive definition - but one that bottoms out after a
finite (usually small) number of steps, producing a finite number of
convergent integrals along the way. (The original definition from the
Derive library files is too bad to be cited here, and it entirely
fails to work with the latest versions.)
Key simplification steps for two examples (the second needs no
restriction on z):
F21(1/2, 2, 5/2, z^2)
3*INT(t^(1/2-1)*(1-t)^(5/2-1/2-1)*(1-t*z^2)^(-2),t,0,1)/4
z:epsilonReal [0, 1]
-(3*(z^2+1)*LN((1-z)/(z+1))+6*z)/(8*z^3)
F21(2, 2, 1, z)
2*(3*INT(t^(2-1)*(1-t)^(3-2-1)*(1-t*z)^(-4),t,0,1)-2*INT(t^(2-1)~
*(1-t)^(3-2-1)*(1-t*z)^(-3),t,0,1))
z:epsilonReal
(z+1)/(1-z)^3
This is just the solution I came up with to obtain expressions for
2F1(a,b;c;z) at all in Derive, having symbolic simplification in mind.
Needless to say I am now curious to learn the state-of-the-art
approach to hypergeometric simplification.
Martin.
Oh, shit - forgot to paste my answer ... more or less it was:
that doubled call for 2F1 may result in 2^n & and troubles.
For the recursion (Lebedev)
`2F1`([a, b],[c],z) =
(c-a+1)/(c+1)*`2F1`([a, b+1],[c+2],z)
+a*(c-(c-b)*z)*`2F1`([a+1, b+1],[c+2],z)/c/(c+1);
an example is a=1,b= 1+sqrt(-2), c= -(2*k+1)/2, z = exp(I*Pi/4)
with k an integer (z in circle & diagonal for numerics and the
case where linear transforms are used)
Though yours may be different it is likely a long 'path' can be
also constructed.
The other problem are the 'gamma factors' in front of Eulers's
integral ( ---> appropriate norming?)
References ... I was Algebraist, others know better, may be you
try Koepf or Askey or Vidunas (at arxiv) or Yoshida.
Axel
Thanks for the comments: your recursion relation seems to be a better
choice for this (it is missing in my edition of Gradshteyn-Rhyzhik).
Hence I now suggest that Vladimir replace his library definition by:
F21_aux2(a,b,c,z):=GAMMA(c)/(GAMMA(b)*GAMMA(c-b))*INT(t^(b-1)*(~
1-t)^(c-b-1)*(1-t*z)^(-a),t,0,1)
F21_aux1(a,b,c,z):=IF(RE(b)>0 AND RE(c)>RE(b),F21_aux2(a,b,c,z)~
,((c-a+1)*F21_aux1(a,b+1,c+2,z)+a*(c-(c-b)*z)*F21_aux1(a+1,b+1,~
c+2,z)/c)/(c+1))
F21(a,b,c,z):=IF(ABS(2*RE(b)-RE(c))<ABS(2*RE(a)-RE(c)),F21_aux1~
(a,b,c,z),F21_aux1(b,a,c,z),'F21(a,b,c,z))
I don't think there is a normalization problem related to the Gamma
factors. You are right in that the number of terms grows exponentially
with the parameter values (-b) and (b-c); for values of order ten one
may already obtain something like 1024 integrals, for example. I
haven't found this to be a serious restriction in my practice. And for
higher order polynomial cases (i.e. where a or b is a non-positive
integer) one should switch to series expansion (Derive notation, n
integer <= 0):
F21(n,b,c,z) := GAUSS_SERIES(n,b,c,z,-n)
Similarly for non-positive integer (c-a) or (c-b).
Martin.
-------------------------------------------------------
How much does it cost you to build a human readable
Mathematica 7 bug data base for each of 2700 functions?
How much time it would take for you, a human being?
-------------------------------------------------------
How much does it cost us to build a human readable
Mathematica 7 bug data base for each of 2700 functions?
How much time it would take for the VM machine?
-------------------------------------------------------
Best wishes,
Vladimir Bondarenko
Co-founder, CEO, Mathematical Director
http://www.cybertester.com/ Cyber Tester Ltd.
-------------------------------------------------------
"We must understand that technologies
"Vladimir Bondarenko" <v...@cybertester.com> wrote in message
news:414dce9c-63f1-4d32...@b31g2000prf.googlegroups.com...
>How much does it cost you to build a human readable
>Mathematica 7 bug data base for each of 2700 functions?
Lets try to estimate: Assume it takes, on average, a week for one
programmer to write a regression test suite per function. Assume it costs
$1,000 per week for salary of this programmer.
Assume it takes 3 months to build the database and other supporting tools.
Hence it will cost about 2.7 million dollars ?
>How much time it would take for you, a human being?
About 2700/52 = 51 years?
-------------------------------------------------------
>How much does it cost us to build a human readable
>Mathematica 7 bug data base for each of 2700 functions?
Do not know.
>How much time it would take for the VM machine?
I do not know how your VM machine works, but may be 48 hrs? 72 hrs?
Nasser
http://support.wolfram.com/mathematica/interface/options/v6stylesheetinfo.html
Creating new style sheets (embedded or public) freezes your
style sheet at the version of Mathematica you're using.
For example, anybody who created a 5.2 style sheet based upon
a copy of Default.nb will find that many things appear broken
(graphics don't appear the same, syntax coloring might not
show up correctly, etc.) because you are essentially using a
5.2 version of Default.nb.
By using inherited style sheets, you are now inheriting from
the canonical style sheet. If you make a style sheet which
inherits from Default.nb in Mathematica 6, and then open the
notebook in Mathematica 7, it will inherit the Mathematica 7
style sheet, and any new features in that style sheet.