Live CEOing Ep 738: Language Design Review of Calculus & Algebra Features for 14.0

Stephen Wolfram and developers review calculus and algebra features for Wolfram Language 14.0. NSolve gets a complete overhaul with new MaxRoots option, and the team discusses homotopy continuation for solving large polynomial systems. Finite-field support for linear algebra gets extensive treatment, including new utilities and conversion semantics.
Chapters
Okay. Hi, everyone. Welcome to another Wolfram Language Design review. This time we are beginning our long sequence for version 14.0. I think this is our very first 14.0 livestream design review. Okay, so today it's calculus and algebra. All right, let me just get a scope here. Okay. All kinds of stuff. All right. The monogramic math that I remember that being talked about years ago. Support for solving systems equations with large numbers of roots, like a million.
Right. And so N Solve. As we integrated this method in, we took the opportunity to overhaul NSolve. And so n Solve now has a new option, Max roots. I mean, you're unlikely to have wanted a million routes.
How does it pick which ones you get if you're only getting three?
There's no criteria.
Okay, so it's like max items for search results or something like that. It's just, we'll give you that number.
Right. We're up to that number.
And there's no reason to have a more general name than roots here that we could reuse for other functions like eigenvalues, for example, Like max cases or some other.
Well, for eigenvalues, we did something else. We. We have an argument, you know, and there are some criteria as well.
I remember those are multivariate.
Sorry?
Well, like that. That's just ranked list of eigenvalues from biggest to smallest.
Right, Right.
But. But I'm assuming in this case we just don't know which route exactly. We're just peeling off roots.
Exactly.
Are there any other functions that you think might. Might have the same treatment, in other words?
Yeah. So the Idea is for 14.1, we flow the same updates into solve.
Okay. For symbolic things, you can use similar methods.
Actually. Yes. And we do some of it, but we haven't really been using it for solve yet. So if you can guess a route. Actually, we already using something like that starting 15 years ago or something for transcendental routes, we can count the number of routes. Then we can use any method to find them, which we do. So then when you found exact, the number that you know that is in there, you know, you found all of them. And we use numerical methods, but symbolic methods to validate that it's an actual root that gives you the transcendental roots. And we can do is what we haven't done, except in a few cases, is to take that to the multivariate case, which we plan to do.
So we have count roots. Right. That's a univariate root counter.
Yeah.
Is there a multivariate root counter? That is conceivable.
Yes. We don't use them because they're so incredibly expensive. There might be some, you know. So what we do is upper bounds. So there's like for polynomial system there's a really poor bound called the Bernstein bound, but there's a much better bound which is called the mixed volume bound which we use for both monodramy and homotopy.
Just remind me how these methods like monodramy I think I once knew. But can you give me the few sentence summary how it works?
So Adam can give you an intro to monodromy or Devendra, I couldn't. Homotopia, I can give you super details.
So basically you vary the constants so you have something equal to zero. Then you find some little loop that goes from zero to zero and solve the equation along the loop and you hope to end up in a different solution.
By loop you mean with respect to the parameters?
Yeah, you introduce a new parameter so you have F equals zero, you change it into F equals A where A goes along a loop from zero to zero in a complex plane. And you have more equations than you have more parameters like this.
And you hope that somehow in that loop you will hit another place where F of x really is equal to zero. Is that right?
You will always get into the place where. So at each step of the loop you get F of x equals to A. Since the loop ends with zero, you will get.
I understand.
So you hope it will be a different route. You don't have a guarantee that it will be a different route, but you might.
It's kind of like you were in one minimum of a function and you took a tour of the mountain and you hope that the only thing that you're defined about the tour of the mountain is it eventually ends up back is in the. You know, at sea level or something. And you hope it's going to end up at a different sea level. Yeah, place than you start. That's kind of interesting.
Okay, now homotopy works by. So you have an estimate, this better estimate over how many total roots there are. Basically it's. It's counting the number of integer lattice point in a big high dimensional polyhedra. So then you start with an equation system where you know the solution which has that number of roots.
Okay.
Okay. It's like roots of unity type things, you know. And then you, you introduce a parameter that takes you from that system with known solutions to the system that you actually want to solve.
Okay.
And then you vary that parameter until you know, typically from 0 to 1. And so when it's 1, you have the system that you actually want to olve, and at zero you have the system for which you know the solutions. And the way you vary that, you know, typically we set up differential algebraic equations. Just slide to those other solutions as you go there.
That's interesting. Okay, and. And why. Okay, why is that called homotopy?
Because it. Because it is a homotopy. You vary that.
I see. I got it, I got it, I got it. You're moving on those parts. And this monodomy is. You're kind of circling around.
Yes.
A. Okay.
Singularity.
Yeah. That's cool. So polynomial equations with a million roots as either degree a million or its complex. A whole bunch of. Or it's highly multivariate. Yeah, right.
Yeah. Univariate is easy to understand. Multivariate, not so much.
If you look at the second example, it has billion roots.
Which second example? This one here?
Oh, the.
Yeah, this one here.
Yeah.
So you multiply thousand by thousand by thousand.
Yes.
And maybe you didn't want those billion roots.
Yeah. Sandra on live stream is commenting that it would be nice to have a numerical function which gives all the roots of something. It's surprisingly hard to get a list of all roots for complicated functions. Indeed.
It is hard. Yeah, it is hard. I mean, so we guarantee that in the univariate case for meromorphic, I mean, first of all, polynomials always both, you know, individual and systems. But if you take transcendental, which is a whole different story, we guarantee it for meromorphic. Univariate in a box.
Right. Yeah, I thought so. I mean, that was the. That's one of the impressive achievements, right? Being able to do those kinds of routes.
Exactly.
All right, cool. Okay. Onward finite fields. Oh, great. Finite fields for linear algebra. So should I look at some of these? And. And is there something to see? Oh, here we go.
For examples.
Yes.
You know, this print form is sort of bugging me, and I'm kind of wondering, you know, why don't we at least make this smaller? I mean, it's just like.
Okay, I can make that smaller on.
The whole, you know, go ahead.
Yeah. But by the time we were done, you know, and we played with it, I thought that maybe I. Right. You know, it's this balance of you want it to be readable versus not too big. But I'll take it down a couple of.
Yeah, I think. I think we should talk to design and maybe there's a way of. Maybe even we fill in a bit more and darken that f. A Bit I think we can take it to two thirds of its own dimensions.
Okay.
What is this 23 to the 4 there?
I think that's the size.
So it's a power races size of the field.
So frame.
I don't know.
We're in the box. Why is the out of the box?
Right. Was just thinking that too. It's like, why do I want that repeated all the time?
Yeah. I don't understand. I mean, it's never going to be a different thing, particularly not for a matrix. And I am wondering, for the print form for the matrix, why on earth we don't just put it outside the whole matrix. Exactly.
Well, it's a list of. Right. It's a list of. List of.
Right.
We don't have print forms for.
Okay, okay.
Well, okay, but for the future then.
But here I don't understand why the size of the finite field is visible outside of the. I mean, why isn't that in the F box, so to speak?
Well, because the F box is sort of an action button and that's, you know, a thing that you can copy out.
Right. Wait a minute. Just ate it here. This formatting just isn't right. The fact that this is not in the box and then the box eats it when the box opens, just.
It's in the box. Expand it.
I know, I know it's in the box, but I'm saying it isn't visibly in the box here. It's just formatting.
Oh, that's what you mean by box.
I think it is. I think you're. I think it's just fainter and therefore less.
I see. Okay. I think this needs more work and I think that you could, you know, given all these clues, you could pretty much just say 23 to the 4 in this box. And you know, with all the angle bracketing and all this kind of thing that's going to tell you it's sort of a finite field and when you click the box, then you see more detail. I just don't think the F is doing much for us.
I disagree with that. I mean, I think, you know, angle brackets on its own. Right. I mean, that can mean any of it's obscure.
Yeah, I agree. Yeah. Well, look, I think, just think this needs a bit more work. Try to get the thing all in the box, minimize the F. It just needs to be able to, you know, a little F, you know, a cluster of pixels that is reminiscent of an F, basically.
Oh, there.
Particularly when it's repeated like this. Okay. But now here we've Got the finite field. And these are elements of the finite field. And if I evaluate this, which I hopefully can do here. Okay. Now I just take this matrix. How? Oh, well, I don't know.
That's element wise. It's it that what you did there is element wise.
Right. So okay, well, let me just do, do this finite field. Okay, so. Okay, so that's doing the right thing. But it already would do the right thing like that. Is that correct? But now if I say something like determinant of that, that's more interesting. Or indeed if I say inverse of that. That's nice. So if I say that dot percent six. Cool. And if I say normal of that, how do I get the actual identity matrix out of this? How do I forget the finite field array?
I don't think that's a sensible question. Right. This is the identity matrix in the field. Right. The field are not necessarily.
You know, I still think there are cases where people are going to want to get those numbers out. Just because you're manipulating it in some other way. You're feeding it into some shift register calculation or something. I just want the figging numbers out.
So one thing is replacement rule. So finite field element goes to its index.
Not a chance. If we say finite field index, what is it called? How do I get.
It's a sub value.
Yeah. It's not going to work for this case. So we need a different way to do it.
Right, right. And I mean just remember, you could.
Map hash, you know, that's a hack.
Okay, but just, just remember, Stephen, I mean these indices are arbitrary and you know, depending on which representation you choose. Right. You're going to.
I'm well aware, but we know mod 23. It's not that arbitrary.
It can be.
Yeah.
Yes, but it isn't.
I mean we have two different. There will be two different representations for mod 23.
All right, look, I'm telling you, people are going to be. It is going to. I can even think of algorithms that I have written myself where I would want this conversion. It comes in, you know, it comes in as a standard matrix because I got it from who knows what, you know, off a, off a, you know, I got it out of a packet that I, you know, dissected and I'm going to use some kind of error correcting code on the packet. I want to take this list of numbers and I want to turn them all into MOD 20, you know, over GF23.
Do we want a special function finite field index that would just be listable.
Possibly so, but I think we want both ways. In other words, I've got a matrix or a list of numbers. I want to make them all finite field. Now can I do that? If I say. If I say this and I say that thing of, you know, range of 10.
That'S. That's a.
That's a different thing, actually. So these are coefficients.
Okay. It can't be the way. Yeah. For what reason?
Because there is a representation of finite field elements as a list of coefficients of a polynomial. And that's what it did.
Okay. All right. So I'm telling you guys we need a way. And I would have expected normal would have done it, but maybe it isn't the right thing to go to a plain list of integers. From plain list of integers to.
So for. Yeah, so for when. If you're not in a. If you're just in a prime field, that would make sense. Right. But for a prime power field, I.
Don'T know, it's a little bit squiggly. It's a little squiggly to say the least.
Right.
There is nothing normal about it.
Fine.
Yeah. So it's like from finite field to finite field or something?
Something like that. But I mean, look, realistically, if I'm in a prime power field. Field, okay, then there are still numbers that I can see here, and I have been in this situation way too many times with our system that I can see a number. I want that number. This is my objection to the root objects thing, which I hope we're fixing in this version. Right. I can see it. I just want it. How do I get it? You see what I'm saying? Did you understand what I'm saying? I see those numbers. I want those numbers. I don't know why I want those numbers, but I want those numbers. And certainly for the, the, you know, pure Z mod P type stuff, there's a good reason to want those numbers. It's squigglier in the case of prime power fields. Yeah.
Actually, for the encryption application, I just did. I. I did need to. To get the. The thing for. Get the numbers for something that was prime power field.
All right, thank you.
So it is useful.
Yeah. Okay.
So should be. I mean, maybe. I think that what we've tried to do is utility functions for the things that create good flow in programming, as opposed to sub values.
Yes, I agree. I mean that. Because we can't use sub values here, you know, because it's in the matrix, so to speak.
I mean, you can, but it's sort of. It's awkward.
No, no, I mean, we want to single hit it with one thing.
Yeah, yeah, yeah, that's. I agree with you. I'm agreeing with you. You can, but I'm saying it's.
It's. Yeah, it's not the right thing right there. So the sub value thing is the quotes index. Sub value, Right.
Yes.
So if I take this puppy and I say sub index, I'll get that. Okay.
Yes.
So, you know, one possibility is to say finite field index, and another one is from finite field index or something. Well, it's a bit yucky because you would expect the thing to be listable, but it's not the finite field. You know, this thing here. Well, what do we think about this finite field index of the thing?
I think it's a. Is a. That's what. It's a good name. Finet Field index is great.
Yes, I agree.
Because it also admits it doesn't claim it's going. It just. An index is something much more arbitrary. Yeah.
And it's what it is.
Yeah. What about from finite field index?
To create them or what?
Yes, to create them.
So it would have to have the second argument being the finite field.
Exactly.
Yes. Why not?
Seems okay. People are going to expect this to work, But I think it's the right decision that it doesn't. Yeah.
If you. I mean, I think that this is part of what we discover by using it. It's like that should be there to make a more flowy workflow, so to speak.
Yeah. Okay, let me see what happens here. So if I make a. So in. In this case, for example, if I take this. Just trying to understand things, and I say dot x squared x one magnifisorial. And if I say solve that equals. Equals zero.
Here you go, the next part. Yes.
Should work.
Yeah.
What the hell's that?
Does it have the. Do. Do you have the prototype version or.
I hope so. The wrong version.
It's pretty old. Oh, it's actually 1331, so. Yeah.
What the heck? What the heck? This says 14.0. What's going on here?
Yeah, type version. Yeah.
Okay, somebody completely goofed. Do you think that version is. Is. Is the recent version or a prototype? I don't appreciate that. That. That's. That's the thing that says 14. Oh, how could it say 140 and be a 13 3? And how could it even be a Linux version? Something is.
Oh, is your, is your default evaluator set to something? Oh, check that. Check what your default evaluator is.
Yeah, okay, fine.
Oh, thread ripper.
That looks better. Okay, two dollar versions again, just to make sure.
It's quite possible it doesn't have solutions.
Well, is zero okay or does it.
Need to be a finite zero is okay. Not every quadratic will have roots in this field.
Yes.
So the next.
What happens if I say here, if I say this is a number like 3, so is that 3 now auto converted to that field?
Yes.
What happens if it's a prime power field?
It will also be converted so it will be treated as the integer. So modulo. So every prime power field contains prime field. So it will still be an element of prime field.
I see, but so in the case of finite field index or from finite field index, the reverse isn't true. The prime field is still sitting inside. But there will be additional elements which are in the prime power field that are not in the prime field and whose indices might be more arbitrary.
Yes.
So you have made it so that the indices in the prime power field, the indices from 1 to P or 0 to P minus 1 are the ones for the prime field. Is that correct?
Yes.
Okay, so. And if I were to use here 34 or something that will be reduced mod 23. Yeah, 23. Even if this was a.
Even if it was prime prime power field, so it still wouldn't be an index. It would be the integer 34 embedded in the field. Okay, so it's like one in the field other 34 times.
Yep. Makes sense. All right, so now if I take this and I were to do for example a root sum, I assume that that's supported here. No, that's actually not okay, so it probably won't do anything sensible hole has been poked. Ok, what else needs to be supported? I mean clearly that should be supported, right? Right. What about maybe this. What about the L functions, things like that? Other things that use don't they don't they do things over. Over finite fields, I.e. their coefficients and things prime fields, so. I see.
But maybe we should go back and look at them anyway. Okay, I'm gonna have to think about that. But definitely prime fields.
Okay, So. And I assume that there are other things like eliminate and so on that that come with the family here.
Not really eliminate. Well, I haven't. We haven't updated eliminate for quite a while. They don't do many other things like it doesn't have the domain argument. It's always assumed everything is complex.
Because we added quantifiers to these other ones.
So it's less important to have eliminate. But you should. Why don't you just make. Eliminate, just be a sugar for those other things. I mean, we shouldn't let it just die. Right?
Right. So it's. I wonder whether it can. We can just do the quantif. So what would happen over the reels? You, you would get a formula back? Because right now it.
Well, I mean it should, it should do what it does now. But if you want to reimplement it by just having a trivial wrapper around something that's in reduce or solve, then why not?
Right. Eliminates. Yeah, yeah, I guess we could, we could just treat it as. So right now it takes a list of equations and I think, I wonder whether it returns. I'm not quite sure whether it returns a list of equations or does it return a boolean combination of equations? Because it would have to return boolean combinations for the real case of equations and inequalities.
Yeah, right.
It couldn't work with the least.
Fine, take a look at it. What about factoring.
13? Three is already done.
Oh yeah, yeah, that was there already.
Okay, what about the horror story of polynomial mod? Because polynomial mod is an el cheapo version of polynomials of a finite fields, right?
It also takes modulus, so it takes modular polynomial. So it's sort of. The functionality was extended in a different direction.
The modulus could be a polynomial, you're saying?
Yes, yes, I think even a list of polynomials.
If I put a polynomial over a finite field into polynomial mod, will it do the right thing?
Okay, so first, first question is, is there a right thing?
Well, yes, it's a look, I know perfectly well. Okay. In a time long ago, far, far away, I was interested in polynomials of the form on that. We can try it here. One plus X. Okay, so I want this over GF2. And what do I do? So, okay, let me take this as an example. I want to take that polynomial over GF2. So I think I would do that normally with polynomial mod. That thing. What do I say? I say modulus arrow two or something. Just two here I think it's just two. Yeah. Okay. All right, so now my alternative strategy would be to take 1 +X. How do I turn that into a polynomial over GF2? If you tell me I've got to do the individual coefficients, I'm not going to be a happy person.
Well, unfortunately. Or use a function that takes an extension option. So factor over extension goes to the field.
Okay. All right. So bottom line is we're going to need this. And it's like the from finite field in, you know, this Isn't really that name from finite field index Isn't really. Right. Because we want to be able to take one plus x and turn it into a polynomial over that field, right? Yeah. So what's the right function to do that? I mean, maybe it's two finite field.
From finite field to find. Yeah, I mean that looks general.
Right. And it's sort of independent from the other functionality. So it wouldn't treat numbers as indices, but rather as, as as numbers embedded in the field.
Fine.
So.
So what does that mean for a prime power field? That means. I don't know what that means. In other words, if I have a number 27 in the field GF 23 squared, what happens to 27?
It becomes 4.
I see, I see. Okay. All right. So then this would be. Okay, so for right now, how would I do this? I'd say finite field two. That's GF2, right? Right. Sub one. And then I say that thing plus.
X to the power of 12 and expand.
Now I'd say plus this times X. Yeah. And then I'd say that thing there. To the 12 and I'd say expand. And I should get that. Now if I say coefficient list here, I think I'm going to get something horrifying. It's a little funky that I get plain zeros, isn't it?
Yeah, yeah, probably. Yeah. The coefficient list just. Just does the structural thing.
Right. So that's probably wrong. Should I put this?
You probably have calculus in algebra somewhere.
Okay, so some stuff with coefficient and coefficient list needs to be figured out. Probably coefficient is going to do the wrong thing. We're going to polynomial of a finite field. Now if I were to take this thing here, percent 13 and add x to the fifth to it. What's that creature?
Right.
So if, if you try to compute it, it will be embedded in the field, but not, not by. By just the plus will not do it.
So if I were to factor this, what would happen if I had a sum here that had different fields for different pieces?
It will not complain automatically. But if you do some factoring that will try to do out arithmetic with those things, it will complain.
Does it complain in a civilized way?
Hopefully it will. It will complain about every, every arithmetic. So it, it will complain about every arithmetic operations that you do.
Okay. All right, so I want to know how to do this. Mod X to the seventh minus one. This thing here, this finite field thing here, mod X to the seventh minus one. How would I do that? Do I do polynomial mod around this?
Yeah, but it Will not work over finite fields. So. Well, let's see what it will do. But I.
Okay, well, so I'm just telling you this should. Things like this should work.
Oh, it actually did work. What did it do?
Well, okay, so let me. Let me do the following. I'm going to do this with a T there. I'm going to do coefficient list comma X. And then I'm going to need the operation that you didn't give me yet. Why was that so unbelievably slow? Okay, so now the operation you didn't give me is the one that goes, which is going to be incredibly messy here because of all those zeros. What would I do if I. If I just were going to hacker ate it hackerrate this? I would just say slash, dot. What would I do to hacker rate it here?
Finite field element goes to its index. So a underscore finite field element goes to. No, no, the other way. So it's ahead of the thing. So a underscore finite field elements goes to a of index.
That's very questionable indeed.
What, what is questionable?
The fact that those are of unequal length.
Ah.
This is a cellular automata, an additive cellular automaton with cyclic boundary conditions. What it's worth very close to a shift register sequence. That reminds me that this puppy should support finite field. Obviously, I don't know exactly how. Well, this one, the feedback polynomial poly. That should be allowed to be a finite field polynomial. That makes sense. Yes. No, maybe. Adam, I have no idea what it is. Okay, go look it up. It's a. It's a very. It's one of the very popular uses of finite fields. Okay. And right now this doesn't support planet fields and it should. It's. I mean, in the end, I bet you're going to need a sparse represent a representation of something like this that doesn't wrap finite field elements around every single element. But maybe that's for the future.
Can we have something like that? Maybe it's still internal.
We do have something like that in an internal context that represents a matrix, although it doesn't have a nice display form to it.
It's kind of like the structured array story.
Yes.
Okay, that's cool. By the way, for your examples, you really should use a smaller field than 23 to the 4 because you really should let people see that these numbers aren't, you know, are reduced numbers, if you get what I'm saying. It's completely unobvious to me. I mean, I have to think for a minute to realize 23 to the 4 is much bigger than any of these numbers, but it's not self evidently obvious. Okay, Okay. What else should we see with finite fields? I, I feel like there needs to be a little bit more, you know, discovery and exploration. For, you know, of what other parts of the system can make use of finite field stuff. I don't know what the right way to do that is.
Yeah, our application. We're looking for those as well because now that this is available to us, we'll be looking for those as well.
Now, I don't want to know what does work with finite fields, thank you very much. I want to know what should work with finite fields. I don't know whether this is even true.
Is GF a real function?
Probably in the finite fields package. Multiplicative order. That's an interesting one. Does that work with finite fields? Yes, it works with your finite field number these, these things here.
Yes.
Okay. Does this make any sense? No. Nope. That's just nonsense. There's a front end crash bug in today's build. Just be careful when you maybe save your notebook that's behind there. Please.
If you do a single tick, it.
Crashes, I think in today's builds. So be careful. So what should I do for my next cell? If I do a single tick, it's going to crash, is that right?
I, I believe so, yeah.
That's today's build. Okay. You were right. So much for that. Well, anyway, I, I meant you could try asking it for it to guess which functions it's seen related to finite fields. That's what I'm really asking for. And I think it has a chance of answering that. Make sense. This is started anyway. Why not ask it, see if it has anything sensible to say. Come on. That's an a.I. great. Yeah. Well, thank you. Thank you, a.I. Shoot. That was not that version. That's also today's version 14. Right. Well, I don't know what that was. I thought it. Who knows? Okay, Let's have a quick look through this. We're kind of out of time though. This all requires some discussion in my view. Sure.
And for example, what's the, the difference between, you know, a Hermitian matrix or a symmetric matrix and a symmetrized array of rank two? And that symmetry.
Yeah. I mean this is blowing up all our canonicalization because this is not equally. Is it equal equal the original matrix or not?
It's. It's definitely equal. Equal. It's not same Q. Yeah.
Is it definitely equal equal?
Yeah, it should be.
If I were to Take this. And I would say normal of that. Okay. And now I would say this. Equal. Equal. Okay.
Right. Just like sparse arrays are equal to lists of this. You know, lists of the same contents.
I'm far from thrilled with the look of this box here. Does that. Do these things mean something? These.
Yes. That. That's a. That. That. That's a. Right, that'. With hermitian matrix. It's a bit funny because. Because matrix plot is a bit funny. Right, But. Right, that's matrix. That's matrix plot of the data. Which basically means it's looking at the real part, I believe, is what matrix plot does by default.
There's a question about matrix plot and complex matrices. Complex plot 3D has a color scheme.
Yeah. We haven't update matrix. Matrix plot. We probably should.
Yeah. Hopefully we don't need a complex matrix plot.
Right.
Hopefully. We just need to make the default for complex numbers be the right thing, in which case this would inherit it. Right, Right.
Yes. It's only calling matrix plot with appropriate options.
Yeah.
I think it needs other updates too. Unfortunately, those can't really be easily tweaked without kind of re implementing them.
So it's a little. It's not a super cheap job, really. It's not just a color scheme.
It's. It's all in C code.
It's 2,000 lines in a file.
But. But it has. But it has some kind of.
I'm just saying that.
Yeah. Okay. You know. Yeah, I think it should get updated. I think this looks.
It's not based on the, you know, the visualization team has a lot of capabilities that we do and put in. This was not written by the visualization team.
Okay. Okay.
So, yeah, it has its, you know, it does what it does. It's not bad, right?
Yeah. Okay. It's probably 30 years old.
No, but it has some years.
Maybe 25.
Yeah, well, I mean, I think what came out with 5:1, maybe 5:0 around there. I don't know exactly.
So matrix Plot was new in six, so 2000. Oh, in six.
Okay. We have prototypes in five, but probably released.
It's really quite modern, less than 20 years old. We've got younger people working at the company. Right.
Array plot was introduced in 5.1. Matrix plot, which is 2004. Matrix plot came in 6 in 2007.
Right. Plot was. Oh, we were using Raster before that for those things. That was horrifying. Yeah. Okay.
I mean, matrixpot has some good features, but we know a lot more that would be useful. So.
Fair enough. Look, this target Structure business. It's a complicated thing.
It gives user control to it and was suggested by you.
Right. But I mean obviously you can put a wrapper around that.
Yeah.
If I took this well for, for.
For. For things that do a. Right. For single matrix constructors. Sure, you can do that. If it's a. A decomposition which may have multiple matrices, then you know, it's not so obvious.
Yeah, right.
And there are examples of late on.
Exactly. But I think decompositions, you know, were long pre association, so to speak and they would have been nicer, you know, and not as totally incomprehensible.
With this.
Right, yeah, agreed.
I mean that's so. So what is done is that for you as an advanced user, of course, you know, it's an upper triangular matrix and when you use that later on to solve, you know, so lu, for instance, it gives you a lower and an upper triangle.
I know that's absolutely horrifying. Right.
But you have to know that as a user. So you later on you call a lower triangular solver. An upper triangular solver.
Exactly. So it should just take it as a. It should be. It should return something which has structured matrices in there so that you can't do the wrong thing.
Exactly. Just so.
I have a feeling we're going to need a newly named LU decomposition because I think, I think that is not a. We can't really do the incompatible change of changing the return value.
Yes. And that's not part of the release because we had to do some discussion on what it should be, etc. Like should be called LU matrices. I don't know what exactly, but it would definitely be a new named for sure.
Yes.
Pretty much more useful than what we have right now. For sure.
I agree. Okay, well let me just. Just take a quick look. Okay. So that's the end versions of the things we saw in the last version.
Yes, exactly. With some updates to the earlier functions to make sure that they are. We've addressed all the issues reported so far. Suggestions.
This is to address the workflow that happens as we give solutions that are infinite sums in active infinite sums.
Yes, It's a bit weird. I mean this is like a power series. It's not. Not completely crazy. Except are we going to have truncate product as well?
Well, we thought about. But I think truncate we don't have that many products coming out that form and then for this One we've got DSolve dissolve value, we've got asymptotic Got lots.
Right. I mean this is basically the Analog of normal of series, of whatever. No.
Series is always finite.
So I see what you're saying.
These ones are explicitly infinite, so. Yeah, it's really.
No, but you can. I mean, the alternative will be to say just like truncate sum comma n would be series, you know, comma n, basically. And then normal of that, like taking. Taking the thing you've got and finding an end term approximation to it.
Yes, but this very. This is completely structural. It's not.
No, I get it, I get it, I get it. Although I don't know quite what. Truncate sum double. You've got a minus infinity one here.
Yeah, so we. Then we document that, what that means. Because you probably want to start close to zero. I mean, that's a matter of, you know, what you'd like to do. But based on use cases we have. So those are the actual use cases.
It says in the. If you go to the reference page, it says what it does.
Yeah, exactly.
But is singly infinite, doubly infinite, etc. Etc.
Okay, so here's a piece of trivia for you all. So I happen to be. When was it a month ago or something? For very, very random reasons, I happen to be in Strasbourg, France. I'm wandering along the street and I look up and there's a plaque on the house that says this was the birthplace of Paul Appel.
Wow.
And I took a picture of it and that's. That's as far as I went. I didn't think it quite, you know, rose to the level of a tweet or anything.
Not quite. I squared equals J squared equals K squared equals I J, K. No, I.
Haven'T been to that bridge. I've never been to Ireland my whole life. The. Okay, well, we've got many things to talk about. Next time we gotta start here and I think we continue where we left off and. Okay, looks. Looks great.
Thank you.
All right, see you all soon. Okay, bye.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






