26 Replies
Helehex
Helehex2mo ago
I made a lot of progress the last couple days, but i still need to push the changes. The plan is to get that done tomorrow, so I'll give a better overview when that happens. (It's essentially a subset of linear algebra with a very nice geometric interpretation) I have the multiplication table actually implemented in my Multivector struct now Theres a few wierd things i've had todo, but hopefully they get worked out with time. I'd also like to improve the initialization of multivectors still I also already added the various conjugates one might find useful
Helehex
Helehex2mo ago
Heres a picture of Cl(6, 0, 1), The first number (6) represents the number of basis vectors that square to 1, the second number (0) represents the number of basis vectors that square to -1, and the last number (1) represents the number of basis vectors that square to 0.
No description
Helehex
Helehex2mo ago
The gaps are where any two basis elements of the algebra, which were both constructed from a 0 basis vector, are being multiplied together. those operations can be masked away to avoid any overhead. I put the zero basis vectors before the others in this example, but they are very easy to switch around if desired. By selecting different parts of the algebra, you can represent geometric objects like points, lines, planes, circles, etc.., which can be multiplied together under various products, while respecting algebraic properties like associativity. If you've ever wanted to multiply two circles together, this is a nice way todo so :] I hear that it's useful for things like spacetime algebras as well. Ok, I just pushed the latest changes.
nole_ksum
nole_ksum2mo ago
looks like a carpet !! :mojo:
Helehex
Helehex2mo ago
It does
Chris Lattner
Chris Lattner2mo ago
nice!
Helehex
Helehex4w ago
I made table generation 2x faster by squashing in one basis vector at a time, instead of appending the whole thing, then sorting and squashing. i'll push it sometime today I could probably get like 100x speedup by switching everything to binary ops, but one step at a time :] Also, i'll probably cache some of the common tables in a file anyways, but it's still nice to have a faster generator
Helehex
Helehex4w ago
256 dimensional algebra
No description
Helehex
Helehex2w ago
I made my nova package a dependency of infrared . (nova is my testing grounds for collection types) This might be temporary, but it allows me to use a nova Table for the geometric product table, which is faster, but also fixes an issue i found with aliased List[List]... I chose to do this instead of extending the utils folder to include more things nova is kind of bloated for this purpose, but it's easier while things are still WIP I realized that this complicates my automated testing, so I'm going to just copy what i need into the project. Dependency on nova was removed, and Multivector now uses ThickVector for it's underlying data storage. Theres a problem with multiplying multivectors when they get past ~16 total unmasked dims: I thought it was because of the @parameter for's exploding the generated code, but i tried removing all the places that would explode, and it still gets killed. On top of that, I also tried using a heap allocation instead of pop.array for ThickVector, in case that was exploding, but it still gets killed.
Helehex
Helehex2w ago
I also made the formatting of mult table a little nicer today, here's cl(4,4):
No description
Helehex
Helehex2w ago
found the culprit, passing sig to mul_mask as an argument instead of a parameter fixes it
Darin Simmons
Darin Simmons2w ago
you ever use Blender?
Helehex
Helehex2w ago
the free 3d modeling software?
Darin Simmons
Darin Simmons2w ago
yep
Helehex
Helehex2w ago
yeah i use it whenever i want to make a 3d model for something unless for 3d printing then i use freecad
Want results from more Discord servers?
Add your server