whitequark changed the topic of #solvespace to: SolveSpace--parametric 2d/3d CAD · latest version 2.2 · http://solvespace.com · code at https://github.com/solvespace/solvespace · logs at https://irclog.whitequark.org/solvespace
_whitelogger has joined #solvespace
<GitHub> [solvespace] whitequark opened issue #131: FindWhichToRemoveToFixJacobian can be very slow https://github.com/solvespace/solvespace/issues/131
<GitHub> [solvespace] Evil-Spirit commented on issue #131: @whitequark, we can limit number of constraints when FindWhichToRemoveToFixJacobian should be performed, if greater, we just report an error without concrete constraints. https://github.com/solvespace/solvespace/issues/131#issuecomment-266369372
<GitHub> [solvespace] Evil-Spirit commented on issue #131: @whitequark, we can limit number of constraints when FindWhichToRemoveToFixJacobian should be performed, if greater, we just report an error without concrete constraints. https://github.com/solvespace/solvespace/issues/131#issuecomment-266369372
<GitHub> [solvespace] whitequark commented on issue #131: @Evil-Spirit is there no faster way than just bruteforce? https://github.com/solvespace/solvespace/issues/131#issuecomment-266370977
<GitHub> [solvespace] Evil-Spirit commented on issue #131: @whitequark, Yes, we can be a little bit faster now (~3 times faster with the current example) if we just rewrite SolveBySubstitution for linear complexity instead of square. I actually done this for NotSolveSpace and this is huge speedup when we have a large amount of h,v,pc. The other two hot functions WriteJacobian and CalculateRand. The first can be performed once and used for many times, and th
<GitHub> [solvespace] Evil-Spirit commented on issue #131: @whitequark, Yes, we can be a little bit faster now (~3 times faster with the current example) if we just rewrite SolveBySubstitution for linear complexity instead of square. I actually done this for NotSolveSpace and this is huge speedup when we have a large amount of h,v,pc. The other two hot functions WriteJacobian and CalculateRank. The first can be performed once and used for many times, and th
<GitHub> [solvespace] whitequark commented on issue #131: @Evil-Spirit OK, this sounds like something useful to be done. For now it is low priority though. https://github.com/solvespace/solvespace/issues/131#issuecomment-266377967
<ohsix> whitequark: notsolvespace?
<whitequark> proprietary solvespace fork that evil-spirit was writing at his previous employer
<ohsix> oic
<GitHub> [solvespace] Evil-Spirit commented on issue #131: @whitequark,... https://github.com/solvespace/solvespace/issues/131#issuecomment-266498693
<GitHub> [solvespace] Evil-Spirit commented on issue #131: @whitequark,... https://github.com/solvespace/solvespace/issues/131#issuecomment-266498693
<GitHub> [solvespace] Contraptionize opened issue #132: Accept comma as decimal separator (enhancement) https://github.com/solvespace/solvespace/issues/132
<GitHub> [solvespace] whitequark commented on issue #132: I don't see how this will work once functions are implemented. E.g.: think of `atan2(1,0)`. https://github.com/solvespace/solvespace/issues/132#issuecomment-266513881
<GitHub> [solvespace] Contraptionize commented on issue #132: Yes, sorry, I have not really looked at the parser code and did not think of comma as argument separator. https://github.com/solvespace/solvespace/issues/132#issuecomment-266517997
<GitHub> [solvespace] whitequark commented on issue #132: Note that I don't reject this so far, l10n is a valid concern. What do other applications do? Is this why Excel uses `;` as a separator? Do other numeric processors just force you to input `,`? https://github.com/solvespace/solvespace/issues/132#issuecomment-266518789
<bofh_> whitequark: is CalculateRank() used for any other purpose than checking if the matrix is full-rank?
<bofh_> because, uh, the latter van be done much more efficiently than the former, especially if we're dealing with square matrices
<bofh_> can*
<whitequark> bofh_: it is not used for any other purpose
<whitequark> like which? (I'm not sure if it's square)
<bofh_> wait, I'm dumb,it's bounded by min(m,n) in the nonsquare case so rank-revealing QR & Gaussian Elimination to triangular form still work
<bofh_> but before I get bogged down in micro-optimizations, uh
<whitequark> (I know some of those words)
<bofh_> is there any way to generate a Hessian from the constraints?
* whitequark opens wikipedia
<bofh_> i.e. the matrix of *second-order* partials
<whitequark> I'm really not qualified to answer that
<whitequark> ping @evil-spirit in that issue perhaps? he understands the math
<bofh_> kk
<bofh_> 'cause if possible, using a quasi-Newton method like BFGS would (almost always) be a dramatic improvement
<whitequark> I think the problem here isn't that solving is slow, it's that figuring out which constraints will fix the sketch if removed is O(n^4)
<bofh_> lmao. so you can just generate all constraints, use that to define an objective function, solve that linear program once (use, like, glpk) & you get back a minimal set of constraints.
<bofh_> I'll poke evil-spirit and write all this on github
<bofh_> I actually have code that does all this that I wrote but it's all Fortran90
<whitequark> wow, nice
<whitequark> that would be great
<cr1901_modern> It would be nice if F2C worked on F90 code
<whitequark> glpk is gpl, right? that would be a problem
<whitequark> i know we can use eigen
<bofh_> you could just use my impl of primal-dual interior point (needs a sparse BLAS lib), or any of a zillion simplex impls on netlib
<bofh_> cr1901_modern: I patched it to accept f90 line continuations & comments which are literally the only things I use not in f77 97% of the time
<bofh_> actual f90 compat would be a ton more work
<bofh_> ...of course you should be able to get a Hessian here, just compute the gradient of the function & take the Jacobian of that.
<cr1901_modern> bofh_: True... I have a (bad) f95 neural net impl that prob will never get ported b/c I used f95 features too heavily